22
33import java .util .ArrayList ;
44import java .util .Arrays ;
5+ import java .util .Collections ;
56import java .util .List ;
7+ import java .util .Set ;
8+ import java .util .stream .Collectors ;
69import org .springframework .core .annotation .AnnotationUtils ;
710import org .springframework .test .context .ContextConfigurationAttributes ;
811import org .springframework .test .context .ContextCustomizer ;
@@ -23,11 +26,12 @@ public class WireMockContextCustomizerFactory implements ContextCustomizerFactor
2326 @ ConfigureWireMock (name = "wiremock" )
2427 private static class DefaultConfigureWireMock {}
2528
26- static ConfigureWireMock [] getConfigureWireMocksOrDefault (final ConfigureWireMock ... value ) {
27- if (value == null || value .length == 0 ) {
29+ static ConfigureWireMock [] getConfigureWireMocksOrDefault (
30+ final ConfigureWireMock ... configureWireMock ) {
31+ if (configureWireMock == null || configureWireMock .length == 0 ) {
2832 return new ConfigureWireMock [] {WireMockContextCustomizerFactory .DEFAULT_CONFIGURE_WIREMOCK };
2933 }
30- return value ;
34+ return configureWireMock ;
3135 }
3236
3337 @ Override
@@ -56,6 +60,7 @@ private static class ConfigureWiremockHolder {
5660
5761 void add (final ConfigureWireMock ... annotations ) {
5862 this .annotations .addAll (Arrays .asList (annotations ));
63+ this .sanityCheckDuplicateNames (this .annotations );
5964 }
6065
6166 void parse (final Class <?> clazz ) {
@@ -65,6 +70,19 @@ void parse(final Class<?> clazz) {
6570 }
6671 }
6772
73+ private void sanityCheckDuplicateNames (final List <ConfigureWireMock > check ) {
74+ final List <String > names = check .stream ().map (it -> it .name ()).toList ();
75+ final Set <String > dublicateNames =
76+ names .stream ()
77+ .filter (it -> Collections .frequency (names , it ) > 1 )
78+ .collect (Collectors .toSet ());
79+ if (!dublicateNames .isEmpty ()) {
80+ throw new IllegalStateException (
81+ "Names of mocks must be unique, found duplicates of: "
82+ + dublicateNames .stream ().sorted ().collect (Collectors .joining ("," )));
83+ }
84+ }
85+
6886 boolean isEmpty () {
6987 return this .annotations .isEmpty ();
7088 }
0 commit comments