20
20
import static org .junit .jupiter .api .Assertions .assertNotNull ;
21
21
22
22
import java .io .File ;
23
- import org .junit .jupiter .api .Test ;
23
+ import java .util .Map ;
24
+ import org .junit .Before ;
25
+ import org .junit .Test ;
24
26
import software .amazon .awssdk .codegen .C2jModels ;
25
27
import software .amazon .awssdk .codegen .IntermediateModelBuilder ;
26
28
import software .amazon .awssdk .codegen .model .config .customization .CustomizationConfig ;
27
29
import software .amazon .awssdk .codegen .model .service .ServiceModel ;
28
30
import software .amazon .awssdk .codegen .model .service .Shape ;
29
31
import software .amazon .awssdk .codegen .utils .ModelLoaderUtils ;
32
+ import software .amazon .awssdk .utils .ImmutableMap ;
30
33
31
34
public class EventStreamSharedEventProcessorTest {
32
35
private static final String RESOURCE_ROOT = "/software/amazon/awssdk/codegen/customization/processors"
33
36
+ "/eventstreamsharedeventprocessor/" ;
34
37
35
- @ Test
36
- public void duplicatesAndRenamesSharedEvent () {
38
+ private ServiceModel serviceModel ;
39
+
40
+ @ Before
41
+ public void setUp () {
37
42
File serviceModelFile =
38
43
new File (EventStreamSharedEventProcessorTest .class .getResource (RESOURCE_ROOT + "service-2.json" ).getFile ());
39
- ServiceModel serviceModel = ModelLoaderUtils .loadModel (ServiceModel .class , serviceModelFile );
40
- File customizationConfigFile =
44
+ serviceModel = ModelLoaderUtils .loadModel (ServiceModel .class , serviceModelFile );
45
+ }
46
+
47
+ @ Test
48
+ public void duplicatesAndRenamesSharedEvent () {
49
+ File customizationConfigFile =
41
50
new File (EventStreamSharedEventProcessorTest .class .getResource (RESOURCE_ROOT + "customization.config" ).getFile ());
42
51
CustomizationConfig config = ModelLoaderUtils .loadModel (CustomizationConfig .class , customizationConfigFile );
43
52
@@ -55,10 +64,6 @@ public void duplicatesAndRenamesSharedEvent() {
55
64
56
65
@ Test
57
66
public void modelWithSharedEvents_raises () {
58
- File serviceModelFile =
59
- new File (EventStreamSharedEventProcessorTest .class .getResource (RESOURCE_ROOT + "service-2.json" ).getFile ());
60
- ServiceModel serviceModel = ModelLoaderUtils .loadModel (ServiceModel .class , serviceModelFile );
61
-
62
67
CustomizationConfig emptyConfig = CustomizationConfig .create ();
63
68
64
69
assertThatThrownBy (() -> new IntermediateModelBuilder (
@@ -67,6 +72,52 @@ public void modelWithSharedEvents_raises() {
67
72
.customizationConfig (emptyConfig )
68
73
.build ()).build ())
69
74
.isInstanceOf (IllegalStateException .class )
70
- .hasMessageContaining ("Event Payload is shared between multiple EventStreams" );
75
+ .hasMessageContaining ("Event shape `Payload` is shared between multiple EventStreams" );
76
+ }
77
+
78
+ @ Test
79
+ public void invalidCustomization_missingShape () {
80
+ Map <String , Map <String , String >> duplicateAndRenameSharedEvents = ImmutableMap .of ("MissingShape" , null );
81
+
82
+ EventStreamSharedEventProcessor processor =
83
+ new EventStreamSharedEventProcessor (duplicateAndRenameSharedEvents );
84
+ assertThatThrownBy (() -> processor .preprocess (serviceModel ))
85
+ .isInstanceOf (IllegalStateException .class )
86
+ .hasMessageContaining ("Cannot find eventstream shape [MissingShape]" );
87
+ }
88
+
89
+ @ Test
90
+ public void invalidCustomization_notEventStream () {
91
+ Map <String , Map <String , String >> duplicateAndRenameSharedEvents = ImmutableMap .of ("Payload" , null );
92
+
93
+ EventStreamSharedEventProcessor processor =
94
+ new EventStreamSharedEventProcessor (duplicateAndRenameSharedEvents );
95
+ assertThatThrownBy (() -> processor .preprocess (serviceModel ))
96
+ .isInstanceOf (IllegalStateException .class )
97
+ .hasMessageContaining ("Error: [Payload] must be an EventStream" );
98
+ }
99
+
100
+ @ Test
101
+ public void invalidCustomization_invalidMember () {
102
+ Map <String , Map <String , String >> duplicateAndRenameSharedEvents = ImmutableMap .of (
103
+ "StreamB" , ImmutableMap .of ("InvalidMember" , "Payload" ));
104
+
105
+ EventStreamSharedEventProcessor processor =
106
+ new EventStreamSharedEventProcessor (duplicateAndRenameSharedEvents );
107
+ assertThatThrownBy (() -> processor .preprocess (serviceModel ))
108
+ .isInstanceOf (IllegalStateException .class )
109
+ .hasMessageContaining ("Cannot find event member [InvalidMember] in the eventstream [StreamB]" );
110
+ }
111
+
112
+ @ Test
113
+ public void invalidCustomization_shapeAlreadyExists () {
114
+ Map <String , Map <String , String >> duplicateAndRenameSharedEvents = ImmutableMap .of (
115
+ "StreamB" , ImmutableMap .of ("Payload" , "Payload" ));
116
+
117
+ EventStreamSharedEventProcessor processor =
118
+ new EventStreamSharedEventProcessor (duplicateAndRenameSharedEvents );
119
+ assertThatThrownBy (() -> processor .preprocess (serviceModel ))
120
+ .isInstanceOf (IllegalStateException .class )
121
+ .hasMessageContaining ("Error: [Payload] is already in the model" );
71
122
}
72
123
}
0 commit comments