Skip to content

Commit 874b204

Browse files
committed
Always add external id auth hash
* External id auth hash should be sent in all players and on_session calls
1 parent 5ad7fae commit 874b204

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/UserState.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ JSONObject generateJsonDiff(UserState newState, boolean isSessionCall) {
240240
sendJson.put("app_id", syncValues.optString("app_id"));
241241
if (syncValues.has("email_auth_hash"))
242242
sendJson.put("email_auth_hash", syncValues.optString("email_auth_hash"));
243+
if (syncValues.has("external_user_id_auth_hash"))
244+
sendJson.put("external_user_id_auth_hash", syncValues.optString("external_user_id_auth_hash"));
243245
} catch (JSONException e) {
244246
e.printStackTrace();
245247
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/MainOneSignalClassRunner.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4174,6 +4174,75 @@ public void shouldSetExternalIdWithAuthHashBeforeRegistration() throws Exception
41744174
assertEquals(mockExternalIdHash, registrationRequest.payload.getString("external_user_id_auth_hash"));
41754175
}
41764176

4177+
@Test
4178+
public void shouldAlwaysSetExternalIdWithAuthHashAAfterRegistration() throws Exception {
4179+
OneSignalInit();
4180+
threadAndTaskWait();
4181+
4182+
String testExternalId = "test_ext_id";
4183+
String mockExternalIdHash = new String(new char[64]).replace('\0', '0');
4184+
4185+
OneSignal.setExternalUserId(testExternalId, mockExternalIdHash);
4186+
threadAndTaskWait();
4187+
4188+
ShadowOneSignalRestClient.Request registrationRequest = ShadowOneSignalRestClient.requests.get(2);
4189+
assertEquals(ShadowOneSignalRestClient.REST_METHOD.PUT, registrationRequest.method);
4190+
assertEquals(testExternalId, registrationRequest.payload.getString("external_user_id"));
4191+
assertEquals(mockExternalIdHash, registrationRequest.payload.getString("external_user_id_auth_hash"));
4192+
4193+
fastColdRestartApp();
4194+
4195+
advanceSystemTimeBy(60);
4196+
OneSignalInit();
4197+
threadAndTaskWait();
4198+
4199+
ShadowOneSignalRestClient.Request registrationRequestAfterColdStart = ShadowOneSignalRestClient.requests.get(4);
4200+
assertEquals(REST_METHOD.POST, registrationRequestAfterColdStart.method);
4201+
assertEquals(mockExternalIdHash, registrationRequestAfterColdStart.payload.getString("external_user_id_auth_hash"));
4202+
}
4203+
4204+
@Test
4205+
public void shouldAlwaysSetExternalIdAndEmailWithAuthHashAAfterRegistration() throws Exception {
4206+
OneSignalInit();
4207+
threadAndTaskWait();
4208+
4209+
String testExternalId = "test_ext_id";
4210+
String mockExternalIdHash = new String(new char[64]).replace('\0', '0');
4211+
4212+
String email = "josh@onesignal.com";
4213+
String mockEmailHash = new String(new char[64]).replace('\0', '0');
4214+
4215+
OneSignal.setExternalUserId(testExternalId, mockExternalIdHash);
4216+
OneSignal.setEmail(email, mockEmailHash);
4217+
threadAndTaskWait();
4218+
4219+
ShadowOneSignalRestClient.Request registrationRequest = ShadowOneSignalRestClient.requests.get(2);
4220+
assertEquals(ShadowOneSignalRestClient.REST_METHOD.PUT, registrationRequest.method);
4221+
assertEquals(testExternalId, registrationRequest.payload.getString("external_user_id"));
4222+
assertEquals(mockExternalIdHash, registrationRequest.payload.getString("external_user_id_auth_hash"));
4223+
4224+
ShadowOneSignalRestClient.Request emailPost = ShadowOneSignalRestClient.requests.get(3);
4225+
assertEquals(REST_METHOD.POST, emailPost.method);
4226+
assertEquals(email, emailPost.payload.getString("identifier"));
4227+
assertEquals(11, emailPost.payload.getInt("device_type"));
4228+
assertEquals(mockEmailHash, emailPost.payload.getString("email_auth_hash"));
4229+
4230+
fastColdRestartApp();
4231+
4232+
advanceSystemTimeBy(60);
4233+
OneSignalInit();
4234+
threadAndTaskWait();
4235+
4236+
ShadowOneSignalRestClient.Request registrationRequestAfterColdStart = ShadowOneSignalRestClient.requests.get(6);
4237+
assertEquals(REST_METHOD.POST, registrationRequestAfterColdStart.method);
4238+
assertEquals(mockExternalIdHash, registrationRequestAfterColdStart.payload.getString("external_user_id_auth_hash"));
4239+
4240+
ShadowOneSignalRestClient.Request emailPostAfterColdStart = ShadowOneSignalRestClient.requests.get(7);
4241+
assertEquals(REST_METHOD.POST, emailPostAfterColdStart.method);
4242+
assertEquals(11, emailPostAfterColdStart.payload.getInt("device_type"));
4243+
assertEquals(mockEmailHash, emailPostAfterColdStart.payload.getString("email_auth_hash"));
4244+
}
4245+
41774246
@Test
41784247
public void shouldRemoveExternalUserId() throws Exception {
41794248
OneSignal.setExternalUserId("test_ext_id");

0 commit comments

Comments
 (0)