15
15
*/
16
16
package io .gravitee .plugin .annotation .processor ;
17
17
18
- import static org .assertj .core .api .AssertionsForClassTypes .assertThat ;
18
+ import static org .assertj .core .api .Assertions .assertThat ;
19
19
import static org .mockito .ArgumentMatchers .any ;
20
20
import static org .mockito .ArgumentMatchers .anyString ;
21
+ import static org .mockito .Mockito .spy ;
21
22
import static org .mockito .Mockito .times ;
22
23
import static org .mockito .Mockito .verify ;
23
24
import static org .mockito .Mockito .when ;
24
25
25
- import io .gravitee .gateway .reactive .api .ExecutionFailure ;
26
26
import io .gravitee .gateway .reactive .api .context .ExecutionContext ;
27
27
import io .gravitee .plugin .annotation .processor .result .SecurityProtocol ;
28
28
import io .gravitee .plugin .annotation .processor .result .TestConfiguration ;
29
29
import io .gravitee .plugin .annotation .processor .result .TestConfigurationEvaluator ;
30
- import io .reactivex .rxjava3 .core .Completable ;
31
30
import io .reactivex .rxjava3 .core .Maybe ;
32
31
import io .reactivex .rxjava3 .observers .TestObserver ;
33
- import java .util .List ;
34
- import java .util .Set ;
35
32
import org .junit .Before ;
36
33
import org .junit .Test ;
37
34
import org .junit .runner .RunWith ;
38
35
import org .mockito .Mock ;
39
36
import org .mockito .junit .MockitoJUnitRunner ;
37
+ import java .util .Map ;
38
+ import java .util .Set ;
40
39
41
40
/**
42
41
* @author Remi Baptiste (remi.baptiste at graviteesource.com)
@@ -47,9 +46,6 @@ public class ConfigurationEvaluatorGeneratedTest {
47
46
48
47
TestConfigurationEvaluator evaluator ;
49
48
50
- @ Mock
51
- ExecutionContext context ;
52
-
53
49
@ Mock
54
50
ExecutionContext .TemplateEngine templateEngine ;
55
51
@@ -59,20 +55,12 @@ public void before() {
59
55
configuration .getConsumer ().setEnabled (true );
60
56
configuration .getConsumer ().setAutoOffsetReset ("none" );
61
57
evaluator = new TestConfigurationEvaluator (configuration );
62
-
63
- when (context .getTemplateEngine ()).thenReturn (templateEngine );
64
-
65
- when (context .interruptWith (any ()))
66
- .thenAnswer (invocation ->
67
- Completable .defer (() ->
68
- Completable .error (new IllegalStateException (((ExecutionFailure ) invocation .getArgument (0 )).message ()))
69
- )
70
- );
71
58
}
72
59
73
60
@ Test
74
61
public void should_interrupt_with_error_on_validation () {
75
62
when (templateEngine .eval ("none" , String .class )).thenReturn (Maybe .just ("result" ));
63
+ var context = new ExecutionContext (templateEngine );
76
64
77
65
TestObserver <TestConfiguration > testObserver = evaluator .eval (context ).test ();
78
66
@@ -86,40 +74,65 @@ public void should_interrupt_with_error_on_validation() {
86
74
@ Test
87
75
public void should_return_evaluated_configuration () {
88
76
when (templateEngine .eval ("none" , String .class )).thenReturn (Maybe .just ("latest" ));
89
- when (context .getAttribute ("gravitee.attributes.endpoint.test.protocol" )).thenReturn ("SSL" );
90
- when (context .getAttribute ("gravitee.attributes.endpoint.test.consumer.topics" )).thenReturn ("topic1,topic2" );
91
- when (context .getAttributeAsList ("gravitee.attributes.endpoint.test.consumer.topics" )).thenReturn (List .of ("topic1" , "topic2" ));
92
-
93
- TestObserver <TestConfiguration > testObserver = evaluator .eval (context ).test ();
94
-
95
- testObserver .assertComplete ();
96
-
97
- testObserver .assertValue (testConfiguration -> {
98
- assertThat (testConfiguration .getConsumer ().getAutoOffsetReset ()).isEqualTo ("latest" );
99
- assertThat (testConfiguration .getProtocol ()).isEqualTo (SecurityProtocol .SSL );
100
- assertThat (testConfiguration .getConsumer ().getTopics ()).isEqualTo (Set .of ("topic1" , "topic2" ));
101
- return true ;
102
- });
77
+ var context = new ExecutionContext (
78
+ templateEngine ,
79
+ Map .ofEntries (
80
+ Map .entry ("gravitee.attributes.endpoint.test.protocol" , "SSL" ),
81
+ Map .entry ("gravitee.attributes.endpoint.test.consumer.topics" , "topic1,topic2" )
82
+ )
83
+ );
84
+
85
+ evaluator
86
+ .eval (context )
87
+ .test ()
88
+ .assertComplete ()
89
+ .assertValue (testConfiguration -> {
90
+ assertThat (testConfiguration .getConsumer ().getAutoOffsetReset ()).isEqualTo ("latest" );
91
+ assertThat (testConfiguration .getProtocol ()).isEqualTo (SecurityProtocol .SSL );
92
+ assertThat (testConfiguration .getConsumer ().getTopics ()).isEqualTo (Set .of ("topic1" , "topic2" ));
93
+ return true ;
94
+ });
95
+ }
103
96
104
- verify (context ).getAttributeAsList ("gravitee.attributes.endpoint.test.consumer.topics" );
105
- verify (context ).setInternalAttribute (anyString (), any (TestConfiguration .class ));
97
+ @ Test
98
+ public void should_cache_evaluated_configuration () {
99
+ when (templateEngine .eval ("none" , String .class )).thenReturn (Maybe .just ("latest" ));
100
+ var context = new ExecutionContext (
101
+ templateEngine ,
102
+ Map .ofEntries (
103
+ Map .entry ("gravitee.attributes.endpoint.test.protocol" , "SSL" ),
104
+ Map .entry ("gravitee.attributes.endpoint.test.consumer.topics" , "topic1,topic2" )
105
+ )
106
+ );
107
+ evaluator
108
+ .eval (context )
109
+ .test ()
110
+ .assertComplete ()
111
+ .assertValue (testConfiguration -> {
112
+ assertThat (testConfiguration .getConsumer ().getAutoOffsetReset ()).isEqualTo ("latest" );
113
+ assertThat (testConfiguration .getProtocol ()).isEqualTo (SecurityProtocol .SSL );
114
+ assertThat (testConfiguration .getConsumer ().getTopics ()).isEqualTo (Set .of ("topic1" , "topic2" ));
115
+
116
+ assertThat (context .getInternalAttributes ().values ()).hasSize (1 ).containsExactly (testConfiguration );
117
+ return true ;
118
+ });
106
119
}
107
120
108
121
@ Test
109
122
public void should_return_evaluated_configuration_from_internal_attribute () {
110
- TestConfiguration configuration = new TestConfiguration ( );
111
- configuration . getConsumer (). setAutoOffsetReset ( "earliest" );
112
- when (context .getInternalAttribute (anyString ())).thenReturn (configuration );
113
-
114
- TestObserver < TestConfiguration > testObserver = evaluator . eval ( context ). test ();
115
-
116
- testObserver . assertComplete ();
117
-
118
- testObserver .assertValue (testConfiguration -> {
119
- assertThat (testConfiguration . getConsumer (). getAutoOffsetReset ()). isEqualTo ( "earliest" );
120
- return true ;
121
- });
122
-
123
- verify (context , times (0 )).setInternalAttribute (anyString (), any (TestConfiguration .class ));
123
+ var spiedContext = spy ( new ExecutionContext () );
124
+ TestConfiguration expectedConfiguration = new TestConfiguration ( );
125
+ when (spiedContext .getInternalAttribute (anyString ())).thenReturn (expectedConfiguration );
126
+
127
+ evaluator
128
+ . eval ( spiedContext )
129
+ . test ()
130
+ . assertComplete ()
131
+ .assertValue (testConfiguration -> {
132
+ assertThat (testConfiguration ). isSameAs ( expectedConfiguration );
133
+ return true ;
134
+ });
135
+
136
+ verify (spiedContext , times (0 )).setInternalAttribute (anyString (), any (TestConfiguration .class ));
124
137
}
125
138
}
0 commit comments