@@ -122,7 +122,7 @@ func TestEventHandling(t *testing.T) {
122
122
123
123
svcMock := mock .NewMockIService (ctrl )
124
124
svcMock .EXPECT ().EventChannel ().Return (customChan ).AnyTimes ()
125
- svcMock .EXPECT ().Init ().AnyTimes ( )
125
+ svcMock .EXPECT ().Init ().Times ( 1 )
126
126
127
127
provider := NewProvider ()
128
128
provider .service = svcMock
@@ -174,5 +174,44 @@ func TestEventHandling(t *testing.T) {
174
174
if provider .Status () != of .ErrorState {
175
175
t .Errorf ("expected status to be error, but got %v" , provider .Status ())
176
176
}
177
+ }
178
+
179
+ func TestInitializeOnlyOnce (t * testing.T ) {
180
+ // given
181
+ ctrl := gomock .NewController (t )
182
+ defer ctrl .Finish ()
183
+
184
+ eventChan := make (chan of.Event )
185
+
186
+ svcMock := mock .NewMockIService (ctrl )
187
+ svcMock .EXPECT ().Init ().Times (1 )
188
+ svcMock .EXPECT ().EventChannel ().Return (eventChan ).Times (1 )
189
+ svcMock .EXPECT ().Shutdown ().Times (1 )
190
+
191
+ provider := NewProvider ()
192
+ provider .service = svcMock
193
+
194
+ // make service ready with events
195
+ go func () {
196
+ eventChan <- of.Event {
197
+ ProviderName : "mock provider" ,
198
+ EventType : of .ProviderReady ,
199
+ }
200
+ }()
201
+
202
+ // multiple init invokes
203
+ _ = provider .Init (of.EvaluationContext {})
204
+ _ = provider .Init (of.EvaluationContext {})
205
+
206
+ if ! provider .initialized {
207
+ t .Errorf ("expected provider to be ready, but got not ready" )
208
+ }
209
+
210
+ // shutdown should make provider uninitialized
211
+ provider .Shutdown ()
212
+
213
+ if provider .initialized {
214
+ t .Errorf ("expected provider to be not ready, but got ready" )
215
+ }
177
216
178
217
}
0 commit comments