@Test public void testInitializeUserId() { // the userId passed to initialize should override any existing values String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putString(Constants.PREFKEY_USER_ID, "oldestUserId").commit(); DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); dbHelper.insertOrReplaceKeyValue(AmplitudeClient.USER_ID_KEY, "oldUserId"); String userId = "newUserId"; amplitude.initialize(context, apiKey, userId); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); // Test that the user id is set. assertEquals(userId, amplitude.userId); assertEquals(userId, dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); // Test that events are logged. RecordedRequest request = sendEvent(amplitude, "init_test_event", null); assertNotNull(request); // verified shared prefs not deleted assertEquals(prefs.getString(Constants.PREFKEY_USER_ID, null), "oldestUserId"); }
@Test public void testSkipSharedPrefsToDb() { DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); dbHelper.insertOrReplaceKeyValue(AmplitudeClient.DEVICE_ID_KEY, "testDeviceId"); dbHelper.insertOrReplaceKeyLongValue(AmplitudeClient.PREVIOUS_SESSION_ID_KEY, 1000L); dbHelper.insertOrReplaceKeyLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY, 2000L); assertNull(dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_IDENTIFY_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY)); String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putString(Constants.PREFKEY_DEVICE_ID, "otherDeviceId").commit(); prefs.edit().putString(Constants.PREFKEY_USER_ID, "testUserId").commit(); prefs.edit().putBoolean(Constants.PREFKEY_OPT_OUT, true).commit(); prefs.edit().putLong(Constants.PREFKEY_LAST_IDENTIFY_ID, 3000L).commit(); amplitude.initialize(context, apiKey); ShadowLooper looper = Shadows.shadowOf(amplitude.logThread.getLooper()); looper.runOneTask(); looper.runToEndOfTasks(); assertEquals(dbHelper.getValue(AmplitudeClient.DEVICE_ID_KEY), "testDeviceId"); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.PREVIOUS_SESSION_ID_KEY), 1000L); assertEquals((long) dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_TIME_KEY), 2000L); assertNull(dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_EVENT_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.LAST_IDENTIFY_ID_KEY)); assertNull(dbHelper.getLongValue(AmplitudeClient.OPT_OUT_KEY)); assertEquals(prefs.getString(Constants.PREFKEY_DEVICE_ID, null), "otherDeviceId"); assertEquals(prefs.getString(Constants.PREFKEY_USER_ID, null), "testUserId"); assertTrue(prefs.getBoolean(Constants.PREFKEY_OPT_OUT, false)); assertEquals(prefs.getLong(Constants.PREFKEY_LAST_IDENTIFY_ID, -1), 3000L); // after upgrade, pref values still there since they weren't deleted assertEquals(amplitude.deviceId, "testDeviceId"); assertEquals(amplitude.previousSessionId, 1000L); assertEquals(amplitude.lastEventTime, 2000L); assertNull(amplitude.userId); }
@Test public void testInitializeUserIdFromSharedPrefs() { String userId = "testUserId"; String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putString(Constants.PREFKEY_USER_ID, userId).commit(); DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); assertNull(dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); amplitude.initialize(context, apiKey); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); // Test that the user id is set. assertEquals(amplitude.userId, userId); assertEquals(userId, dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); // verify shared prefs deleted assertNull(prefs.getString(Constants.PREFKEY_USER_ID, null)); }
@Test public void testInitializeUserIdFromDb() { // since user id already exists in database, ignore old value in shared prefs String userId = "testUserId"; String sourceName = Constants.PACKAGE_NAME + "." + context.getPackageName(); SharedPreferences prefs = context.getSharedPreferences(sourceName, Context.MODE_PRIVATE); prefs.edit().putString(Constants.PREFKEY_USER_ID, "oldUserId").commit(); DatabaseHelper dbHelper = DatabaseHelper.getDatabaseHelper(context); dbHelper.insertOrReplaceKeyValue(AmplitudeClient.USER_ID_KEY, userId); amplitude.initialize(context, apiKey); Shadows.shadowOf(amplitude.logThread.getLooper()).runOneTask(); // Test that the user id is set. assertEquals(amplitude.userId, userId); assertEquals(userId, dbHelper.getValue(AmplitudeClient.USER_ID_KEY)); // verify that shared prefs not deleted assertEquals("oldUserId", prefs.getString(Constants.PREFKEY_USER_ID, null)); }