1
1
/****************************************************************************
2
- * Copyright 2019-2020,2022 Optimizely, Inc. and contributors *
2
+ * Copyright 2019-2020,2022-2023 Optimizely, Inc. and contributors *
3
3
* *
4
4
* Licensed under the Apache License, Version 2.0 (the "License"); *
5
5
* you may not use this file except in compliance with the License. *
@@ -205,12 +205,29 @@ func (m *MockODPManager) Update(apiKey, apiHost string, segmentsToCheck []string
205
205
m .Called (apiKey , apiHost , segmentsToCheck )
206
206
}
207
207
208
+ func TestSendODPEventWhenSDKNotReady (t * testing.T ) {
209
+ factory := OptimizelyFactory {SDKKey : "121" }
210
+ client , _ := factory .Client ()
211
+ err := client .SendOdpEvent ("123" , "456" , map [string ]string {
212
+ "abc" : "123" ,
213
+ }, map [string ]interface {}{
214
+ "abc" : nil ,
215
+ "idempotence_id" : 234 ,
216
+ "data_source_type" : "456" ,
217
+ "data_source" : true ,
218
+ "data_source_version" : 6.78 ,
219
+ })
220
+ assert .Error (t , err )
221
+ }
222
+
208
223
func TestSendODPEventWhenODPDisabled (t * testing.T ) {
209
224
factory := OptimizelyFactory {SDKKey : "1212" }
210
225
var segmentsCacheSize = 1
211
226
var segmentsCacheTimeout = 1 * time .Second
212
227
var disableOdp = true
213
228
optimizelyClient , err := factory .Client (WithSegmentsCacheSize (segmentsCacheSize ), WithSegmentsCacheTimeout (segmentsCacheTimeout ), WithOdpDisabled (disableOdp ))
229
+ optimizelyClient .ConfigManager = getMockConfigManager ()
230
+
214
231
assert .NoError (t , err )
215
232
err = optimizelyClient .SendOdpEvent ("123" , "456" , map [string ]string {
216
233
"abc" : "123" ,
@@ -221,7 +238,7 @@ func TestSendODPEventWhenODPDisabled(t *testing.T) {
221
238
"data_source" : true ,
222
239
"data_source_version" : 6.78 ,
223
240
})
224
- assert .Error ( t , err )
241
+ assert .Equal ( t , errors . New ( pkgOdpUtils . OdpNotEnabled ) , err )
225
242
}
226
243
227
244
func TestSendODPEventEmptyType (t * testing.T ) {
@@ -240,7 +257,8 @@ func TestSendODPEventEmptyType(t *testing.T) {
240
257
mockOdpManager := & MockODPManager {}
241
258
mockOdpManager .On ("SendOdpEvent" , eventType , action , identifiers , data ).Return (nil )
242
259
optimizelyClient := OptimizelyClient {
243
- OdpManager : mockOdpManager ,
260
+ OdpManager : mockOdpManager ,
261
+ ConfigManager : getMockConfigManager (),
244
262
}
245
263
err := optimizelyClient .SendOdpEvent ("" , action , identifiers , data )
246
264
assert .NoError (t , err )
@@ -258,10 +276,11 @@ func TestSendODPEventEmptyIdentifiers(t *testing.T) {
258
276
"data_source_version" : 6.78 ,
259
277
}
260
278
optimizelyClient := OptimizelyClient {
261
- logger : logging .GetLogger ("" , "" ),
279
+ logger : logging .GetLogger ("" , "" ),
280
+ ConfigManager : getMockConfigManager (),
262
281
}
263
282
err := optimizelyClient .SendOdpEvent ("" , action , identifiers , data )
264
- assert .Error ( t , err )
283
+ assert .Equal ( t , errors . New ( "ODP events must have at least one key-value pair in identifiers" ) , err )
265
284
}
266
285
267
286
func TestSendODPEventNilIdentifiers (t * testing.T ) {
@@ -274,17 +293,19 @@ func TestSendODPEventNilIdentifiers(t *testing.T) {
274
293
"data_source_version" : 6.78 ,
275
294
}
276
295
optimizelyClient := OptimizelyClient {
277
- logger : logging .GetLogger ("" , "" ),
296
+ logger : logging .GetLogger ("" , "" ),
297
+ ConfigManager : getMockConfigManager (),
278
298
}
279
299
err := optimizelyClient .SendOdpEvent ("" , action , nil , data )
280
- assert .Error ( t , err )
300
+ assert .Equal ( t , errors . New ( "ODP events must have at least one key-value pair in identifiers" ) , err )
281
301
}
282
302
283
303
func TestSendODPEvent (t * testing.T ) {
284
304
mockOdpManager := & MockODPManager {}
285
305
mockOdpManager .On ("SendOdpEvent" , "123" , "" , map [string ]string {"identifier" : "123" }, mock .Anything ).Return (nil )
286
306
optimizelyClient := OptimizelyClient {
287
- OdpManager : mockOdpManager ,
307
+ OdpManager : mockOdpManager ,
308
+ ConfigManager : getMockConfigManager (),
288
309
}
289
310
err := optimizelyClient .SendOdpEvent ("123" , "" , map [string ]string {"identifier" : "123" }, nil )
290
311
assert .NoError (t , err )
@@ -2124,6 +2145,13 @@ func getMockConfig(featureKey string, variableKey string, feature entities.Featu
2124
2145
return mockConfig
2125
2146
}
2126
2147
2148
+ func getMockConfigManager () * MockProjectConfigManager {
2149
+ mockConfig := new (MockProjectConfig )
2150
+ mockConfigManager := new (MockProjectConfigManager )
2151
+ mockConfigManager .On ("GetConfig" ).Return (mockConfig , nil )
2152
+ return mockConfigManager
2153
+ }
2154
+
2127
2155
func getTestFeature (featureKey string , experiment entities.Experiment ) entities.Feature {
2128
2156
return entities.Feature {
2129
2157
ID : "22222" ,
0 commit comments