Skip to content

Commit 49b754c

Browse files
[FSSDK-8943] fix: make odp event identifiers required (#364)
* make odp event identifiers required
1 parent 27b2772 commit 49b754c

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

pkg/client/client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,12 @@ func (o *OptimizelyClient) SendOdpEvent(eventType, action string, identifiers ma
310310
if eventType == "" {
311311
eventType = pkgOdpUtils.OdpEventType
312312
}
313+
314+
if len(identifiers) == 0 {
315+
o.logger.Error("ODP events must have at least one key-value pair in identifiers", err)
316+
return false
317+
}
318+
313319
return o.OdpManager.SendOdpEvent(eventType, action, identifiers, data)
314320
}
315321

pkg/client/client_test.go

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,46 @@ func TestSendODPEventEmptyType(t *testing.T) {
243243
mockOdpManager.AssertExpectations(t)
244244
}
245245

246+
func TestSendODPEventEmptyIdentifiers(t *testing.T) {
247+
action := "456"
248+
identifiers := map[string]string{}
249+
data := map[string]interface{}{
250+
"abc": nil,
251+
"idempotence_id": 234,
252+
"data_source_type": "456",
253+
"data_source": true,
254+
"data_source_version": 6.78,
255+
}
256+
optimizelyClient := OptimizelyClient{
257+
logger: logging.GetLogger("", ""),
258+
}
259+
success := optimizelyClient.SendOdpEvent("", action, identifiers, data)
260+
assert.False(t, success)
261+
}
262+
263+
func TestSendODPEventNilIdentifiers(t *testing.T) {
264+
action := "456"
265+
data := map[string]interface{}{
266+
"abc": nil,
267+
"idempotence_id": 234,
268+
"data_source_type": "456",
269+
"data_source": true,
270+
"data_source_version": 6.78,
271+
}
272+
optimizelyClient := OptimizelyClient{
273+
logger: logging.GetLogger("", ""),
274+
}
275+
success := optimizelyClient.SendOdpEvent("", action, nil, data)
276+
assert.False(t, success)
277+
}
278+
246279
func TestSendODPEvent(t *testing.T) {
247280
mockOdpManager := &MockODPManager{}
248-
mockOdpManager.On("SendOdpEvent", "123", "", mock.Anything, mock.Anything).Return(true)
281+
mockOdpManager.On("SendOdpEvent", "123", "", map[string]string{"identifier": "123"}, mock.Anything).Return(true)
249282
optimizelyClient := OptimizelyClient{
250283
OdpManager: mockOdpManager,
251284
}
252-
success := optimizelyClient.SendOdpEvent("123", "", nil, nil)
285+
success := optimizelyClient.SendOdpEvent("123", "", map[string]string{"identifier": "123"}, nil)
253286
assert.True(t, success)
254287
mockOdpManager.AssertExpectations(t)
255288
}

0 commit comments

Comments
 (0)