Loading app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ class PlayStoreRepository @Inject constructor( getAppDetailsHelper().getAppByPackageName(packageNames) } if (!isEmulator() && appDetails.all { it.versionCode == 0L } && isAnonymousUser()) { if (!isEmulator() && appDetails.all { it.versionCode == 0L }) { // Google Play returns limited result ( i.e. version code being 0) with a stale token, // so we need to refresh authentication to get a new token. Timber.i("Version code is 0.") Loading app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt +32 −1 Original line number Diff line number Diff line Loading @@ -440,15 +440,46 @@ class PlayStoreRepositoryTest { } @Test fun `getAppsDetails does not refresh auth for non-anonymous user when all version codes are zero`() = runTest { fun `getAppsDetails refreshes auth for non-anonymous user when all version codes are zero`() = runTest { val authData = AuthData(email = "user@gmail.com", isAnonymous = false) val staleApps = listOf(App(packageName = "pkg.test", versionCode = 0)) val refreshedApps = listOf(App(packageName = "pkg.test", versionCode = 5)) val playStoreAuthManager = mock<PlayStoreAuthManager>() val storeAuthCoordinator = mock<StoreAuthCoordinator>() val playStoreAuthStore = createPlayStoreAuthStore(authData) repository = createRepository(playStoreAuthManager, playStoreAuthStore, storeAuthCoordinator) whenever(playStoreAuthManager.getGPlayAuthOrThrow()).thenReturn(authData) whenever(storeAuthCoordinator.fetchAuthObjects(listOf(StoreType.PLAY_STORE))) .thenReturn(emptyList()) every { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) } returns staleApps andThen refreshedApps val result = repository.getAppsDetails(listOf("pkg.test")) assertThat(result).hasSize(1) assertThat(result.first().package_name).isEqualTo("pkg.test") mockitoVerify(storeAuthCoordinator).fetchAuthObjects(listOf(StoreType.PLAY_STORE)) verify(exactly = 2) { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) } } @Test fun `getAppsDetails does not refresh auth on emulator when all version codes are zero`() = runTest { val authData = AuthData(email = "user@gmail.com", isAnonymous = false) val staleApps = listOf(App(packageName = "pkg.test", versionCode = 0)) val playStoreAuthManager = mock<PlayStoreAuthManager>() val storeAuthCoordinator = mock<StoreAuthCoordinator>() every { SystemInfoProvider.getSystemProperty("ro.boot.qemu") } returns "1" repository = createRepository( playStoreAuthManager = playStoreAuthManager, storeAuthCoordinator = storeAuthCoordinator ) whenever(playStoreAuthManager.getGPlayAuthOrThrow()).thenReturn(authData) every { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) Loading Loading
app/src/main/java/foundation/e/apps/data/playstore/PlayStoreRepository.kt +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ class PlayStoreRepository @Inject constructor( getAppDetailsHelper().getAppByPackageName(packageNames) } if (!isEmulator() && appDetails.all { it.versionCode == 0L } && isAnonymousUser()) { if (!isEmulator() && appDetails.all { it.versionCode == 0L }) { // Google Play returns limited result ( i.e. version code being 0) with a stale token, // so we need to refresh authentication to get a new token. Timber.i("Version code is 0.") Loading
app/src/test/java/foundation/e/apps/data/playstore/PlayStoreRepositoryTest.kt +32 −1 Original line number Diff line number Diff line Loading @@ -440,15 +440,46 @@ class PlayStoreRepositoryTest { } @Test fun `getAppsDetails does not refresh auth for non-anonymous user when all version codes are zero`() = runTest { fun `getAppsDetails refreshes auth for non-anonymous user when all version codes are zero`() = runTest { val authData = AuthData(email = "user@gmail.com", isAnonymous = false) val staleApps = listOf(App(packageName = "pkg.test", versionCode = 0)) val refreshedApps = listOf(App(packageName = "pkg.test", versionCode = 5)) val playStoreAuthManager = mock<PlayStoreAuthManager>() val storeAuthCoordinator = mock<StoreAuthCoordinator>() val playStoreAuthStore = createPlayStoreAuthStore(authData) repository = createRepository(playStoreAuthManager, playStoreAuthStore, storeAuthCoordinator) whenever(playStoreAuthManager.getGPlayAuthOrThrow()).thenReturn(authData) whenever(storeAuthCoordinator.fetchAuthObjects(listOf(StoreType.PLAY_STORE))) .thenReturn(emptyList()) every { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) } returns staleApps andThen refreshedApps val result = repository.getAppsDetails(listOf("pkg.test")) assertThat(result).hasSize(1) assertThat(result.first().package_name).isEqualTo("pkg.test") mockitoVerify(storeAuthCoordinator).fetchAuthObjects(listOf(StoreType.PLAY_STORE)) verify(exactly = 2) { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) } } @Test fun `getAppsDetails does not refresh auth on emulator when all version codes are zero`() = runTest { val authData = AuthData(email = "user@gmail.com", isAnonymous = false) val staleApps = listOf(App(packageName = "pkg.test", versionCode = 0)) val playStoreAuthManager = mock<PlayStoreAuthManager>() val storeAuthCoordinator = mock<StoreAuthCoordinator>() every { SystemInfoProvider.getSystemProperty("ro.boot.qemu") } returns "1" repository = createRepository( playStoreAuthManager = playStoreAuthManager, storeAuthCoordinator = storeAuthCoordinator ) whenever(playStoreAuthManager.getGPlayAuthOrThrow()).thenReturn(authData) every { anyConstructed<AppDetailsHelper>().getAppByPackageName(listOf("pkg.test")) Loading