Skip to content

Commit 9329a26

Browse files
authored
fix: Delete events on an invalid api key response. (#211)
1 parent c8c13fc commit 9329a26

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

Sources/Amplitude/Utilities/PersistentStorageResponseHandler.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@ class PersistentStorageResponseHandler: ResponseHandler {
4545
return
4646
}
4747

48-
if events.count == 1 {
49-
let error = data["error"] as? String ?? ""
48+
let error = data["error"] as? String ?? ""
49+
50+
let isInvalidApiKey = error == "Invalid API key: \(configuration.apiKey)"
51+
if events.count == 1 || isInvalidApiKey {
5052
triggerEventsCallback(
5153
events: events,
5254
code: HttpClient.HttpStatus.BAD_REQUEST.rawValue,
@@ -81,7 +83,6 @@ class PersistentStorageResponseHandler: ResponseHandler {
8183
}
8284
}
8385

84-
let error = data["error"] as? String ?? ""
8586
triggerEventsCallback(events: eventsToDrop, code: HttpClient.HttpStatus.BAD_REQUEST.rawValue, message: error)
8687

8788
eventsToRetry.forEach { event in

Tests/AmplitudeTests/Utilities/PersistentStorageResponseHandlerTests.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,31 @@ final class PersistentStorageResponseHandlerTests: XCTestCase {
129129
"removeEventCallback(insertId: e3e4488d-6877-4775-ae88-344df7ccd5d8)"
130130
)
131131
}
132+
133+
func testInvalidAPIKey() {
134+
// 2 valid events
135+
let eventsString = """
136+
[
137+
{"event_type":"valid-event","insert_id":"1621D025-A754-42EB-9305-307F36217C78","user_id":"test-user"},
138+
{"event_type":"valid-event","insert_id":"AE7550E1-C8F0-4583-81D3-0561830A09DD","user_id":"test-user"},
139+
]
140+
"""
141+
142+
let fakePersistentStorage = FakePersistentStorage(storagePrefix: "storage",
143+
logger: logger,
144+
diagonostics: diagonostics)
145+
let handler = PersistentStorageResponseHandler(
146+
configuration: configuration,
147+
storage: fakePersistentStorage,
148+
eventPipeline: eventPipeline,
149+
eventBlock: eventBlock,
150+
eventsString: eventsString
151+
)
152+
153+
handler.handleBadRequestResponse(data: ["error": "Invalid API key: \(configuration.apiKey)"])
154+
XCTAssertEqual(
155+
fakePersistentStorage.haveBeenCalledWith[0],
156+
"remove(eventBlock: \(eventBlock.absoluteURL))"
157+
)
158+
}
132159
}

0 commit comments

Comments
 (0)