diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0a66f305ef8..61fdc6582ea 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -92,13 +92,18 @@ # All domain and utility-specific shared test infrastructure. /testing/src/main/java/org/oppia/android/testing/FakeAnalyticsEventLogger.kt @oppia/android-app-infrastructure-reviewers +/testing/src/main/java/org/oppia/android/testing/FakeAuthenticationController.kt @oppia/android-app-infrastructure-reviewers /testing/src/main/java/org/oppia/android/testing/FakeExceptionLogger.kt @oppia/android-app-infrastructure-reviewers +/testing/src/main/java/org/oppia/android/testing/FakeFirestoreEventLogger.kt @oppia/android-app-infrastructure-reviewers /testing/src/main/java/org/oppia/android/testing/FakePerformanceMetricAssessor.kt @oppia/android-app-infrastructure-reviewers /testing/src/main/java/org/oppia/android/testing/FakePerformanceMetricsEventLogger.kt @oppia/android-app-infrastructure-reviewers +/testing/src/main/java/org/oppia/android/testing/TestAuthenticationModule.kt @oppia/android-app-infrastructure-reviewers /testing/src/main/java/org/oppia/android/testing/TestImageLoaderModule.kt @oppia/android-app-infrastructure-reviewers /testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt @oppia/android-app-infrastructure-reviewers /testing/src/test/java/org/oppia/android/testing/FakeAnalyticsEventLoggerTest.kt @oppia/android-app-infrastructure-reviewers +/testing/src/test/java/org/oppia/android/testing/FakeAuthenticationControllerTest.kt @oppia/android-app-infrastructure-reviewers /testing/src/test/java/org/oppia/android/testing/FakeExceptionLoggerTest.kt @oppia/android-app-infrastructure-reviewers +/testing/src/test/java/org/oppia/android/testing/FakeFirestoreEventLoggerTest.kt @oppia/android-app-infrastructure-reviewers /testing/src/test/java/org/oppia/android/testing/FakePerformanceMetricAssessorTest.kt @oppia/android-app-infrastructure-reviewers /testing/src/test/java/org/oppia/android/testing/FakePerformanceMetricsEventLoggerTest.kt @oppia/android-app-infrastructure-reviewers diff --git a/WORKSPACE b/WORKSPACE index 0c20dcd36a1..0f75dc8a9a0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -96,8 +96,8 @@ load("@dagger//:workspace_defs.bzl", "DAGGER_ARTIFACTS", "DAGGER_REPOSITORIES") # Add support for Robolectric: https://github.com/robolectric/robolectric-bazel http_archive( name = "robolectric", - strip_prefix = "robolectric-bazel-4.5", - urls = ["https://github.com/robolectric/robolectric-bazel/archive/4.5.tar.gz"], + strip_prefix = "robolectric-bazel-4.7", + urls = ["https://github.com/robolectric/robolectric-bazel/archive/4.7.tar.gz"], ) load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories") diff --git a/app/BUILD.bazel b/app/BUILD.bazel index 32677435108..e7543203b7c 100644 --- a/app/BUILD.bazel +++ b/app/BUILD.bazel @@ -714,6 +714,7 @@ kt_android_library( "//utility", "//utility/src/main/java/org/oppia/android/util/extensions:context_extensions", "//utility/src/main/java/org/oppia/android/util/logging/firebase:debug_event_logger", + "//utility/src/main/java/org/oppia/android/util/logging/firebase:debug_firestore_logger", "//utility/src/main/java/org/oppia/android/util/math:fraction_parser", "//utility/src/main/java/org/oppia/android/util/networking:network_connection_debug_util", "//utility/src/main/java/org/oppia/android/util/parser/html:html_parser", diff --git a/app/build.gradle b/app/build.gradle index 71b759c6475..dd69c7391a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -189,7 +189,7 @@ dependencies { testImplementation( 'androidx.test:core:1.2.0', 'androidx.test.espresso:espresso-contrib:3.1.0', - 'androidx.test.espresso:espresso-core:3.2.0', + 'androidx.test.espresso:espresso-core:3.5.0-alpha03', 'androidx.test.espresso:espresso-intents:3.1.0', 'androidx.test.ext:junit:1.1.1', 'androidx.test.ext:truth:1.4.0', @@ -197,8 +197,8 @@ dependencies { 'com.github.bumptech.glide:mocks:4.11.0', 'com.google.truth:truth:1.1.3', 'com.google.truth.extensions:truth-liteproto-extension:1.1.3', - 'org.robolectric:annotations:4.5', - 'org.robolectric:robolectric:4.5', + 'org.robolectric:annotations:4.7', + 'org.robolectric:robolectric:4.7', 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version", 'org.mockito:mockito-core:2.7.22', @@ -207,7 +207,7 @@ dependencies { androidTestImplementation( 'androidx.test:core:1.2.0', 'androidx.test.espresso:espresso-contrib:3.1.0', - 'androidx.test.espresso:espresso-core:3.2.0', + 'androidx.test.espresso:espresso-core:3.5.0-alpha03', 'androidx.test.espresso:espresso-intents:3.1.0', 'androidx.test.ext:junit:1.1.1', 'androidx.test.ext:truth:1.4.0', @@ -217,7 +217,7 @@ dependencies { 'com.google.truth.extensions:truth-liteproto-extension:1.1.3', 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', 'org.mockito:mockito-android:2.7.22', - 'org.robolectric:annotations:4.5', + 'org.robolectric:annotations:4.8.2', ) // Adding the testing module directly causes duplicates of the below groups so we need to // exclude them before adding the testing module to the androidTestImplementation dependencies diff --git a/app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt b/app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt index c91e02f702f..136fd1dbb9a 100644 --- a/app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt +++ b/app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt @@ -12,6 +12,7 @@ import org.oppia.android.app.shim.ViewBindingShimModule import org.oppia.android.app.translation.ActivityRecreatorProdModule import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -99,6 +100,7 @@ import javax.inject.Singleton PerformanceMetricsConfigurationsModule::class, AlphaBuildFlavorModule::class, EventLoggingConfigurationModule::class, CpuPerformanceSnapshotterModule::class, PerformanceMetricsAssessorModule::class, ExplorationProgressModule::class, + AuthenticationModule::class, ] ) interface AlphaApplicationComponent : ApplicationComponent { diff --git a/app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel index 9c410695450..ce982039b52 100644 --- a/app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel @@ -19,6 +19,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application:abstract_application", "//app/src/main/java/org/oppia/android/app/application:application_component", "//app/src/main/java/org/oppia/android/app/application:common_application_modules", + "//domain/src/main/java/org/oppia/android/domain/auth:auth_module", "//utility/src/main/java/org/oppia/android/util/logging:standard_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:prod_module", "//utility/src/main/java/org/oppia/android/util/networking:prod_module", diff --git a/app/src/main/java/org/oppia/android/app/application/alphakenya/AlphaKenyaApplicationComponent.kt b/app/src/main/java/org/oppia/android/app/application/alphakenya/AlphaKenyaApplicationComponent.kt index a65a7cf5724..75d07359cd4 100644 --- a/app/src/main/java/org/oppia/android/app/application/alphakenya/AlphaKenyaApplicationComponent.kt +++ b/app/src/main/java/org/oppia/android/app/application/alphakenya/AlphaKenyaApplicationComponent.kt @@ -13,6 +13,7 @@ import org.oppia.android.app.shim.ViewBindingShimModule import org.oppia.android.app.translation.ActivityRecreatorProdModule import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -100,6 +101,7 @@ import javax.inject.Singleton PerformanceMetricsConfigurationsModule::class, AlphaBuildFlavorModule::class, KenyaAlphaEventLoggingConfigurationModule::class, CpuPerformanceSnapshotterModule::class, PerformanceMetricsAssessorModule::class, ExplorationProgressModule::class, + AuthenticationModule::class, ] ) interface AlphaKenyaApplicationComponent : ApplicationComponent { diff --git a/app/src/main/java/org/oppia/android/app/application/alphakenya/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/alphakenya/BUILD.bazel index 538d47308dc..ff7623c9481 100644 --- a/app/src/main/java/org/oppia/android/app/application/alphakenya/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/alphakenya/BUILD.bazel @@ -20,6 +20,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application:application_component", "//app/src/main/java/org/oppia/android/app/application:common_application_modules", "//app/src/main/java/org/oppia/android/app/application/alpha:alpha_build_flavor_module", + "//domain/src/main/java/org/oppia/android/domain/auth:auth_module", "//utility/src/main/java/org/oppia/android/util/logging:kenya_alpha_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:prod_module", "//utility/src/main/java/org/oppia/android/util/networking:prod_module", diff --git a/app/src/main/java/org/oppia/android/app/application/beta/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/beta/BUILD.bazel index db532533d41..f8bc14be8ca 100644 --- a/app/src/main/java/org/oppia/android/app/application/beta/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/beta/BUILD.bazel @@ -22,6 +22,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application:abstract_application", "//app/src/main/java/org/oppia/android/app/application:application_component", "//app/src/main/java/org/oppia/android/app/application:common_application_modules", + "//domain/src/main/java/org/oppia/android/domain/auth:auth_module", "//utility/src/main/java/org/oppia/android/util/logging:standard_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:prod_module", "//utility/src/main/java/org/oppia/android/util/networking:prod_module", diff --git a/app/src/main/java/org/oppia/android/app/application/beta/BetaApplicationComponent.kt b/app/src/main/java/org/oppia/android/app/application/beta/BetaApplicationComponent.kt index b427b4eaeb3..bbe79384e81 100644 --- a/app/src/main/java/org/oppia/android/app/application/beta/BetaApplicationComponent.kt +++ b/app/src/main/java/org/oppia/android/app/application/beta/BetaApplicationComponent.kt @@ -12,6 +12,7 @@ import org.oppia.android.app.shim.ViewBindingShimModule import org.oppia.android.app.translation.ActivityRecreatorProdModule import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -99,7 +100,7 @@ import javax.inject.Singleton PerformanceMetricsConfigurationsModule::class, BetaBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, PerformanceMetricsAssessorModule::class, - ExplorationProgressModule::class, + ExplorationProgressModule::class, AuthenticationModule::class, ] ) interface BetaApplicationComponent : ApplicationComponent { diff --git a/app/src/main/java/org/oppia/android/app/application/dev/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/dev/BUILD.bazel index 53841df1c37..7949a279c20 100644 --- a/app/src/main/java/org/oppia/android/app/application/dev/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/dev/BUILD.bazel @@ -26,6 +26,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application:abstract_application", "//app/src/main/java/org/oppia/android/app/application:application_component", "//app/src/main/java/org/oppia/android/app/application:common_application_modules", + "//domain/src/main/java/org/oppia/android/domain/auth:auth_module", "//utility/src/main/java/org/oppia/android/util/logging:standard_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:debug_module", "//utility/src/main/java/org/oppia/android/util/networking:debug_module", diff --git a/app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt b/app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt index 1d718d5727e..522e68679f4 100644 --- a/app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt +++ b/app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt @@ -13,6 +13,7 @@ import org.oppia.android.app.shim.ViewBindingShimModule import org.oppia.android.app.translation.ActivityRecreatorProdModule import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -101,6 +102,7 @@ import javax.inject.Singleton PerformanceMetricsAssessorModule::class, PerformanceMetricsConfigurationsModule::class, DeveloperBuildFlavorModule::class, EventLoggingConfigurationModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + AuthenticationModule::class, ] ) interface DeveloperApplicationComponent : ApplicationComponent { diff --git a/app/src/main/java/org/oppia/android/app/application/ga/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/ga/BUILD.bazel index 5421f374f20..baa4b12237b 100644 --- a/app/src/main/java/org/oppia/android/app/application/ga/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/ga/BUILD.bazel @@ -22,6 +22,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application:abstract_application", "//app/src/main/java/org/oppia/android/app/application:application_component", "//app/src/main/java/org/oppia/android/app/application:common_application_modules", + "//domain/src/main/java/org/oppia/android/domain/auth:auth_module", "//utility/src/main/java/org/oppia/android/util/logging:standard_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:prod_module", "//utility/src/main/java/org/oppia/android/util/networking:prod_module", diff --git a/app/src/main/java/org/oppia/android/app/application/ga/GaApplicationComponent.kt b/app/src/main/java/org/oppia/android/app/application/ga/GaApplicationComponent.kt index 92cc87a5043..b4b476bc6d3 100644 --- a/app/src/main/java/org/oppia/android/app/application/ga/GaApplicationComponent.kt +++ b/app/src/main/java/org/oppia/android/app/application/ga/GaApplicationComponent.kt @@ -12,6 +12,7 @@ import org.oppia.android.app.shim.ViewBindingShimModule import org.oppia.android.app.translation.ActivityRecreatorProdModule import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -99,7 +100,7 @@ import javax.inject.Singleton PerformanceMetricsConfigurationsModule::class, GaBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, PerformanceMetricsAssessorModule::class, - ExplorationProgressModule::class, + ExplorationProgressModule::class, AuthenticationModule::class, ] ) interface GaApplicationComponent : ApplicationComponent { diff --git a/app/src/main/java/org/oppia/android/app/devoptions/vieweventlogs/ViewEventLogsViewModel.kt b/app/src/main/java/org/oppia/android/app/devoptions/vieweventlogs/ViewEventLogsViewModel.kt index 09362e1d90e..10e21fb987f 100644 --- a/app/src/main/java/org/oppia/android/app/devoptions/vieweventlogs/ViewEventLogsViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/devoptions/vieweventlogs/ViewEventLogsViewModel.kt @@ -5,6 +5,7 @@ import org.oppia.android.app.translation.AppLanguageResourceHandler import org.oppia.android.app.viewmodel.ObservableViewModel import org.oppia.android.util.locale.OppiaLocale import org.oppia.android.util.logging.firebase.DebugAnalyticsEventLogger +import org.oppia.android.util.logging.firebase.DebugFirestoreEventLogger import javax.inject.Inject /** @@ -14,11 +15,16 @@ import javax.inject.Inject @FragmentScope class ViewEventLogsViewModel @Inject constructor( debugAnalyticsEventLogger: DebugAnalyticsEventLogger, + debugFirestoreEventLogger: DebugFirestoreEventLogger, private val machineLocale: OppiaLocale.MachineLocale, private val resourceHandler: AppLanguageResourceHandler ) : ObservableViewModel() { - private val eventList = debugAnalyticsEventLogger.getEventList() + // Retrieves events from cache that are meant to be uploaded to Firebase Analytics. + private val analyticsEvents = debugAnalyticsEventLogger.getEventList() + // Retrieves events from cache that are meant to be uploaded to Firebase Firestore. + private val firestoreEvents = debugFirestoreEventLogger.getEventList() + private val eventList = analyticsEvents + firestoreEvents /** * List of [EventLogItemViewModel] used to populate recyclerview of [ViewEventLogsFragment] diff --git a/app/src/main/java/org/oppia/android/app/survey/SurveyOutroDialogFragmentPresenter.kt b/app/src/main/java/org/oppia/android/app/survey/SurveyOutroDialogFragmentPresenter.kt index 8399bb9a0e5..509a51e9751 100644 --- a/app/src/main/java/org/oppia/android/app/survey/SurveyOutroDialogFragmentPresenter.kt +++ b/app/src/main/java/org/oppia/android/app/survey/SurveyOutroDialogFragmentPresenter.kt @@ -60,7 +60,7 @@ class SurveyOutroDialogFragmentPresenter @Inject constructor( when (it) { is AsyncResult.Pending -> oppiaLogger.d("SurveyActivity", "Stopping survey session") is AsyncResult.Failure -> { - oppiaLogger.d("SurveyActivity", "Failed to stop the survey session") + oppiaLogger.d("SurveyActivity", "Failed to stop the survey session, ${it.error}") activity.finish() // Can't recover from the session failing to stop. } is AsyncResult.Success -> { diff --git a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt index 7eed7b8f290..7d0dbf96afc 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt @@ -103,6 +103,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -971,7 +972,8 @@ class AdministratorControlsActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt index 14feb91afcc..ff5cba27e23 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt @@ -91,6 +91,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -655,7 +656,8 @@ class AdministratorControlsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt index d6b1beaee52..cbe287cfaa9 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt @@ -81,6 +81,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -306,7 +307,8 @@ class AppVersionActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt index 901453c91dd..2710157c685 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt @@ -72,6 +72,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -229,7 +230,8 @@ class ProfileAndDeviceIdActivityTest { MathEquationInputModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, - ApplicationLifecycleModule::class, ExplorationProgressModule::class + ApplicationLifecycleModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt index 632098510b5..9bd43e39012 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt @@ -101,6 +101,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.logging.SyncStatusTestModule @@ -1028,7 +1029,8 @@ class ProfileAndDeviceIdFragmentTest { MathEquationInputModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, - ApplicationLifecycleModule::class, ExplorationProgressModule::class + ApplicationLifecycleModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt index f12311e7c86..17f0c3d6f73 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt @@ -84,6 +84,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -530,7 +531,8 @@ class CompletedStoryListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt b/app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt index cd902d72732..29a4743fe20 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -178,7 +179,8 @@ class LessonThumbnailImageViewTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt b/app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt index 8c53754b19a..768ba9a67a0 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt @@ -78,6 +78,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -1780,7 +1781,8 @@ class MathExpressionInteractionsViewTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/AppCompatCheckBoxBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/AppCompatCheckBoxBindingAdaptersTest.kt index 57586237166..081b23dbfbf 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/AppCompatCheckBoxBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/AppCompatCheckBoxBindingAdaptersTest.kt @@ -65,6 +65,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -169,7 +170,8 @@ class AppCompatCheckBoxBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/CircularProgressIndicatorAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/CircularProgressIndicatorAdaptersTest.kt index 48cd0f921ac..c84c6fc96b2 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/CircularProgressIndicatorAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/CircularProgressIndicatorAdaptersTest.kt @@ -68,6 +68,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -300,7 +301,8 @@ class CircularProgressIndicatorAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt index e996e8aebee..5a81aa9f654 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt @@ -69,6 +69,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -189,7 +190,8 @@ class DrawableBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt index 464c7939a6f..72f19842249 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -231,7 +232,8 @@ class ImageViewBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** Create a TestApplicationComponent. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt index 5b7202c4d9b..7bdc00ef976 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt @@ -78,6 +78,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -352,7 +353,8 @@ class MarginBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** Create a TestApplicationComponent. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt index 32edc11fdd6..9e8a843ee06 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -507,7 +508,8 @@ class StateAssemblerMarginBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** Create a TestApplicationComponent. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt index 201fc1fdd6f..073add10f38 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt @@ -75,6 +75,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -505,7 +506,8 @@ class StateAssemblerPaddingBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt index 4b0c22416c3..ca6a286febb 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt @@ -67,6 +67,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -338,7 +339,8 @@ class TextViewBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt b/app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt index d45c83ec1a6..9db806e5f0e 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt @@ -72,6 +72,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -239,7 +240,8 @@ class ViewBindingAdaptersTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** Create a TestApplicationComponent. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt index d50f6dfa630..55bbad1e323 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt @@ -91,6 +91,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -341,7 +342,8 @@ class DeveloperOptionsActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt index e0340041713..8247b045e36 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt @@ -86,6 +86,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -662,7 +663,8 @@ class DeveloperOptionsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt index e1513f5a954..59415795065 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -272,7 +273,8 @@ class MarkChaptersCompletedActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt index 0fbc8a68ada..6125413e6f6 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt @@ -82,6 +82,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.topic.StoryProgressController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -1023,7 +1024,8 @@ class MarkChaptersCompletedFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt index 132b2656fdf..8d8204d9684 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt @@ -68,6 +68,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -203,7 +204,8 @@ class MarkStoriesCompletedActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt index c02e5e07704..e67d776813a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -570,7 +571,8 @@ class MarkStoriesCompletedFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt index 33e3259e66b..5a575360d80 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt @@ -68,6 +68,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -203,7 +204,8 @@ class MarkTopicsCompletedActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt index 8360185d707..78214587b28 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -551,7 +552,8 @@ class MarkTopicsCompletedFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt index d350653c5d8..94dab9dd41d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt @@ -69,6 +69,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule import org.oppia.android.testing.threading.TestDispatcherModule @@ -194,7 +195,8 @@ class ViewEventLogsActivityTest { PerformanceMetricsAssessorModule::class, PerformanceMetricsConfigurationsModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, - ExplorationProgressModule::class + ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt index 40ed8ae48fb..a70d3ee6d04 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt @@ -33,6 +33,8 @@ import org.oppia.android.app.application.ApplicationModule import org.oppia.android.app.application.ApplicationStartupListenerModule import org.oppia.android.app.application.testing.TestingBuildFlavorModule import org.oppia.android.app.devoptions.vieweventlogs.testing.ViewEventLogsTestActivity +import org.oppia.android.app.model.EventLog +import org.oppia.android.app.model.ProfileId import org.oppia.android.app.player.state.itemviewmodel.SplitScreenInteractionModule import org.oppia.android.app.recyclerview.RecyclerViewMatcher.Companion.atPositionOnView import org.oppia.android.app.recyclerview.RecyclerViewMatcher.Companion.hasItemCount @@ -41,6 +43,7 @@ import org.oppia.android.app.translation.testing.ActivityRecreatorTestModule import org.oppia.android.app.utility.OrientationChangeAction.Companion.orientationLandscape import org.oppia.android.data.backends.gae.NetworkConfigProdModule import org.oppia.android.data.backends.gae.NetworkModule +import org.oppia.android.domain.auth.AuthenticationModule import org.oppia.android.domain.classify.InteractionsModule import org.oppia.android.domain.classify.rules.algebraicexpressioninput.AlgebraicExpressionInputModule import org.oppia.android.domain.classify.rules.continueinteraction.ContinueModule @@ -88,6 +91,7 @@ import org.oppia.android.util.locale.LocaleProdModule import org.oppia.android.util.logging.EventLoggingConfigurationModule import org.oppia.android.util.logging.LoggerModule import org.oppia.android.util.logging.SyncStatusModule +import org.oppia.android.util.logging.firebase.DebugFirestoreEventLogger import org.oppia.android.util.logging.firebase.DebugLogReportingModule import org.oppia.android.util.logging.firebase.FirebaseLogUploaderModule import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsAssessorModule @@ -99,6 +103,7 @@ import org.oppia.android.util.parser.image.GlideImageLoaderModule import org.oppia.android.util.parser.image.ImageParsingModule import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode +import org.robolectric.annotation.SQLiteMode import javax.inject.Inject import javax.inject.Singleton @@ -109,6 +114,7 @@ private const val TEST_SUB_TOPIC_ID = 1 /** Tests for [ViewEventLogsFragment]. */ @RunWith(AndroidJUnit4::class) +@SQLiteMode(SQLiteMode.Mode.NATIVE) @LooperMode(LooperMode.Mode.PAUSED) @Config( application = ViewEventLogsFragmentTest.TestApplication::class, @@ -117,20 +123,28 @@ private const val TEST_SUB_TOPIC_ID = 1 class ViewEventLogsFragmentTest { @get:Rule val initializeDefaultLocaleRule = InitializeDefaultLocaleRule() + @get:Rule val oppiaTestRule = OppiaTestRule() @Inject lateinit var testCoroutineDispatchers: TestCoroutineDispatchers + @Inject lateinit var context: Context + @Inject lateinit var oppiaLogger: OppiaLogger + @Inject lateinit var analyticsController: AnalyticsController + @Inject lateinit var fakeOppiaClock: FakeOppiaClock + @Inject + lateinit var debugFirestoreEventLogger: DebugFirestoreEventLogger + @Before fun setUp() { setUpTestApplicationComponent() @@ -173,7 +187,7 @@ class ViewEventLogsFragmentTest { launch(ViewEventLogsTestActivity::class.java).use { testCoroutineDispatchers.runCurrent() onView(withId(R.id.view_event_logs_recycler_view)) - .check(hasItemCount(count = 5)) + .check(hasItemCount(count = 6)) } } @@ -183,7 +197,7 @@ class ViewEventLogsFragmentTest { testCoroutineDispatchers.runCurrent() onView(isRoot()).perform(orientationLandscape()) onView(withId(R.id.view_event_logs_recycler_view)) - .check(hasItemCount(count = 5)) + .check(hasItemCount(count = 6)) } } @@ -194,30 +208,36 @@ class ViewEventLogsFragmentTest { scrollToPosition(position = 0) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = "Open Revision Card", + stringToMatch = "Optional Response", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 1) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = "Open Story Activity", + stringToMatch = "Open Revision Card", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 2) verifyTextOnEventLogItemViewAtPosition( position = 2, - stringToMatch = "Open Lessons Tab", + stringToMatch = "Open Story Activity", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 3) verifyTextOnEventLogItemViewAtPosition( position = 3, - stringToMatch = "Open Home", + stringToMatch = "Open Lessons Tab", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 4) verifyTextOnEventLogItemViewAtPosition( position = 4, + stringToMatch = "Open Home", + targetViewId = R.id.view_event_logs_context_text_view + ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, stringToMatch = "Open Profile Chooser", targetViewId = R.id.view_event_logs_context_text_view ) @@ -232,30 +252,36 @@ class ViewEventLogsFragmentTest { scrollToPosition(position = 0) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = "Open Revision Card", + stringToMatch = "Optional Response", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 1) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = "Open Story Activity", + stringToMatch = "Open Revision Card", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 2) verifyTextOnEventLogItemViewAtPosition( position = 2, - stringToMatch = "Open Lessons Tab", + stringToMatch = "Open Story Activity", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 3) verifyTextOnEventLogItemViewAtPosition( position = 3, - stringToMatch = "Open Home", + stringToMatch = "Open Lessons Tab", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 4) verifyTextOnEventLogItemViewAtPosition( position = 4, + stringToMatch = "Open Home", + targetViewId = R.id.view_event_logs_context_text_view + ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, stringToMatch = "Open Profile Chooser", targetViewId = R.id.view_event_logs_context_text_view ) @@ -273,7 +299,7 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = "Open Revision Card", + stringToMatch = "Optional Response", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 1) @@ -283,7 +309,7 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = "Open Story Activity", + stringToMatch = "Open Revision Card", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 2) @@ -293,6 +319,16 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 2, + stringToMatch = "Open Story Activity", + targetViewId = R.id.view_event_logs_context_text_view + ) + scrollToPosition(position = 3) + verifyItemDisplayedOnEventLogItemViewAtPosition( + position = 3, + targetViewId = R.id.view_event_logs_context_text_view + ) + verifyTextOnEventLogItemViewAtPosition( + position = 3, stringToMatch = "Open Lessons Tab", targetViewId = R.id.view_event_logs_context_text_view ) @@ -311,7 +347,7 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = "Open Revision Card", + stringToMatch = "Optional Response", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 1) @@ -321,7 +357,7 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = "Open Story Activity", + stringToMatch = "Open Revision Card", targetViewId = R.id.view_event_logs_context_text_view ) scrollToPosition(position = 2) @@ -331,6 +367,16 @@ class ViewEventLogsFragmentTest { ) verifyTextOnEventLogItemViewAtPosition( position = 2, + stringToMatch = "Open Story Activity", + targetViewId = R.id.view_event_logs_context_text_view + ) + scrollToPosition(position = 3) + verifyItemDisplayedOnEventLogItemViewAtPosition( + position = 3, + targetViewId = R.id.view_event_logs_context_text_view + ) + verifyTextOnEventLogItemViewAtPosition( + position = 3, stringToMatch = "Open Lessons Tab", targetViewId = R.id.view_event_logs_context_text_view ) @@ -344,30 +390,36 @@ class ViewEventLogsFragmentTest { scrollToPosition(position = 0) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 40000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 50000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 1) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 30000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 40000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 2) verifyTextOnEventLogItemViewAtPosition( position = 2, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 20000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 30000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 3) verifyTextOnEventLogItemViewAtPosition( position = 3, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 10000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 20000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 4) verifyTextOnEventLogItemViewAtPosition( position = 4, + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 10000), + targetViewId = R.id.view_event_logs_time_text_view + ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP), targetViewId = R.id.view_event_logs_time_text_view ) @@ -382,30 +434,36 @@ class ViewEventLogsFragmentTest { scrollToPosition(position = 0) verifyTextOnEventLogItemViewAtPosition( position = 0, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 40000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 50000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 1) verifyTextOnEventLogItemViewAtPosition( position = 1, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 30000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 40000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 2) verifyTextOnEventLogItemViewAtPosition( position = 2, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 20000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 30000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 3) verifyTextOnEventLogItemViewAtPosition( position = 3, - stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 10000), + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 20000), targetViewId = R.id.view_event_logs_time_text_view ) scrollToPosition(position = 4) verifyTextOnEventLogItemViewAtPosition( position = 4, + stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP + 10000), + targetViewId = R.id.view_event_logs_time_text_view + ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, stringToMatch = scenario.convertTimeStampToDateAndTime(TEST_TIMESTAMP), targetViewId = R.id.view_event_logs_time_text_view ) @@ -446,6 +504,12 @@ class ViewEventLogsFragmentTest { stringToMatch = "Essential", targetViewId = R.id.view_event_logs_priority_text_view ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, + stringToMatch = "Essential", + targetViewId = R.id.view_event_logs_priority_text_view + ) } } @@ -484,6 +548,12 @@ class ViewEventLogsFragmentTest { stringToMatch = "Essential", targetViewId = R.id.view_event_logs_priority_text_view ) + scrollToPosition(position = 5) + verifyTextOnEventLogItemViewAtPosition( + position = 5, + stringToMatch = "Essential", + targetViewId = R.id.view_event_logs_priority_text_view + ) } } @@ -515,6 +585,44 @@ class ViewEventLogsFragmentTest { analyticsController.logImportantEvent( oppiaLogger.createOpenRevisionCardContext(TEST_TOPIC_ID, TEST_SUB_TOPIC_ID), profileId = null ) + + logOptionalSurveyResponseEvent() + } + + private fun logOptionalSurveyResponseEvent() { + debugFirestoreEventLogger.uploadEvent( + EventLog.newBuilder() + .setContext( + createOptionalSurveyResponseContext( + "survey_id", + profileId = null, + answer = "some response" + ) + ) + .setPriority(EventLog.Priority.ESSENTIAL) + .setTimestamp(TEST_TIMESTAMP + 50000) + .build() + ) + testCoroutineDispatchers.runCurrent() + } + + private fun createOptionalSurveyResponseContext( + surveyId: String, + profileId: ProfileId?, + answer: String + ): EventLog.Context { + return EventLog.Context.newBuilder() + .setOptionalResponse( + EventLog.OptionalSurveyResponseContext.newBuilder() + .setFeedbackAnswer(answer) + .setSurveyDetails( + EventLog.SurveyResponseContext.newBuilder() + .setProfileId(profileId?.internalId.toString()) + .setSurveyId(surveyId) + .build() + ) + ) + .build() } private fun verifyTextOnEventLogItemViewAtPosition( @@ -592,7 +700,8 @@ class ViewEventLogsFragmentTest { MetricLogSchedulerModule::class, PerformanceMetricsAssessorModule::class, PerformanceMetricsConfigurationsModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + AuthenticationModule::class, ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt index 3c5918d0f81..7bc720e4ae0 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt @@ -69,6 +69,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -194,7 +195,8 @@ class ForceNetworkTypeActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** [ApplicationComponent] for [ForceNetworkTypeActivityTest]. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt index 3c3548dd3d6..25cccdd0bd1 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt @@ -73,6 +73,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -401,7 +402,8 @@ class ForceNetworkTypeFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) /** [ApplicationComponent] for [ForceNetworkTypeFragmentTest]. */ diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt index 5bb2ba6db0c..517da7ca48a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt @@ -65,6 +65,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -179,7 +180,8 @@ class MathExpressionParserActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt index 036dfde42b4..cac62ddb6b4 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction @@ -1419,7 +1420,8 @@ class MathExpressionParserFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt index 32d89e32dd8..622e7de5e32 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt @@ -79,6 +79,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -253,7 +254,8 @@ class FAQListFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt index e343041c2fe..90d49553c6c 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt @@ -75,6 +75,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -240,7 +241,8 @@ class FAQSingleActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt index 1f9086d1c4d..680afbdeb44 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -167,7 +168,8 @@ class FaqListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt index d4da5be6dc7..f00931977eb 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -86,7 +87,6 @@ import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode import javax.inject.Inject import javax.inject.Singleton - /** Tests for [HelpActivity]. */ @RunWith(AndroidJUnit4::class) @LooperMode(LooperMode.Mode.PAUSED) @@ -169,7 +169,8 @@ class HelpActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt index 7730b85edf8..73cfb22be58 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt @@ -93,6 +93,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -1448,7 +1449,8 @@ class HelpFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt index 55a31dd8066..edd99001826 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt @@ -121,6 +121,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -1984,7 +1985,8 @@ class HomeActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt index 91a5071439b..0aca510567f 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt @@ -108,6 +108,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -1500,7 +1501,8 @@ class RecentlyPlayedFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt index 97198f4f58c..97fc6eb4f8c 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt @@ -66,6 +66,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -390,7 +391,8 @@ class TopicSummaryViewModelTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt index 74ca4cbf4ff..9ede16565ca 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -363,7 +364,8 @@ class WelcomeViewModelTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt index 55b960353a7..99cd9dcd48e 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt @@ -66,6 +66,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -376,7 +377,8 @@ class PromotedStoryListViewModelTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt b/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt index 6e96d63a095..ac309882dd1 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -402,7 +403,8 @@ class PromotedStoryViewModelTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt index 11b4b912b73..c42a30b0d55 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt @@ -61,6 +61,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -160,7 +161,8 @@ class MyDownloadsActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt index 3e1ce04a34f..2441f617b3d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt @@ -71,6 +71,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -239,7 +240,8 @@ class MyDownloadsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/notice/BetaNoticeDialogFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/notice/BetaNoticeDialogFragmentTest.kt index 9ab0a7a8159..b98726e61f3 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/notice/BetaNoticeDialogFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/notice/BetaNoticeDialogFragmentTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -250,7 +251,8 @@ class BetaNoticeDialogFragmentTest { ApplicationLifecycleModule::class, SyncStatusModule::class, TestingBuildFlavorModule::class, CachingTestModule::class, MetricLogSchedulerModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/notice/GeneralAvailabilityUpgradeNoticeDialogFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/notice/GeneralAvailabilityUpgradeNoticeDialogFragmentTest.kt index d44a2e47d6a..29c1cde2351 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/notice/GeneralAvailabilityUpgradeNoticeDialogFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/notice/GeneralAvailabilityUpgradeNoticeDialogFragmentTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -257,7 +258,8 @@ class GeneralAvailabilityUpgradeNoticeDialogFragmentTest { ApplicationLifecycleModule::class, SyncStatusModule::class, TestingBuildFlavorModule::class, CachingTestModule::class, MetricLogSchedulerModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt index 101fbc9d757..23704d8ef36 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -86,7 +87,6 @@ import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode import javax.inject.Inject import javax.inject.Singleton - /** Tests for [OnboardingActivity]. */ @RunWith(AndroidJUnit4::class) @LooperMode(LooperMode.Mode.PAUSED) @@ -166,7 +166,8 @@ class OnboardingActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt index 53de66687fb..e1227d6396f 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt @@ -88,6 +88,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -720,7 +721,8 @@ class OnboardingFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt index a8f96c78821..bf37a173a38 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt @@ -82,6 +82,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.topic.RATIOS_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -474,7 +475,8 @@ class OngoingTopicListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt index c54852c2bc3..52e8a3cc154 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -174,7 +175,8 @@ class AppLanguageActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt index 6ec000c34d5..07df1432348 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt @@ -75,6 +75,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -322,7 +323,8 @@ class AppLanguageFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt index 463b847ca30..a87d648e98e 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -165,7 +166,8 @@ class AudioLanguageActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt index 10071c24349..9511978a74b 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -314,7 +315,8 @@ class AudioLanguageFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt index b15d9d269d2..fb73b1cc893 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -86,7 +87,6 @@ import org.robolectric.annotation.Config import org.robolectric.annotation.LooperMode import javax.inject.Inject import javax.inject.Singleton - /** Tests for [OptionsActivity]. */ @RunWith(AndroidJUnit4::class) @LooperMode(LooperMode.Mode.PAUSED) @@ -168,7 +168,8 @@ class OptionsActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt index 3210327edae..4139cc19f2b 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt @@ -92,6 +92,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -675,7 +676,8 @@ class OptionsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt index ac5a0cc08be..6c54efd52c8 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -165,7 +166,8 @@ class ReadingTextSizeActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt index 10760da6b34..56933de3067 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -317,7 +318,8 @@ class ReadingTextSizeFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt b/app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt index b0e82b25dcd..a655da4b9e0 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt @@ -102,6 +102,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -913,7 +914,8 @@ class HtmlParserTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt index 48353183d5c..1fe9d2aa54d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt @@ -87,6 +87,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -482,7 +483,8 @@ class AudioFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/BottomSheetOptionsMenuTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/BottomSheetOptionsMenuTest.kt index 12668ac7d76..e390e6eea1a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/BottomSheetOptionsMenuTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/BottomSheetOptionsMenuTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -193,7 +194,8 @@ class BottomSheetOptionsMenuTest { ApplicationLifecycleModule::class, SyncStatusModule::class, TestingBuildFlavorModule::class, CachingTestModule::class, MetricLogSchedulerModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index a8c1bea4d8c..244c95392b8 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -130,6 +130,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -2423,7 +2424,8 @@ class ExplorationActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt index d1d1fb3814c..6d61bf92d6f 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt @@ -151,6 +151,7 @@ import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -4940,7 +4941,8 @@ class StateFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesActivityTest.kt index a3c01568fb0..95dd5e209d2 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesActivityTest.kt @@ -79,6 +79,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -280,7 +281,8 @@ class PoliciesActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesFragmentTest.kt index a66658b3875..2a318c9324a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/policies/PoliciesFragmentTest.kt @@ -91,6 +91,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -360,7 +361,8 @@ class PoliciesFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt index 605a1c18cc7..f20a21ed6b8 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt @@ -96,6 +96,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -1819,7 +1820,8 @@ class AddProfileActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt index 87b7eaa2378..cb49cff5daa 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt @@ -82,6 +82,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -693,7 +694,8 @@ class AdminAuthActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt index 96b1025a35e..ea44c5d0d1c 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt @@ -91,6 +91,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -1110,7 +1111,8 @@ class AdminPinActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt index f1afe3b1393..6bd77664f66 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt @@ -87,6 +87,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -1198,7 +1199,8 @@ class PinPasswordActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserActivityTest.kt index 3b8e8cfe439..3442c182a7d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -164,7 +165,8 @@ class ProfileChooserActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt index 8dbbf853b9b..0418a1339a8 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt @@ -84,6 +84,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -529,7 +530,8 @@ class ProfileChooserFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt index 5c870dc35dc..57d8180ed22 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -221,6 +222,7 @@ class ProfilePictureActivityTest { SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt index 0e16912ffb1..fc6c676d227 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -171,6 +172,7 @@ class ProfileProgressActivityTest { SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt index 15d869c6bcc..87046ae6fa6 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt @@ -109,6 +109,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -924,6 +925,7 @@ class ProfileProgressFragmentTest { SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt b/app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt index 0882da3a400..1d48ecfcf71 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt @@ -98,6 +98,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -683,7 +684,8 @@ class BindableAdapterTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt index 11effa33a84..988cbe99df3 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt @@ -82,6 +82,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -240,7 +241,8 @@ class ResumeLessonActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt index e837fba1cfa..7bbc505d9dc 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt @@ -84,6 +84,7 @@ import org.oppia.android.domain.topic.RATIOS_STORY_ID_0 import org.oppia.android.domain.topic.RATIOS_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -320,7 +321,8 @@ class ResumeLessonFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt index b06938a9be7..ab1aa374f27 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt @@ -79,6 +79,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -372,7 +373,8 @@ class ProfileEditActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt index 5c28e75d5d9..a6f02aa8d7c 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt @@ -84,6 +84,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor @@ -487,7 +488,8 @@ class ProfileEditFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt index 5ab0aa0d058..fe93ebd5339 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -166,7 +167,8 @@ class ProfileListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt index f57ca938ce6..5e571de6a91 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt @@ -76,6 +76,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -395,7 +396,8 @@ class ProfileListFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt index 32711f2c916..dc8534a913f 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -192,7 +193,8 @@ class ProfileRenameActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt index b1e253d60f0..e95194f1de1 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt @@ -78,6 +78,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -469,7 +470,8 @@ class ProfileRenameFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt index d0b9021240f..0a0d8c22316 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -201,7 +202,8 @@ class ProfileResetPinActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt index 830f3f885de..ce23631d2a0 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt @@ -79,6 +79,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.TextInputAction.Companion.hasErrorText @@ -1033,7 +1034,8 @@ class ProfileResetPinFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/splash/SplashActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/splash/SplashActivityTest.kt index 4483d5e3e6c..2ccef97076a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/splash/SplashActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/splash/SplashActivityTest.kt @@ -95,6 +95,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -1246,7 +1247,8 @@ class SplashActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/spotlight/SpotlightFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/spotlight/SpotlightFragmentTest.kt index 3911274b902..36f978df8c1 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/spotlight/SpotlightFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/spotlight/SpotlightFragmentTest.kt @@ -72,6 +72,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -371,7 +372,8 @@ class SpotlightFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt index f0b4d27753b..c4a1776e814 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt @@ -85,6 +85,7 @@ import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.DisableAccessibilityChecks import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -279,7 +280,8 @@ class StoryActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt index 56cf2a883ea..0ead7f788c0 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt @@ -116,6 +116,7 @@ import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.DisableAccessibilityChecks import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.mockito.anyOrNull @@ -959,7 +960,8 @@ class StoryFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyActivityTest.kt index 158296d3aa2..4af4459dfef 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyActivityTest.kt @@ -66,6 +66,7 @@ import org.oppia.android.domain.topic.TEST_EXPLORATION_ID_2 import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -193,7 +194,8 @@ class SurveyActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyFragmentTest.kt index 4ac59d07d5b..f1398787462 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/survey/SurveyFragmentTest.kt @@ -89,6 +89,7 @@ import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.logging.EventLogSubject @@ -619,7 +620,8 @@ class SurveyFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt index cb81673b016..966ada83745 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt @@ -72,6 +72,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -237,7 +238,8 @@ class DragDropTestActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt index 58978aa74b0..11088d08c32 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt @@ -83,6 +83,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -404,7 +405,8 @@ class ImageRegionSelectionInteractionViewTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt index 8ed1123cc41..cecf0c1abc6 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt @@ -79,6 +79,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.DisableAccessibilityChecks import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -1132,7 +1133,8 @@ class InputInteractionViewTestActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt index 1b25eeb4eba..0fac18cd543 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt @@ -99,6 +99,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -457,7 +458,8 @@ class NavigationDrawerActivityDebugTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt index bce54aac8a1..ad9e96dec12 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt @@ -107,6 +107,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -994,7 +995,8 @@ class NavigationDrawerActivityProdTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt index 9b8b64c3092..5815a6f0971 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt @@ -67,6 +67,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -212,7 +213,8 @@ class TestFontScaleConfigurationUtilActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt b/app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt index e24a5dad28b..03c8b40c315 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt @@ -71,6 +71,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -213,7 +214,8 @@ class TopicTestActivityForStoryTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt index 8cf61b1e656..cc6d13cc284 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -179,7 +180,8 @@ class LicenseListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt index aec669e81e3..b50e60a6cfa 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt @@ -78,6 +78,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -379,7 +380,8 @@ class LicenseListFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt index c0a51d20a14..4bef8304a43 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -188,7 +189,8 @@ class LicenseTextViewerActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt index 76df5c92384..03d9b1c666a 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt @@ -68,6 +68,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -357,7 +358,8 @@ class LicenseTextViewerFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt index ca05cb9ddbc..da5a3be066d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -176,7 +177,8 @@ class ThirdPartyDependencyListActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt index af563731aa9..7691445e8a2 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -489,7 +490,8 @@ class ThirdPartyDependencyListFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt index a765068fde4..8cf06d4dfb4 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt @@ -82,6 +82,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -253,7 +254,8 @@ class TopicActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt index b9b565bb011..11b2c552cad 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt @@ -94,6 +94,7 @@ import org.oppia.android.domain.topic.RATIOS_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.logging.EventLogSubject.Companion.assertThat @@ -952,7 +953,8 @@ class TopicFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt index fcad7bafb88..846884c529d 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt @@ -103,6 +103,7 @@ import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RichTextViewMatcher.Companion.containsRichText import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -597,7 +598,8 @@ class ConceptCardFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt index 0acdf90b1a6..a8ea6bf7896 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt @@ -88,6 +88,7 @@ import org.oppia.android.domain.topic.RATIOS_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -498,7 +499,8 @@ class TopicInfoFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt index 8ea32a5e1ab..45abdc11143 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt @@ -110,6 +110,7 @@ import org.oppia.android.domain.topic.RATIOS_STORY_ID_0 import org.oppia.android.domain.topic.RATIOS_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.lightweightcheckpointing.ExplorationCheckpointTestHelper @@ -1190,7 +1191,8 @@ class TopicLessonsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt index 74481e48ebc..3f8b7eae213 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt @@ -88,6 +88,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -462,7 +463,8 @@ class TopicPracticeFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt index b34db800641..9bd58c51e8c 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt @@ -126,6 +126,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -811,7 +812,8 @@ class QuestionPlayerActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt index 81f405e6f98..2daf1860e6b 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt @@ -89,6 +89,7 @@ import org.oppia.android.domain.topic.FRACTIONS_TOPIC_ID import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.ImageViewMatcher.Companion.hasScaleType @@ -358,7 +359,8 @@ class TopicRevisionFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt index 19fff7196b7..7bc7ce311d2 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt @@ -83,6 +83,7 @@ import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -410,7 +411,8 @@ class RevisionCardActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt index 0f7721cbd58..7422990cea4 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt @@ -104,6 +104,7 @@ import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.DisableAccessibilityChecks import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform import org.oppia.android.testing.data.DataProviderTestMonitor @@ -800,7 +801,8 @@ class RevisionCardFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt b/app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt index 9a306b03e31..f8e1dedfdb9 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt @@ -60,6 +60,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -165,7 +166,8 @@ class RatioExtensionsTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt index d4e5a2afec0..e289674673e 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -254,7 +255,8 @@ class WalkthroughActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt index 0131d060c65..79e0caf8e70 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt @@ -76,6 +76,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -300,7 +301,8 @@ class WalkthroughFinalFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt index 7d86a720ab6..d90dca2bb15 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt @@ -77,6 +77,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.environment.TestEnvironmentConfig @@ -326,7 +327,8 @@ class WalkthroughTopicListFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt index 8af2cebfb4c..0634f55de2b 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt @@ -72,6 +72,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.OppiaTestRule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -223,7 +224,8 @@ class WalkthroughWelcomeFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt b/app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt index d10fdafe22e..47a343b0316 100644 --- a/app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt +++ b/app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -191,7 +192,8 @@ class ActivityIntentFactoriesTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterModuleTest.kt b/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterModuleTest.kt index b17646fb769..104ee920e47 100644 --- a/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterModuleTest.kt +++ b/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterModuleTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -161,7 +162,8 @@ class ActivityRouterModuleTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterTest.kt b/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterTest.kt index 97988c9c5b9..bea5d205bc5 100644 --- a/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterTest.kt +++ b/app/src/test/java/org/oppia/android/app/activity/route/ActivityRouterTest.kt @@ -74,6 +74,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -211,7 +212,8 @@ class ActivityRouterTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt b/app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt index 50527e24b88..5c86e2b542c 100644 --- a/app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -165,7 +166,8 @@ class HomeActivityLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt b/app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt index 6016d1d4894..2e804b8f8fc 100644 --- a/app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt +++ b/app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt @@ -58,6 +58,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -270,7 +271,8 @@ class FractionParsingUiErrorTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/parser/ListItemLeadingMarginSpanTest.kt b/app/src/test/java/org/oppia/android/app/parser/ListItemLeadingMarginSpanTest.kt index 6c59d12202b..7aa3bba8f81 100644 --- a/app/src/test/java/org/oppia/android/app/parser/ListItemLeadingMarginSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/parser/ListItemLeadingMarginSpanTest.kt @@ -84,6 +84,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.TestPlatform @@ -1077,7 +1078,8 @@ class ListItemLeadingMarginSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt b/app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt index 2b9845c78b8..794be78f7bc 100644 --- a/app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt +++ b/app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt @@ -59,6 +59,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.junit.InitializeDefaultLocaleRule @@ -274,7 +275,8 @@ class StringToRatioParserTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt b/app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt index c3e905658cc..9ba1741236e 100644 --- a/app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.topic.TEST_STORY_ID_0 import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -224,6 +225,7 @@ class ExplorationActivityLocalTest { SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt index cdf8b5bd772..23bf0334141 100644 --- a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt @@ -138,6 +138,7 @@ import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.BuildEnvironment import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestImageLoaderModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor @@ -2950,7 +2951,8 @@ class StateFragmentLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt index 787bd9dfd27..35dd0310c63 100644 --- a/app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt @@ -61,6 +61,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -150,7 +151,8 @@ class ProfileChooserFragmentLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt b/app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt index 323b25d8a73..ee383f8ec5b 100644 --- a/app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -175,7 +176,8 @@ class StoryActivityLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt index 2fda58f0898..5ecdfdcf3cc 100644 --- a/app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -183,7 +184,8 @@ class CompletedStoryListSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt index 2f550bccad7..7ef9b806b93 100644 --- a/app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -197,7 +198,8 @@ class HomeSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt index 06eafa277a4..b38e93506fd 100644 --- a/app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt @@ -65,6 +65,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -194,7 +195,8 @@ class OngoingTopicListSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt b/app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt index 4fdae5a1c31..0941c35c37c 100644 --- a/app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt @@ -81,6 +81,7 @@ import org.oppia.android.domain.platformparameter.syncup.PlatformParameterSyncUp import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.network.MockPlatformParameterService @@ -367,7 +368,8 @@ class PlatformParameterIntegrationTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt index 3cf5cbffe6b..bfea9b66185 100644 --- a/app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -396,7 +397,8 @@ class ProfileChooserSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt b/app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt index c15d270d4e5..83608031b85 100644 --- a/app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt @@ -64,6 +64,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -180,7 +181,8 @@ class ProfileProgressSpanCountTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt index a2c129bc1c6..fed517d1912 100644 --- a/app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt @@ -67,6 +67,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -321,7 +322,8 @@ class RecentlyPlayedSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt b/app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt index 19a9bd08b35..5fe8a3fb3c8 100644 --- a/app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt @@ -63,6 +63,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -180,7 +181,8 @@ class TopicRevisionSpanTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt b/app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt index 307db040b61..f23ffd3dd6b 100644 --- a/app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt @@ -60,6 +60,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -205,7 +206,8 @@ class TestActivityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt b/app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt index cfd5875545f..e6d2a7f4812 100644 --- a/app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -204,7 +205,8 @@ class AdministratorControlsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt b/app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt index 6334a3cb199..158210e2655 100644 --- a/app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -263,7 +264,8 @@ class OptionsFragmentTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt b/app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt index d5254b8fac9..649ad5306b8 100644 --- a/app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt @@ -61,6 +61,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -213,7 +214,8 @@ class PlayerSplitScreenTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt b/app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt index 12903d92b03..7b33b32cad0 100644 --- a/app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt +++ b/app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt @@ -70,6 +70,7 @@ import org.oppia.android.domain.topic.TEST_EXPLORATION_ID_4 import org.oppia.android.domain.topic.TEST_STORY_ID_0 import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.profile.ProfileTestHelper @@ -220,7 +221,8 @@ class StateFragmentAccessibilityTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt index c4488a87440..cda806ffed1 100644 --- a/app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt @@ -60,6 +60,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.platformparameter.TestPlatformParameterModule @@ -164,7 +165,8 @@ class TopicInfoFragmentLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt index 8a04d388eb3..b5ef86c5597 100644 --- a/app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt @@ -60,6 +60,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -166,7 +167,8 @@ class TopicLessonsFragmentLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt b/app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt index 9246d4e81d6..b388ade740a 100644 --- a/app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt @@ -87,6 +87,7 @@ import org.oppia.android.domain.question.WrongAnswerScorePenalty import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.topic.TEST_SKILL_ID_1 import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.espresso.EditTextInputAction import org.oppia.android.testing.espresso.KonfettiViewMatcher.Companion.hasActiveConfetti @@ -513,7 +514,8 @@ class QuestionPlayerActivityLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt b/app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt index 343e67f1705..42b14d83075 100644 --- a/app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt @@ -62,6 +62,7 @@ import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.topic.SUBTOPIC_TOPIC_ID import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -157,7 +158,8 @@ class RevisionCardActivityLocalTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/translation/ActivityLanguageLocaleHandlerTest.kt b/app/src/test/java/org/oppia/android/app/translation/ActivityLanguageLocaleHandlerTest.kt index 82ae2bc2ef8..b234a2ae58a 100644 --- a/app/src/test/java/org/oppia/android/app/translation/ActivityLanguageLocaleHandlerTest.kt +++ b/app/src/test/java/org/oppia/android/app/translation/ActivityLanguageLocaleHandlerTest.kt @@ -73,6 +73,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.junit.DefineAppLanguageLocaleContext @@ -330,7 +331,8 @@ class ActivityLanguageLocaleHandlerTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) diff --git a/app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt b/app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt index 95db3cf4cd7..9ce6d2ce22c 100644 --- a/app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt +++ b/app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt @@ -66,6 +66,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.data.DataProviderTestMonitor @@ -623,7 +624,8 @@ class AppLanguageResourceHandlerTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt b/app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt index dd6be083faf..95f05fa2ebb 100644 --- a/app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt +++ b/app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt @@ -71,6 +71,7 @@ import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.translation.TranslationController import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.junit.DefineAppLanguageLocaleContext @@ -312,7 +313,8 @@ class AppLanguageWatcherMixinTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/utility/datetime/DateTimeUtilTest.kt b/app/src/test/java/org/oppia/android/app/utility/datetime/DateTimeUtilTest.kt index 926ea83dbec..5cd6e77f8cf 100644 --- a/app/src/test/java/org/oppia/android/app/utility/datetime/DateTimeUtilTest.kt +++ b/app/src/test/java/org/oppia/android/app/utility/datetime/DateTimeUtilTest.kt @@ -61,6 +61,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.robolectric.RobolectricModule @@ -229,7 +230,7 @@ class DateTimeUtilTest { SyncStatusModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, AnalyticsStartupListenerTestModule::class, - ExplorationProgressModule::class, + ExplorationProgressModule::class, TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt b/app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt index daf8228b45a..64800e1d5e8 100644 --- a/app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt +++ b/app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt @@ -78,6 +78,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.junit.InitializeDefaultLocaleRule import org.oppia.android.testing.junit.OppiaParameterizedTestRunner @@ -1340,7 +1341,8 @@ class MathExpressionAccessibilityUtilTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/config/proguard/firebase-components-proguard-rules.pro b/config/proguard/firebase-components-proguard-rules.pro index 2f72d567674..f8c815466a7 100644 --- a/config/proguard/firebase-components-proguard-rules.pro +++ b/config/proguard/firebase-components-proguard-rules.pro @@ -1,6 +1,9 @@ # Reference: https://github.com/firebase/firebase-android-sdk/blob/82b02af331/firebase-components/proguard.txt. +# Reference: https://github.com/firebase/firebase-android-sdk/blob/00d4626/firebase-firestore/proguard.txt. -dontwarn com.google.firebase.components.Component$Instantiation -dontwarn com.google.firebase.components.Component$ComponentType +-dontwarn com.google.firebase.firestore.remote.FirestoreChannel +-dontwarn javax.naming.** -keep class * implements com.google.firebase.components.ComponentRegistrar diff --git a/data/build.gradle b/data/build.gradle index d51015b8c24..97a3cc32fd7 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -88,7 +88,7 @@ dependencies { 'junit:junit:4.12', 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', 'org.mockito:mockito-core:2.19.0', - 'org.robolectric:robolectric:4.5', + 'org.robolectric:robolectric:4.7', project(":testing"), ) // TODO(#59): Remove this once Bazel is introduced @@ -99,7 +99,7 @@ dependencies { 'com.squareup.retrofit2:retrofit-mock:2.7.2', ) androidTestImplementation('androidx.test:runner:1.2.0', - 'androidx.test.espresso:espresso-core:3.2.0') + 'androidx.test.espresso:espresso-core:3.5.0-alpha03') kapt( 'com.google.dagger:dagger-compiler:2.24', 'com.squareup.moshi:moshi-kotlin-codegen:1.11.0' diff --git a/domain/BUILD.bazel b/domain/BUILD.bazel index 79bcd289f08..d25ebd140d7 100755 --- a/domain/BUILD.bazel +++ b/domain/BUILD.bazel @@ -27,6 +27,7 @@ package_group( # globs here to ensure that new files added to migrated packages don't accidentally get included in the # top-level module library. MIGRATED_PROD_FILES = glob([ + "src/main/java/org/oppia/android/domain/auth/*.kt", "src/main/java/org/oppia/android/domain/feedbackreporting/*.kt", "src/main/java/org/oppia/android/domain/onboarding/**/*.kt", "src/main/java/org/oppia/android/domain/oppialogger/**/*.kt", diff --git a/domain/build.gradle b/domain/build.gradle index b0e246d6e27..44765d6a2ad 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -93,6 +93,7 @@ dependencies { 'com.google.dagger:dagger:2.24', 'com.google.firebase:firebase-analytics-ktx:17.5.0', 'com.google.firebase:firebase-crashlytics:17.0.0', + 'com.google.firebase:firebase-auth-ktx:19.3.1', 'com.google.guava:guava:28.1-android', 'com.google.protobuf:protobuf-javalite:3.17.3', "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" @@ -104,7 +105,7 @@ dependencies { ) testImplementation( 'android.arch.core:core-testing:1.1.1', - 'androidx.test.espresso:espresso-core:3.2.0', + 'androidx.test.espresso:espresso-core:3.5.0-alpha03', 'androidx.test.ext:junit:1.1.1', 'androidx.work:work-testing:2.4.0', 'com.google.dagger:dagger:2.24', @@ -116,7 +117,7 @@ dependencies { 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2', 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', 'org.mockito:mockito-core:3.9.0', - 'org.robolectric:robolectric:4.5', + 'org.robolectric:robolectric:4.7', project(":testing"), ) kapt( diff --git a/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationController.kt b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationController.kt new file mode 100644 index 00000000000..e71761a9f17 --- /dev/null +++ b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationController.kt @@ -0,0 +1,41 @@ +package org.oppia.android.domain.auth + +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.auth.FirebaseUser +import com.google.firebase.auth.ktx.auth +import com.google.firebase.ktx.Firebase +import kotlinx.coroutines.CompletableDeferred +import org.oppia.android.util.data.AsyncResult +import javax.inject.Inject + +/** Controller for signing in and retrieving a Firebase user. */ +class AuthenticationController private constructor( + private val firebaseAuth: FirebaseAuth +) : AuthenticationListener { + /** Returns the current signed in user or null if there is no authenticated user. */ + override fun getCurrentSignedInUser(): FirebaseUser? { + return firebaseAuth.currentUser + } + + /** Returns the result of an authentication task. */ + override fun signInAnonymously(): CompletableDeferred> { + val deferredResult = CompletableDeferred>() + firebaseAuth.signInAnonymously() + .addOnSuccessListener { + deferredResult.complete(AsyncResult.Success(null)) + } + .addOnFailureListener { + deferredResult.complete(AsyncResult.Failure(it)) + } + + return deferredResult + } + + /** Application-scoped injectable factory for creating a new [AuthenticationController]. */ + class Factory @Inject constructor() { + private val firebaseAuth = Firebase.auth + + /** Returns a new [AuthenticationController] for the current application context. */ + fun create(): AuthenticationController = AuthenticationController(firebaseAuth) + } +} diff --git a/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationListener.kt b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationListener.kt new file mode 100644 index 00000000000..3a930bc23ee --- /dev/null +++ b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationListener.kt @@ -0,0 +1,14 @@ +package org.oppia.android.domain.auth + +import com.google.firebase.auth.FirebaseUser +import kotlinx.coroutines.CompletableDeferred +import org.oppia.android.util.data.AsyncResult + +/** Listener for getting the authentication state of the default FirebaseApp. */ +interface AuthenticationListener { + /** Returns the current signed in user or null if there is no authenticated user. */ + fun getCurrentSignedInUser(): FirebaseUser? + + /** Returns the authentication result. */ + fun signInAnonymously(): CompletableDeferred> +} diff --git a/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationModule.kt b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationModule.kt new file mode 100644 index 00000000000..348cc03cc2a --- /dev/null +++ b/domain/src/main/java/org/oppia/android/domain/auth/AuthenticationModule.kt @@ -0,0 +1,14 @@ +package org.oppia.android.domain.auth + +import dagger.Module +import dagger.Provides +import javax.inject.Singleton + +/** Provides an implementation of FirebaseAuth. */ +@Module +class AuthenticationModule { + @Provides + @Singleton + fun provideAuthenticationController(factory: AuthenticationController.Factory): + AuthenticationListener = factory.create() +} diff --git a/domain/src/main/java/org/oppia/android/domain/auth/BUILD.bazel b/domain/src/main/java/org/oppia/android/domain/auth/BUILD.bazel new file mode 100644 index 00000000000..88c647a4d5c --- /dev/null +++ b/domain/src/main/java/org/oppia/android/domain/auth/BUILD.bazel @@ -0,0 +1,39 @@ +""" +Library for providing authentication with Firebase functionality in the app. +""" + +load("@dagger//:workspace_defs.bzl", "dagger_rules") +load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_android_library") + +kt_android_library( + name = "authentication_controller", + srcs = ["AuthenticationController.kt"], + visibility = ["//:oppia_api_visibility"], + deps = [ + ":authentication_listener", + "//third_party:javax_inject_javax_inject", + ], +) + +kt_android_library( + name = "authentication_listener", + srcs = ["AuthenticationListener.kt"], + visibility = ["//:oppia_api_visibility"], + deps = [ + "//third_party:com_google_firebase_firebase-auth-ktx", + "//third_party:org_jetbrains_kotlinx_kotlinx-coroutines-core", + "//utility/src/main/java/org/oppia/android/util/data:async_result", + ], +) + +kt_android_library( + name = "auth_module", + srcs = ["AuthenticationModule.kt"], + visibility = ["//:oppia_prod_module_visibility"], + deps = [ + ":authentication_controller", + ":dagger", + ], +) + +dagger_rules() diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/LogStorageModule.kt b/domain/src/main/java/org/oppia/android/domain/oppialogger/LogStorageModule.kt index 73fe03a7a3d..7ef560e730e 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/LogStorageModule.kt +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/LogStorageModule.kt @@ -13,6 +13,9 @@ annotation class ExceptionLogStorageCacheSize @Qualifier annotation class PerformanceMetricsLogStorageCacheSize +@Qualifier +annotation class FirestoreLogStorageCacheSize + /** Provider to return any constants required during the storage of log reports. */ @Module class LogStorageModule { @@ -46,4 +49,14 @@ class LogStorageModule { @Provides @PerformanceMetricsLogStorageCacheSize fun provideMetricLogStorageCacheSize(): Int = 25_000 + + /** + * Provides the maximum number of firestore-bound event logs that can be cached on disk. + * + * At a configured cache size of 30 records & estimating 376 bytes per record, it's expected that + * no more than 11.1KB will be required for cache disk space. + */ + @Provides + @FirestoreLogStorageCacheSize + fun provideFirestoreLogStorageCacheSize(): Int = 30 } diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel b/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel index 6b207de01aa..55900d4961a 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel @@ -196,4 +196,25 @@ kt_android_library( visibility = ["//:oppia_api_visibility"], ) +kt_android_library( + name = "data_controller", + srcs = [ + "FirestoreDataController.kt", + ], + visibility = ["//:oppia_api_visibility"], + deps = [ + ":dagger", + "//data/src/main/java/org/oppia/android/data/persistence:cache_store", + "//domain/src/main/java/org/oppia/android/domain/auth:authentication_controller", + "//domain/src/main/java/org/oppia/android/domain/oppialogger:prod_module", + "//model/src/main/proto:event_logger_java_proto_lite", + "//utility", + "//utility/src/main/java/org/oppia/android/util/logging:console_logger", + "//utility/src/main/java/org/oppia/android/util/logging:exception_logger", + "//utility/src/main/java/org/oppia/android/util/logging/firebase:firestore_logger_impl", + "//utility/src/main/java/org/oppia/android/util/networking:network_connection_util", + "//utility/src/main/java/org/oppia/android/util/system:oppia_clock", + ], +) + dagger_rules() diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataController.kt b/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataController.kt new file mode 100644 index 00000000000..1fc3e56df55 --- /dev/null +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataController.kt @@ -0,0 +1,169 @@ +package org.oppia.android.domain.oppialogger.analytics + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.async +import org.oppia.android.app.model.EventLog +import org.oppia.android.app.model.OppiaEventLogs +import org.oppia.android.app.model.ProfileId +import org.oppia.android.data.persistence.PersistentCacheStore +import org.oppia.android.domain.auth.AuthenticationListener +import org.oppia.android.domain.oppialogger.FirestoreLogStorageCacheSize +import org.oppia.android.util.data.AsyncResult +import org.oppia.android.util.data.DataProvider +import org.oppia.android.util.logging.ConsoleLogger +import org.oppia.android.util.logging.ExceptionLogger +import org.oppia.android.util.logging.firebase.FirestoreEventLogger +import org.oppia.android.util.networking.NetworkConnectionUtil +import org.oppia.android.util.system.OppiaClock +import org.oppia.android.util.threading.BlockingDispatcher +import javax.inject.Inject +import javax.inject.Singleton + +/** Controller for handling event logging for Firestore-bound data. */ +@Singleton +class FirestoreDataController @Inject constructor( + cacheStoreFactory: PersistentCacheStore.Factory, + private val consoleLogger: ConsoleLogger, + private val networkConnectionUtil: NetworkConnectionUtil, + private val eventLogger: FirestoreEventLogger, + private val exceptionLogger: ExceptionLogger, + private val oppiaClock: OppiaClock, + private val authenticationListener: AuthenticationListener, + @BlockingDispatcher private val blockingDispatcher: CoroutineDispatcher, + @FirestoreLogStorageCacheSize private val logStorageCacheSize: Int +) { + private val firestoreEventsStore = + cacheStoreFactory.create("firestore_data", OppiaEventLogs.getDefaultInstance()) + + /** + * Uploads all events pending currently for upload, and blocks until the events are uploaded. An + * error will be thrown if something went wrong during upload. + */ + suspend fun uploadData() { + firestoreEventsStore.readDataAsync().await().eventLogsToUploadList.forEach { eventLog -> + authenticateAndUploadToFirestore(eventLog) + } + } + + /** + * Logs a high priority event defined by [eventContext] corresponding to time [timestamp]. + * + * This will schedule a background upload of the event if there's internet connectivity, otherwise + * it will cache the event for a later upload. + */ + fun logEvent( + eventContext: EventLog.Context, + profileId: ProfileId?, + timestamp: Long = oppiaClock.getCurrentTimeMs() + ) { + CoroutineScope(blockingDispatcher).async { + uploadOrCacheEventLog(createEventLog(profileId, timestamp, eventContext)) + }.invokeOnCompletion { failure -> + failure?.let { + consoleLogger.w( + "FirestoreDataController", + "Failed to upload or cache event: $eventContext (at time $timestamp).", + it + ) + } + } + } + + /** Returns an event log containing relevant data for event reporting. */ + private fun createEventLog( + profileId: ProfileId?, + timestamp: Long, + context: EventLog.Context + ): EventLog { + return EventLog.newBuilder().apply { + this.timestamp = timestamp + this.priority = EventLog.Priority.ESSENTIAL + this.context = context + profileId?.let { this.profileId = it } + }.build() + } + + /** Either uploads or caches [eventLog] depending on current internet connectivity. */ + private suspend fun uploadOrCacheEventLog(eventLog: EventLog) { + when (networkConnectionUtil.getCurrentConnectionStatus()) { + NetworkConnectionUtil.ProdConnectionStatus.NONE -> cacheEventForFirestore(eventLog) + else -> authenticateAndUploadToFirestore(eventLog) + } + } + + private suspend fun authenticateAndUploadToFirestore(eventLog: EventLog) { + if (authenticationListener.getCurrentSignedInUser() == null) { + when (val signInResult = authenticationListener.signInAnonymously().await()) { + is AsyncResult.Success -> { + consoleLogger.i("FirestoreDataController", "Sign in succeeded") + eventLogger.uploadEvent(eventLog) + } + is AsyncResult.Failure -> { + consoleLogger.e( + "FirestoreDataController", + "Sign in failed with cause ${signInResult.error}" + ) + cacheEventForFirestore(eventLog) + } + is AsyncResult.Pending -> {} // no-op + } + } else { + eventLogger.uploadEvent(eventLog) + } + } + + /** + * Adds an event to the storage. + * + * The [eventLog] is added to the store if the size of the store isn't exceeding + * [logStorageCacheSize]. If the limit is exceeded then the least recent event is removed from the + * [firestoreEventsStore]. + */ + private fun cacheEventForFirestore(eventLog: EventLog) { + firestoreEventsStore.storeDataAsync(updateInMemoryCache = true) { eventLogs -> + val storeSize = eventLogs.eventLogsToUploadList.size + if (storeSize + 1 > logStorageCacheSize) { + val eventLogRemovalIndex = getLeastRecentEventIndex(eventLogs) + if (eventLogRemovalIndex != null) { + return@storeDataAsync eventLogs.toBuilder() + .removeEventLogsToUpload(eventLogRemovalIndex) + .addEventLogsToUpload(eventLog) + .build() + } else { + val exception = + IllegalStateException( + "Least Recent Event index absent -- FirestoreLogStorageCacheSize is 0" + ) + consoleLogger.e("FirestoreDataController", "Failure while caching event.", exception) + exceptionLogger.logException(exception) + } + } + return@storeDataAsync eventLogs.toBuilder().addEventLogsToUpload(eventLog).build() + }.invokeOnCompletion { + it?.let { consoleLogger.e("FirestoreDataController", "Failed to store event log.", it) } + } + } + + /** + * Returns the index of the least recent event from the existing store on the basis of recency and + * priority. + */ + private fun getLeastRecentEventIndex(oppiaEventLogs: OppiaEventLogs): Int? = + oppiaEventLogs.eventLogsToUploadList.withIndex().minByOrNull { it.value.timestamp }?.index + + /** Returns a data provider for log reports that have been recorded for upload. */ + fun getEventLogStore(): DataProvider = firestoreEventsStore + + /** Removes the first log report that had been recorded for upload. */ + fun removeFirstEventLogFromStore() { + println("removing first event log from store") + firestoreEventsStore.storeDataAsync(updateInMemoryCache = true) { oppiaEventLogs -> + return@storeDataAsync oppiaEventLogs.toBuilder().removeEventLogsToUpload(0).build() + }.invokeOnCompletion { + it?.let { + consoleLogger.e("FirestoreDataController", "Failed to remove event log", it) + } + } + } +} diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/BUILD.bazel b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/BUILD.bazel index ac5d1338364..58f18019799 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/BUILD.bazel +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/BUILD.bazel @@ -34,6 +34,7 @@ kt_android_library( ], deps = [ "//domain/src/main/java/org/oppia/android/domain/oppialogger/analytics:controller", + "//domain/src/main/java/org/oppia/android/domain/oppialogger/analytics:data_controller", "//domain/src/main/java/org/oppia/android/domain/oppialogger/analytics:performance_metrics_controller", "//domain/src/main/java/org/oppia/android/domain/oppialogger/exceptions:controller", "//domain/src/main/java/org/oppia/android/domain/util:extensions", diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializer.kt b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializer.kt index 5f40f82caac..ef31a5ab9dc 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializer.kt +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializer.kt @@ -55,6 +55,13 @@ class LogReportWorkManagerInitializer @Inject constructor( ) .build() + private val workerCaseForUploadingFirestoreData: Data = Data.Builder() + .putString( + LogUploadWorker.WORKER_CASE_KEY, + LogUploadWorker.FIRESTORE_WORKER + ) + .build() + private val workerCaseForSchedulingPeriodicBackgroundMetricLogs: Data = Data.Builder() .putString( MetricLogSchedulingWorker.WORKER_CASE_KEY, @@ -124,6 +131,12 @@ class LogReportWorkManagerInitializer @Inject constructor( .setConstraints(logReportWorkerConstraints) .build() + private val workRequestForUploadingFireStoreData: PeriodicWorkRequest = + PeriodicWorkRequest.Builder(LogUploadWorker::class.java, 6, TimeUnit.HOURS) + .setInputData(workerCaseForUploadingFirestoreData) + .setConstraints(logReportWorkerConstraints) + .build() + override fun onCreate(workManager: WorkManager) { logUploader.enqueueWorkRequestForEvents(workManager, workRequestForUploadingEvents) logUploader.enqueueWorkRequestForExceptions(workManager, workRequestForUploadingExceptions) @@ -131,6 +144,10 @@ class LogReportWorkManagerInitializer @Inject constructor( workManager, workRequestForUploadingPerformanceMetrics ) + logUploader.enqueueWorkRequestForFirestore( + workManager, + workRequestForUploadingFireStoreData + ) metricLogScheduler.enqueueWorkRequestForPeriodicBackgroundMetrics( workManager, workRequestForSchedulingPeriodicBackgroundMetricLogs @@ -178,6 +195,9 @@ class LogReportWorkManagerInitializer @Inject constructor( fun getWorkRequestForSchedulingPeriodicBackgroundPerformanceMetricLogsId(): UUID = workRequestForSchedulingPeriodicBackgroundMetricLogs.id + /** Returns the [UUID] of the work request that is enqueued for uploading firestore data. */ + fun getWorkRequestForFirestoreId(): UUID = workRequestForUploadingFireStoreData.id + /** * Returns the [Data] that goes into the work request that is enqueued for uploading event logs. */ @@ -212,4 +232,10 @@ class LogReportWorkManagerInitializer @Inject constructor( */ fun getWorkRequestDataForSchedulingPeriodicBackgroundPerformanceMetricLogs(): Data = workerCaseForSchedulingPeriodicBackgroundMetricLogs + + /** + * Returns the [Data] that goes into the work request that is enqueued for uploading firestore + * data. + */ + fun getWorkRequestDataForFirestore(): Data = workerCaseForUploadingFirestoreData } diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorker.kt b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorker.kt index ed860470f56..2067e04f8d6 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorker.kt +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorker.kt @@ -10,6 +10,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.async import org.oppia.android.domain.oppialogger.analytics.AnalyticsController +import org.oppia.android.domain.oppialogger.analytics.FirestoreDataController import org.oppia.android.domain.oppialogger.analytics.PerformanceMetricsController import org.oppia.android.domain.oppialogger.exceptions.ExceptionsController import org.oppia.android.domain.oppialogger.exceptions.toException @@ -29,6 +30,7 @@ class LogUploadWorker private constructor( private val exceptionsController: ExceptionsController, private val performanceMetricsController: PerformanceMetricsController, private val exceptionLogger: ExceptionLogger, + private val dataController: FirestoreDataController, private val performanceMetricsEventLogger: PerformanceMetricsEventLogger, private val consoleLogger: ConsoleLogger, private val syncStatusManager: SyncStatusManager, @@ -41,6 +43,7 @@ class LogUploadWorker private constructor( const val EVENT_WORKER = "event_worker" const val EXCEPTION_WORKER = "exception_worker" const val PERFORMANCE_METRICS_WORKER = "performance_metrics_worker" + const val FIRESTORE_WORKER = "firestore_worker" } @ExperimentalCoroutinesApi @@ -51,6 +54,7 @@ class LogUploadWorker private constructor( EVENT_WORKER -> uploadEvents() EXCEPTION_WORKER -> uploadExceptions() PERFORMANCE_METRICS_WORKER -> uploadPerformanceMetrics() + FIRESTORE_WORKER -> uploadFirestoreData() else -> Result.failure() } } @@ -111,12 +115,25 @@ class LogUploadWorker private constructor( } } + /** Extracts data from offline storage and logs them to the remote service. */ + private suspend fun uploadFirestoreData(): Result { + return try { + dataController.uploadData() + dataController.removeFirstEventLogFromStore() + Result.success() + } catch (e: Exception) { + consoleLogger.e(TAG, e.toString(), e) + Result.failure() + } + } + /** Creates an instance of [LogUploadWorker] by properly injecting dependencies. */ class Factory @Inject constructor( private val analyticsController: AnalyticsController, private val exceptionsController: ExceptionsController, private val performanceMetricsController: PerformanceMetricsController, private val exceptionLogger: ExceptionLogger, + private val dataController: FirestoreDataController, private val performanceMetricsEventLogger: PerformanceMetricsEventLogger, private val consoleLogger: ConsoleLogger, private val syncStatusManager: SyncStatusManager, @@ -130,6 +147,7 @@ class LogUploadWorker private constructor( exceptionsController, performanceMetricsController, exceptionLogger, + dataController, performanceMetricsEventLogger, consoleLogger, syncStatusManager, diff --git a/domain/src/main/java/org/oppia/android/domain/oppialogger/survey/SurveyEventsLogger.kt b/domain/src/main/java/org/oppia/android/domain/oppialogger/survey/SurveyEventsLogger.kt index 7e1178b0ca0..b79f75fa081 100644 --- a/domain/src/main/java/org/oppia/android/domain/oppialogger/survey/SurveyEventsLogger.kt +++ b/domain/src/main/java/org/oppia/android/domain/oppialogger/survey/SurveyEventsLogger.kt @@ -6,6 +6,7 @@ import org.oppia.android.app.model.ProfileId import org.oppia.android.app.model.SurveyQuestionName import org.oppia.android.app.model.UserTypeAnswer import org.oppia.android.domain.oppialogger.analytics.AnalyticsController +import org.oppia.android.domain.oppialogger.analytics.FirestoreDataController import javax.inject.Inject import javax.inject.Singleton @@ -17,6 +18,7 @@ import javax.inject.Singleton @Singleton class SurveyEventsLogger @Inject constructor( private val analyticsController: AnalyticsController, + private val dataController: FirestoreDataController ) { /** @@ -50,6 +52,14 @@ class SurveyEventsLogger @Inject constructor( ) } + /** Logs an event representing the response to the optional survey question. */ + fun logOptionalResponse(surveyId: String, profileId: ProfileId?, answer: String) { + dataController.logEvent( + createOptionalSurveyResponseContext(surveyId, profileId, answer), + profileId + ) + } + private fun createMandatorySurveyResponseContext( surveyId: String, profileId: ProfileId, @@ -88,11 +98,27 @@ class SurveyEventsLogger @Inject constructor( private fun createSurveyResponseContext( surveyId: String, - profileId: ProfileId + profileId: ProfileId? ): EventLog.SurveyResponseContext { return EventLog.SurveyResponseContext.newBuilder() - .setProfileId(profileId.internalId.toString()) + .setProfileId(profileId?.internalId.toString()) .setSurveyId(surveyId) .build() } + + private fun createOptionalSurveyResponseContext( + surveyId: String, + profileId: ProfileId?, + answer: String + ): EventLog.Context { + return EventLog.Context.newBuilder() + .setOptionalResponse( + EventLog.OptionalSurveyResponseContext.newBuilder() + .setFeedbackAnswer(answer) + .setSurveyDetails( + createSurveyResponseContext(surveyId, profileId) + ) + ) + .build() + } } diff --git a/domain/src/main/java/org/oppia/android/domain/survey/SurveyProgressController.kt b/domain/src/main/java/org/oppia/android/domain/survey/SurveyProgressController.kt index b7a612b2c1a..b1c412eca01 100644 --- a/domain/src/main/java/org/oppia/android/domain/survey/SurveyProgressController.kt +++ b/domain/src/main/java/org/oppia/android/domain/survey/SurveyProgressController.kt @@ -312,7 +312,7 @@ class SurveyProgressController @Inject constructor( controllerState.handleUpdatedQuestionsList(message.questionsList) is ControllerMessage.FinishSurveySession -> { try { - controllerState.completeSurveyImpl(message.surveyCompleted, message.callbackFlow) + controllerState.completeSurveyImpl(message.callbackFlow) } finally { // Ensure the actor ends since the session requires no further message processing. break @@ -387,10 +387,11 @@ class SurveyProgressController @Inject constructor( ) } - saveSelectedAnswer(currentQuestionId.toString(), selectedAnswer) - if (!progress.questionDeck.isCurrentQuestionTerminal()) { + saveSelectedAnswer(currentQuestionId.toString(), selectedAnswer) moveToNextQuestion() + } else { + surveyLogger.logOptionalResponse(surveyId, profileId, selectedAnswer.freeFormAnswer) } } } @@ -454,13 +455,12 @@ class SurveyProgressController @Inject constructor( } private suspend fun ControllerState.completeSurveyImpl( - surveyCompleted: Boolean, endSessionResultFlow: MutableStateFlow> ) { checkNotNull(this) { "Cannot stop a survey session which wasn't started." } tryOperation(endSessionResultFlow) { progress.advancePlayStageTo(SurveyProgress.SurveyStage.NOT_IN_SURVEY_SESSION) - finishSurveyAndLog(surveyCompleted) + finishSurveyAndLog() } } @@ -473,19 +473,8 @@ class SurveyProgressController @Inject constructor( convertAsyncToAutomaticDataProvider("${baseId}_$activeSessionId") } - private suspend fun ControllerState.finishSurveyAndLog(surveyIsComplete: Boolean) { + private suspend fun ControllerState.finishSurveyAndLog() { when { - surveyIsComplete -> { - surveyLogger.logMandatoryResponses( - surveyId, - profileId, - getStoredResponse(SurveyQuestionName.USER_TYPE)!!, - getStoredResponse(SurveyQuestionName.MARKET_FIT)!!, - getStoredResponse(SurveyQuestionName.NPS)!! - ) - - // TODO(#5001): Log the optional question response to Firestore - } progress.questionDeck.hasAnsweredAllMandatoryQuestions() -> { surveyLogger.logMandatoryResponses( surveyId, diff --git a/domain/src/main/java/org/oppia/android/domain/testing/oppialogger/loguploader/FakeLogUploader.kt b/domain/src/main/java/org/oppia/android/domain/testing/oppialogger/loguploader/FakeLogUploader.kt index 48783b794d5..a6a3aae43b1 100644 --- a/domain/src/main/java/org/oppia/android/domain/testing/oppialogger/loguploader/FakeLogUploader.kt +++ b/domain/src/main/java/org/oppia/android/domain/testing/oppialogger/loguploader/FakeLogUploader.kt @@ -13,6 +13,7 @@ class FakeLogUploader @Inject constructor() : LogUploader { private val eventRequestIdList = mutableListOf() private val exceptionRequestIdList = mutableListOf() private val performanceMetricsRequestIdList = mutableListOf() + private val firestoreRequestIdList = mutableListOf() override fun enqueueWorkRequestForEvents( workManager: WorkManager, @@ -35,6 +36,13 @@ class FakeLogUploader @Inject constructor() : LogUploader { performanceMetricsRequestIdList.add(workRequest.id) } + override fun enqueueWorkRequestForFirestore( + workManager: WorkManager, + workRequest: PeriodicWorkRequest + ) { + firestoreRequestIdList.add(workRequest.id) + } + /** Returns the most recent work request id that's stored in the [eventRequestIdList]. */ fun getMostRecentEventRequestId() = eventRequestIdList.last() @@ -43,4 +51,7 @@ class FakeLogUploader @Inject constructor() : LogUploader { /** Returns the most recent work request id that's stored in the [performanceMetricsRequestIdList]. */ fun getMostRecentPerformanceMetricsRequestId() = performanceMetricsRequestIdList.last() + + /** Returns the most recent work request id that's stored in the [firestoreRequestIdList]. */ + fun getMostRecentFirestoreRequestId() = firestoreRequestIdList.last() } diff --git a/domain/src/test/java/org/oppia/android/domain/audio/AudioPlayerControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/audio/AudioPlayerControllerTest.kt index 1730f091d1b..baa73089f5b 100644 --- a/domain/src/test/java/org/oppia/android/domain/audio/AudioPlayerControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/audio/AudioPlayerControllerTest.kt @@ -53,6 +53,7 @@ import org.oppia.android.domain.profile.ProfileManagementController import org.oppia.android.domain.topic.TEST_EXPLORATION_ID_5 import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.FakeExceptionLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.data.AsyncResultSubject.Companion.assertThat @@ -874,6 +875,7 @@ class AudioPlayerControllerTest { NumericExpressionInputModule::class, AlgebraicExpressionInputModule::class, MathEquationInputModule::class, CachingTestModule::class, HintsAndSolutionProdModule::class, HintsAndSolutionConfigModule::class, LoggerModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationDataControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationDataControllerTest.kt index 70fdb3df2b9..8aab3fe63ad 100644 --- a/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationDataControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationDataControllerTest.kt @@ -50,6 +50,7 @@ import org.oppia.android.domain.topic.TEST_STORY_ID_2 import org.oppia.android.domain.topic.TEST_TOPIC_ID_0 import org.oppia.android.domain.topic.TEST_TOPIC_ID_1 import org.oppia.android.testing.FakeExceptionLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.environment.TestEnvironmentConfig @@ -401,7 +402,8 @@ class ExplorationDataControllerTest { AlgebraicExpressionInputModule::class, MathEquationInputModule::class, LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, PlatformParameterModule::class, - PlatformParameterSingletonModule::class, ExplorationProgressModule::class + PlatformParameterSingletonModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationProgressControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationProgressControllerTest.kt index ed37c3bc9b8..c6a4ee580bc 100644 --- a/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationProgressControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/exploration/ExplorationProgressControllerTest.kt @@ -83,6 +83,7 @@ import org.oppia.android.testing.FakeAnalyticsEventLogger import org.oppia.android.testing.FakeExceptionLogger import org.oppia.android.testing.OppiaTestRule import org.oppia.android.testing.RunOn +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.data.DataProviderTestMonitor @@ -3207,7 +3208,7 @@ class ExplorationProgressControllerTest { AlgebraicExpressionInputModule::class, MathEquationInputModule::class, LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, PlatformParameterSingletonModule::class, - ExplorationProgressModule::class + ExplorationProgressModule::class, TestAuthenticationModule::class ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/exploration/lightweightcheckpointing/ExplorationCheckpointControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/exploration/lightweightcheckpointing/ExplorationCheckpointControllerTest.kt index cb189de92ba..6256ff55290 100644 --- a/domain/src/test/java/org/oppia/android/domain/exploration/lightweightcheckpointing/ExplorationCheckpointControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/exploration/lightweightcheckpointing/ExplorationCheckpointControllerTest.kt @@ -49,6 +49,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterModule import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModule import org.oppia.android.domain.topic.FRACTIONS_EXPLORATION_ID_0 import org.oppia.android.domain.topic.FRACTIONS_EXPLORATION_ID_1 +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.environment.TestEnvironmentConfig @@ -1000,7 +1001,7 @@ class ExplorationCheckpointControllerTest { AlgebraicExpressionInputModule::class, MathEquationInputModule::class, RatioInputModule::class, ImageClickInputModule::class, InteractionsModule::class, HintsAndSolutionConfigModule::class, HintsAndSolutionProdModule::class, - ExplorationProgressModule::class, + ExplorationProgressModule::class, TestAuthenticationModule::class ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataControllerTest.kt new file mode 100644 index 00000000000..aba1e4fc91f --- /dev/null +++ b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/FirestoreDataControllerTest.kt @@ -0,0 +1,465 @@ +package org.oppia.android.domain.oppialogger.analytics + +import android.app.Application +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.google.common.truth.Truth.assertThat +import dagger.Binds +import dagger.BindsInstance +import dagger.Component +import dagger.Module +import dagger.Provides +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.async +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.oppia.android.app.model.EventLog +import org.oppia.android.app.model.OppiaEventLogs +import org.oppia.android.app.model.ProfileId +import org.oppia.android.app.model.SurveyQuestionName +import org.oppia.android.data.persistence.PersistentCacheStore +import org.oppia.android.domain.auth.AuthenticationListener +import org.oppia.android.domain.oppialogger.FirestoreLogStorageCacheSize +import org.oppia.android.domain.platformparameter.PlatformParameterModule +import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModule +import org.oppia.android.testing.FakeAuthenticationController +import org.oppia.android.testing.FakeFirestoreEventLogger +import org.oppia.android.testing.TestLogReportingModule +import org.oppia.android.testing.data.DataProviderTestMonitor +import org.oppia.android.testing.logging.EventLogSubject +import org.oppia.android.testing.robolectric.RobolectricModule +import org.oppia.android.testing.threading.TestCoroutineDispatchers +import org.oppia.android.testing.threading.TestDispatcherModule +import org.oppia.android.testing.time.FakeOppiaClock +import org.oppia.android.testing.time.FakeOppiaClockModule +import org.oppia.android.util.data.AsyncResult +import org.oppia.android.util.data.DataProvidersInjector +import org.oppia.android.util.data.DataProvidersInjectorProvider +import org.oppia.android.util.locale.LocaleProdModule +import org.oppia.android.util.logging.EnableConsoleLog +import org.oppia.android.util.logging.EnableFileLog +import org.oppia.android.util.logging.GlobalLogLevel +import org.oppia.android.util.logging.LogLevel +import org.oppia.android.util.logging.SyncStatusModule +import org.oppia.android.util.networking.NetworkConnectionDebugUtil +import org.oppia.android.util.networking.NetworkConnectionUtil +import org.oppia.android.util.networking.NetworkConnectionUtilDebugModule +import org.oppia.android.util.threading.BackgroundDispatcher +import org.robolectric.annotation.Config +import org.robolectric.annotation.LooperMode +import javax.inject.Inject +import javax.inject.Provider +import javax.inject.Singleton + +@Suppress("FunctionName", "SameParameterValue") +@RunWith(AndroidJUnit4::class) +@LooperMode(LooperMode.Mode.PAUSED) +@Config(application = FirestoreDataControllerTest.TestApplication::class) +class FirestoreDataControllerTest { + @Inject + lateinit var dataControllerProvider: Provider + + @Inject + lateinit var testCoroutineDispatchers: TestCoroutineDispatchers + + @Inject + lateinit var oppiaClock: FakeOppiaClock + + @Inject + lateinit var fakeFirestoreEventLogger: FakeFirestoreEventLogger + + @Inject + lateinit var networkConnectionUtil: NetworkConnectionDebugUtil + + @Inject + lateinit var monitorFactory: DataProviderTestMonitor.Factory + + @field:[Inject BackgroundDispatcher] + lateinit var backgroundDispatcher: CoroutineDispatcher + + @Inject + lateinit var persistentCacheStoryFactory: PersistentCacheStore.Factory + + private val profileId by lazy { ProfileId.newBuilder().apply { internalId = 0 }.build() } + + private val dataController by lazy { dataControllerProvider.get() } + + @Before + fun setUp() { + setUpTestApplicationComponent() + } + + @Test + fun testController_logEvent_withOptionalSurveyQuestionContext_checkLogsEvent() { + logOptionalSurveyResponseEvent() + + val eventLog = fakeFirestoreEventLogger.getMostRecentEvent() + + EventLogSubject.assertThat(eventLog).hasTimestampThat().isEqualTo(TEST_TIMESTAMP) + EventLogSubject.assertThat(eventLog).isEssentialPriority() + EventLogSubject.assertThat(eventLog).hasOptionalSurveyResponseContext() + } + + @Test + fun testController_logEvent_noProfile_hasNoProfileId() { + dataController.logEvent( + createOptionalSurveyResponseContext( + surveyId = TEST_SURVEY_ID, + profileId = null, + answer = TEST_ANSWER + ), + profileId = null, + TEST_TIMESTAMP + ) + testCoroutineDispatchers.runCurrent() + + val eventLog = fakeFirestoreEventLogger.getMostRecentEvent() + assertThat(eventLog.hasProfileId()).isFalse() + } + + @Test + fun testController_logEvent_withProfile_includesProfileId() { + logOptionalSurveyResponseEvent() + + val eventLog = fakeFirestoreEventLogger.getMostRecentEvent() + assertThat(eventLog.hasProfileId()).isTrue() + EventLogSubject.assertThat(eventLog).hasProfileIdThat().isEqualTo(profileId) + } + + @Test + fun testController_logEvent_withNoNetwork_exceedLimit_checkEventLogStoreSize() { + networkConnectionUtil.setCurrentConnectionStatus( + NetworkConnectionUtil.ProdConnectionStatus.NONE + ) + logFourEvents() + + val eventLogsProvider = dataController.getEventLogStore() + + val eventLogs = monitorFactory.waitForNextSuccessfulResult(eventLogsProvider) + assertThat(eventLogs.eventLogsToUploadList).hasSize(2) + assertThat(eventLogs.uploadedEventLogsList).isEmpty() + } + + @Test + fun testController_logEvents_exceedLimit_withNoNetwork_checkCorrectEventIsEvicted() { + networkConnectionUtil.setCurrentConnectionStatus( + NetworkConnectionUtil.ProdConnectionStatus.NONE + ) + logFourEvents() + + val logsProvider = dataController.getEventLogStore() + + val eventLogs = monitorFactory.waitForNextSuccessfulResult(logsProvider) + val firstEventLog = eventLogs.getEventLogsToUpload(0) + val secondEventLog = eventLogs.getEventLogsToUpload(1) + assertThat(eventLogs.eventLogsToUploadList).hasSize(2) + + // The pruning will be purely based on timestamp of the event as all the event logs have + // ESSENTIAL priority. + EventLogSubject.assertThat(firstEventLog).hasTimestampThat().isEqualTo(1556094120000) + EventLogSubject.assertThat(secondEventLog).hasTimestampThat().isEqualTo(1556094100000) + } + + @Test + fun testController_uploadEventLogs_noLogs_cacheUnchanged() { + setUpTestApplicationComponent() + val monitor = monitorFactory.createMonitor(dataController.getEventLogStore()) + + runSynchronously { dataController.uploadData() } + + val logs = monitor.ensureNextResultIsSuccess() + assertThat(logs.eventLogsToUploadList).isEmpty() + assertThat(logs.uploadedEventLogsList).isEmpty() + } + + @Test + fun testController_uploadEventLogs_withPreviousLogs_recordsEventsAsUploaded() { + setUpTestApplicationComponent() + logTwoEvents() + + runSynchronously { dataController.uploadData() } + + assertThat(fakeFirestoreEventLogger.getEventListCount()).isEqualTo(2) + } + + @Test + fun testController_uploadEventLogs_withLogs_recordsEventsAsUploaded() { + setUpTestApplicationComponent() + logTwoEventsOffline() + + runSynchronously { dataController.uploadData() } + + assertThat(fakeFirestoreEventLogger.getEventListCount()).isEqualTo(2) + } + + @Test + fun testController_uploadEventLogsAndWait_noLogs_cacheUnchanged() { + setUpTestApplicationComponent() + val monitor = monitorFactory.createMonitor(dataController.getEventLogStore()) + + runSynchronously { dataController.uploadData() } + + val logs = monitor.ensureNextResultIsSuccess() + assertThat(logs.eventLogsToUploadList).isEmpty() + assertThat(logs.uploadedEventLogsList).isEmpty() + } + + @Test + fun testController_cachedEventsFromLastAppInstance_logNewEvent_thenForceSync_everythingUploads() { + // Simulate events being logged in a previous instance of the app. + logTwoCachedEventsDirectlyOnDisk() + + dataController.logEvent( + createAbandonSurveyContext( + TEST_SURVEY_ID, + profileId, + SurveyQuestionName.MARKET_FIT + ), + profileId = profileId + ) + testCoroutineDispatchers.runCurrent() + + runSynchronously { dataController.uploadData() } + + // The force sync should ensure everything is uploaded. NOTE TO DEVELOPER: If this test is + // failing, it may be due to FirestoreDataController being created before + // logTwoCachedEventsDirectlyOnDisk is called above. If that's the case, use the indirect + // injection pattern at the top of the test suite (for FirestoreDataController itself) to ensure + // whichever dependency is injecting FirestoreDataController is also only injected when needed + // (i.e. using a Provider). + assertThat(fakeFirestoreEventLogger.getEventListCount()).isEqualTo(3) + } + + private fun createAbandonSurveyContext( + surveyId: String, + profileId: ProfileId, + questionName: SurveyQuestionName + ): EventLog.Context { + return EventLog.Context.newBuilder() + .setAbandonSurvey( + EventLog.AbandonSurveyContext.newBuilder() + .setQuestionName(questionName) + .setSurveyDetails( + createSurveyResponseContext(surveyId, profileId) + ) + ) + .build() + } + + private fun runSynchronously(operation: suspend () -> Unit) = + CoroutineScope(backgroundDispatcher).async { operation() }.waitForSuccessfulResult() + + private fun logTwoEvents() { + logOptionalSurveyResponseEvent() + logOptionalSurveyResponseEvent(timestamp = 1556094110000) + } + + private fun logTwoEventsOffline() { + networkConnectionUtil.setCurrentConnectionStatus( + NetworkConnectionUtil.ProdConnectionStatus.NONE + ) + logTwoEvents() + networkConnectionUtil.setCurrentConnectionStatus( + NetworkConnectionUtil.ProdConnectionStatus.LOCAL + ) + } + + private fun logTwoCachedEventsDirectlyOnDisk() { + persistentCacheStoryFactory.create( + "firestore_data", OppiaEventLogs.getDefaultInstance() + ).storeDataAsync { + OppiaEventLogs.newBuilder().apply { + addEventLogsToUpload( + createEventLog( + context = createOptionalSurveyResponseContext( + surveyId = TEST_SURVEY_ID, + profileId = profileId, + answer = TEST_ANSWER + ) + ) + ) + addEventLogsToUpload( + createEventLog( + context = createOptionalSurveyResponseContext( + surveyId = TEST_SURVEY_ID, + profileId = profileId, + answer = TEST_ANSWER + ) + ) + ) + }.build() + }.waitForSuccessfulResult() + } + + private fun Deferred.waitForSuccessfulResult() { + return when (val result = waitForResult()) { + is AsyncResult.Pending -> error("Deferred never finished.") + is AsyncResult.Success -> {} // Nothing to do; the result succeeded. + is AsyncResult.Failure -> throw IllegalStateException("Deferred failed", result.error) + } + } + + private fun Deferred.waitForResult() = toStateFlow().waitForLatestValue() + + private fun Deferred.toStateFlow(): StateFlow> { + val deferred = this + return MutableStateFlow>(value = AsyncResult.Pending()).also { flow -> + CoroutineScope(backgroundDispatcher).async { + flow.emit(AsyncResult.Success(deferred.await())) + }.invokeOnCompletion { + it?.let { flow.tryEmit(AsyncResult.Failure(it)) } + } + } + } + + private fun StateFlow.waitForLatestValue(): T = + also { testCoroutineDispatchers.runCurrent() }.value + + private fun createEventLog( + context: EventLog.Context, + priority: EventLog.Priority = EventLog.Priority.ESSENTIAL, + timestamp: Long = oppiaClock.getCurrentTimeMs() + ) = EventLog.newBuilder().apply { + this.timestamp = timestamp + this.priority = priority + this.context = context + }.build() + + private fun logFourEvents() { + logOptionalSurveyResponseEvent(timestamp = 1556094120000) + logOptionalSurveyResponseEvent(timestamp = 1556094110000) + logOptionalSurveyResponseEvent(timestamp = 1556093100000) + logOptionalSurveyResponseEvent(timestamp = 1556094100000) + } + + private fun logOptionalSurveyResponseEvent(timestamp: Long = TEST_TIMESTAMP) { + dataController.logEvent( + createOptionalSurveyResponseContext( + surveyId = TEST_SURVEY_ID, + profileId = profileId, + answer = TEST_ANSWER + ), + profileId, + timestamp + ) + testCoroutineDispatchers.runCurrent() + } + + private fun createOptionalSurveyResponseContext( + surveyId: String, + profileId: ProfileId?, + answer: String + ): EventLog.Context { + return EventLog.Context.newBuilder() + .setOptionalResponse( + EventLog.OptionalSurveyResponseContext.newBuilder() + .setFeedbackAnswer(answer) + .setSurveyDetails( + createSurveyResponseContext(surveyId, profileId) + ) + ) + .build() + } + + private fun createSurveyResponseContext( + surveyId: String, + profileId: ProfileId? + ): EventLog.SurveyResponseContext { + return EventLog.SurveyResponseContext.newBuilder() + .setProfileId(profileId?.internalId.toString()) + .setSurveyId(surveyId) + .build() + } + + private fun setUpTestApplicationComponent() { + ApplicationProvider.getApplicationContext().inject(this) + } + + private companion object { + private const val TEST_SURVEY_ID = "test_survey_id" + private const val TEST_ANSWER = "Some text response" + private const val TEST_TIMESTAMP = 1556094120000 + } + + // TODO(#89): Move this to a common test application component. + @Module + class TestModule { + @Provides + @Singleton + fun provideContext(application: Application): Context { + return application + } + + // TODO(#59): Either isolate these to their own shared test module, or use the real logging + // module in tests to avoid needing to specify these settings for tests. + @EnableConsoleLog + @Provides + fun provideEnableConsoleLog(): Boolean = true + + @EnableFileLog + @Provides + fun provideEnableFileLog(): Boolean = false + + @GlobalLogLevel + @Provides + fun provideGlobalLogLevel(): LogLevel = LogLevel.VERBOSE + } + + @Module + class TestLogStorageModule { + @Provides + @FirestoreLogStorageCacheSize + fun provideFirestoreLogStorageCacheSize(): Int = 2 + } + + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + + // TODO(#89): Move this to a common test application component. + @Singleton + @Component( + modules = [ + TestModule::class, TestLogReportingModule::class, TestLogStorageModule::class, + TestDispatcherModule::class, RobolectricModule::class, FakeOppiaClockModule::class, + NetworkConnectionUtilDebugModule::class, LocaleProdModule::class, + PlatformParameterSingletonModule::class, SyncStatusModule::class, + ApplicationLifecycleModule::class, PlatformParameterModule::class, + CpuPerformanceSnapshotterModule::class, TestAuthModule::class, + ] + ) + interface TestApplicationComponent : DataProvidersInjector { + @Component.Builder + interface Builder { + @BindsInstance + fun setApplication(application: Application): Builder + fun build(): TestApplicationComponent + } + + fun inject(dataControllerTest: FirestoreDataControllerTest) + } + + class TestApplication : Application(), DataProvidersInjectorProvider { + private val component: TestApplicationComponent by lazy { + DaggerFirestoreDataControllerTest_TestApplicationComponent.builder() + .setApplication(this) + .build() + } + + fun inject(dataControllerTest: FirestoreDataControllerTest) { + component.inject(dataControllerTest) + } + + override fun getDataProvidersInjector(): DataProvidersInjector = component + } +} diff --git a/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/LearnerAnalyticsLoggerTest.kt b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/LearnerAnalyticsLoggerTest.kt index 462dd3f04ad..74ab58fe35e 100644 --- a/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/LearnerAnalyticsLoggerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/LearnerAnalyticsLoggerTest.kt @@ -43,6 +43,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.topic.TEST_EXPLORATION_ID_2 import org.oppia.android.domain.topic.TEST_EXPLORATION_ID_5 import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.junit.OppiaParameterizedTestRunner @@ -1838,6 +1839,7 @@ class LearnerAnalyticsLoggerTest { MathEquationInputModule::class, ImageClickInputModule::class, AssetModule::class, HintsAndSolutionConfigModule::class, HintsAndSolutionProdModule::class, CachingTestModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/SurveyEventsLoggerTest.kt b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/SurveyEventsLoggerTest.kt index 4a5e3723f33..75e3342956a 100644 --- a/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/SurveyEventsLoggerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/SurveyEventsLoggerTest.kt @@ -4,6 +4,7 @@ import android.app.Application import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 +import dagger.Binds import dagger.BindsInstance import dagger.Component import dagger.Module @@ -15,12 +16,16 @@ import org.oppia.android.app.model.MarketFitAnswer import org.oppia.android.app.model.ProfileId import org.oppia.android.app.model.SurveyQuestionName import org.oppia.android.app.model.UserTypeAnswer +import org.oppia.android.domain.auth.AuthenticationListener import org.oppia.android.domain.oppialogger.EventLogStorageCacheSize import org.oppia.android.domain.oppialogger.ExceptionLogStorageCacheSize +import org.oppia.android.domain.oppialogger.FirestoreLogStorageCacheSize import org.oppia.android.domain.oppialogger.LoggingIdentifierModule import org.oppia.android.domain.oppialogger.survey.SurveyEventsLogger import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.FakeAuthenticationController +import org.oppia.android.testing.FakeFirestoreEventLogger import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.logging.EventLogSubject.Companion.assertThat import org.oppia.android.testing.logging.SyncStatusTestModule @@ -52,6 +57,7 @@ import javax.inject.Singleton class SurveyEventsLoggerTest { private companion object { private const val TEST_SURVEY_ID = "test_survey_id" + private const val TEST_ANSWER = "Some text response" } @Inject @@ -60,6 +66,9 @@ class SurveyEventsLoggerTest { @Inject lateinit var fakeAnalyticsEventLogger: FakeAnalyticsEventLogger + @Inject + lateinit var fakeFirestoreEventLogger: FakeFirestoreEventLogger + @Inject lateinit var testCoroutineDispatchers: TestCoroutineDispatchers @@ -110,6 +119,26 @@ class SurveyEventsLoggerTest { } } + @Test + fun testLogOptionalResponse_logsEventWithCorrectValues() { + surveyEventsLogger.logOptionalResponse( + TEST_SURVEY_ID, + profileId, + TEST_ANSWER + ) + testCoroutineDispatchers.runCurrent() + + val eventLog = fakeFirestoreEventLogger.getMostRecentEvent() + + assertThat(eventLog).hasOptionalSurveyResponseContextThat { + hasSurveyDetailsThat { + hasSurveyIdThat().isNotEmpty() + hasInternalProfileIdThat().isEqualTo("0") + } + hasFeedbackAnswerThat().isEqualTo(TEST_ANSWER) + } + } + private fun setUpTestApplicationComponent() { DaggerSurveyEventsLoggerTest_TestApplicationComponent.builder() .setApplication(ApplicationProvider.getApplicationContext()) @@ -150,6 +179,18 @@ class SurveyEventsLoggerTest { @Provides @ExceptionLogStorageCacheSize fun provideExceptionLogStorageCacheSize(): Int = 2 + + @Provides + @FirestoreLogStorageCacheSize + fun provideFirestoreLogStorageCacheSize(): Int = 2 + } + + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener } // TODO(#89): Move this to a common test application component. @@ -161,7 +202,7 @@ class SurveyEventsLoggerTest { NetworkConnectionUtilDebugModule::class, LocaleProdModule::class, FakeOppiaClockModule::class, TestPlatformParameterModule::class, PlatformParameterSingletonModule::class, LoggingIdentifierModule::class, SyncStatusTestModule::class, - ApplicationLifecycleModule::class, AssetModule::class + ApplicationLifecycleModule::class, AssetModule::class, TestAuthModule::class, ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializerTest.kt b/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializerTest.kt index cded74aa82b..f17d280d40a 100644 --- a/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogReportWorkManagerInitializerTest.kt @@ -22,8 +22,10 @@ import dagger.Provides import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.oppia.android.domain.auth.AuthenticationListener import org.oppia.android.domain.oppialogger.EventLogStorageCacheSize import org.oppia.android.domain.oppialogger.ExceptionLogStorageCacheSize +import org.oppia.android.domain.oppialogger.FirestoreLogStorageCacheSize import org.oppia.android.domain.oppialogger.LoggingIdentifierModule import org.oppia.android.domain.oppialogger.OppiaLogger import org.oppia.android.domain.oppialogger.PerformanceMetricsLogStorageCacheSize @@ -36,6 +38,7 @@ import org.oppia.android.domain.oppialogger.logscheduler.MetricLogSchedulingWork import org.oppia.android.domain.platformparameter.PlatformParameterModule import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModule import org.oppia.android.domain.testing.oppialogger.loguploader.FakeLogUploader +import org.oppia.android.testing.FakeAuthenticationController import org.oppia.android.testing.FakeExceptionLogger import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.robolectric.RobolectricModule @@ -131,6 +134,8 @@ class LogReportWorkManagerInitializerTest { val enqueuedSchedulingPeriodicBackgroundPerformanceMetricWorkRequestId = logReportWorkManagerInitializer .getWorkRequestForSchedulingPeriodicBackgroundPerformanceMetricLogsId() + val enqueuedFirestoreWorkRequestId = + logReportWorkManagerInitializer.getWorkRequestForFirestoreId() assertThat(fakeLogUploader.getMostRecentEventRequestId()).isEqualTo(enqueuedEventWorkRequestId) assertThat(fakeLogUploader.getMostRecentExceptionRequestId()).isEqualTo( @@ -148,6 +153,9 @@ class LogReportWorkManagerInitializerTest { assertThat(fakeLogScheduler.getMostRecentPeriodicBackgroundMetricLoggingRequestId()).isEqualTo( enqueuedSchedulingPeriodicBackgroundPerformanceMetricWorkRequestId ) + assertThat(fakeLogUploader.getMostRecentFirestoreRequestId()).isEqualTo( + enqueuedFirestoreWorkRequestId + ) } @Test @@ -248,6 +256,20 @@ class LogReportWorkManagerInitializerTest { ).isEqualTo(workerCaseForSchedulingMemoryUsageMetricLogs) } + @Test + fun testWorkRequest_verifyWorkRequestData_forSchedulingFirestoreUpload() { + val workerCaseForUploadingFirestoreData: Data = Data.Builder() + .putString( + LogUploadWorker.WORKER_CASE_KEY, + LogUploadWorker.FIRESTORE_WORKER + ) + .build() + + assertThat( + logReportWorkManagerInitializer.getWorkRequestDataForFirestore() + ).isEqualTo(workerCaseForUploadingFirestoreData) + } + private fun setUpTestApplicationComponent() { ApplicationProvider.getApplicationContext().inject(this) } @@ -276,6 +298,10 @@ class LogReportWorkManagerInitializerTest { @Provides @PerformanceMetricsLogStorageCacheSize fun providePerformanceMetricsLogStorageCacheSize(): Int = 2 + + @Provides + @FirestoreLogStorageCacheSize + fun provideFirestoreLogStorageCacheSize(): Int = 2 } @Module @@ -288,6 +314,15 @@ class LogReportWorkManagerInitializerTest { fun bindsFakeLogScheduler(fakeLogScheduler: FakeLogScheduler): MetricLogScheduler } + @Module + interface + TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + // TODO(#89): Move this to a common test application component. @Singleton @Component( @@ -299,7 +334,7 @@ class LogReportWorkManagerInitializerTest { LoggerModule::class, AssetModule::class, LoggerModule::class, PlatformParameterModule::class, PlatformParameterSingletonModule::class, LoggingIdentifierModule::class, SyncStatusModule::class, ApplicationLifecycleModule::class, - CpuPerformanceSnapshotterModule::class + CpuPerformanceSnapshotterModule::class, TestAuthModule::class, ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorkerTest.kt b/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorkerTest.kt index 4f4b2a1ca65..cb8c56cb30b 100644 --- a/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorkerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/oppialogger/loguploader/LogUploadWorkerTest.kt @@ -27,19 +27,24 @@ import org.mockito.Mockito.reset import org.oppia.android.app.model.EventLog import org.oppia.android.app.model.OppiaMetricLog import org.oppia.android.app.model.ScreenName.SCREEN_NAME_UNSPECIFIED +import org.oppia.android.domain.auth.AuthenticationListener import org.oppia.android.domain.oppialogger.EventLogStorageCacheSize import org.oppia.android.domain.oppialogger.ExceptionLogStorageCacheSize +import org.oppia.android.domain.oppialogger.FirestoreLogStorageCacheSize import org.oppia.android.domain.oppialogger.LoggingIdentifierModule import org.oppia.android.domain.oppialogger.OppiaLogger import org.oppia.android.domain.oppialogger.PerformanceMetricsLogStorageCacheSize import org.oppia.android.domain.oppialogger.analytics.AnalyticsController import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule +import org.oppia.android.domain.oppialogger.analytics.FirestoreDataController import org.oppia.android.domain.oppialogger.analytics.PerformanceMetricsController import org.oppia.android.domain.oppialogger.exceptions.ExceptionsController import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModule import org.oppia.android.domain.testing.oppialogger.loguploader.FakeLogUploader import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.FakeAuthenticationController import org.oppia.android.testing.FakeExceptionLogger +import org.oppia.android.testing.FakeFirestoreEventLogger import org.oppia.android.testing.FakePerformanceMetricsEventLogger import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.logging.SyncStatusTestModule @@ -64,6 +69,7 @@ import org.oppia.android.util.logging.SyncStatusManager.SyncStatus.DATA_UPLOADIN import org.oppia.android.util.logging.SyncStatusManager.SyncStatus.INITIAL_UNKNOWN import org.oppia.android.util.logging.SyncStatusManager.SyncStatus.NO_CONNECTIVITY import org.oppia.android.util.logging.SyncStatusManager.SyncStatus.UPLOAD_ERROR +import org.oppia.android.util.logging.firebase.FirestoreEventLogger import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsAssessorModule import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsConfigurationsModule import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsEventLogger @@ -92,8 +98,10 @@ class LogUploadWorkerTest { @Inject lateinit var fakeAnalyticsEventLogger: FakeAnalyticsEventLogger @Inject lateinit var fakeExceptionLogger: FakeExceptionLogger @Inject lateinit var fakePerformanceMetricsEventLogger: FakePerformanceMetricsEventLogger + @Inject lateinit var fakeFirestoreEventLogger: FakeFirestoreEventLogger @Inject lateinit var oppiaLogger: OppiaLogger @Inject lateinit var analyticsController: AnalyticsController + @Inject lateinit var dataController: FirestoreDataController @Inject lateinit var exceptionsController: ExceptionsController @Inject lateinit var performanceMetricsController: PerformanceMetricsController @Inject lateinit var logUploadWorkerFactory: LogUploadWorkerFactory @@ -102,6 +110,8 @@ class LogUploadWorkerTest { @Inject lateinit var testSyncStatusManager: TestSyncStatusManager @Inject lateinit var monitorFactory: DataProviderTestMonitor.Factory @field:[Inject MockEventLogger] lateinit var mockAnalyticsEventLogger: AnalyticsEventLogger + @field:[Inject MockFirestoreEventLogger] + lateinit var mockFirestoreEventLogger: FirestoreEventLogger private lateinit var context: Context @@ -402,6 +412,95 @@ class LogUploadWorkerTest { assertThat(currentStatus).isEqualTo(NO_CONNECTIVITY) } + @Test + fun testWorker_logFirestoreEvent_withNetwork_enqueueRequest_verifySuccess() { + setUpTestApplicationComponent() + networkConnectionUtil.setCurrentConnectionStatus(NONE) + dataController.logEvent( + createOptionalSurveyResponseContext(), + profileId = null, + 1556094120000 + ) + networkConnectionUtil.setCurrentConnectionStatus(LOCAL) + testCoroutineDispatchers.runCurrent() + + val workManager = WorkManager.getInstance(ApplicationProvider.getApplicationContext()) + + val inputData = Data.Builder().putString( + LogUploadWorker.WORKER_CASE_KEY, + LogUploadWorker.FIRESTORE_WORKER + ).build() + + val request: OneTimeWorkRequest = OneTimeWorkRequestBuilder() + .setInputData(inputData) + .build() + + workManager.enqueue(request) + testCoroutineDispatchers.runCurrent() + val workInfo = workManager.getWorkInfoById(request.id) + + assertThat(workInfo.get().state).isEqualTo(WorkInfo.State.SUCCEEDED) + assertThat(fakeFirestoreEventLogger.getMostRecentEvent()).isEqualTo( + optionalSurveyResponseEventLog + ) + } + + @Test + fun testWorker_logFirestoreEvent_withoutNetwork_enqueueRequest_writeFails_verifyFailure() { + setUpTestApplicationComponent() + networkConnectionUtil.setCurrentConnectionStatus(NONE) + dataController.logEvent( + createOptionalSurveyResponseContext(), + profileId = null, + 1556094120000 + ) + testCoroutineDispatchers.runCurrent() + + val workManager = WorkManager.getInstance(ApplicationProvider.getApplicationContext()) + + val inputData = Data.Builder().putString( + LogUploadWorker.WORKER_CASE_KEY, + LogUploadWorker.FIRESTORE_WORKER + ).build() + + val request: OneTimeWorkRequest = OneTimeWorkRequestBuilder() + .setInputData(inputData) + .build() + + setUpFirestoreEventLoggerToFail() + workManager.enqueue(request) + testCoroutineDispatchers.runCurrent() + val workInfo = workManager.getWorkInfoById(request.id) + + assertThat(workInfo.get().state).isEqualTo(WorkInfo.State.FAILED) + assertThat(fakeFirestoreEventLogger.noEventsPresent()).isTrue() + } + + private val optionalSurveyResponseEventLog = EventLog.newBuilder().apply { + this.context = createOptionalSurveyResponseContext() + this.timestamp = TEST_TIMESTAMP + this.priority = EventLog.Priority.ESSENTIAL + } + .build() + + private fun createOptionalSurveyResponseContext(): EventLog.Context { + return EventLog.Context.newBuilder() + .setOptionalResponse( + EventLog.OptionalSurveyResponseContext.newBuilder() + .setFeedbackAnswer("answer") + .setSurveyDetails( + createSurveyResponseContext() + ) + ) + .build() + } + + private fun createSurveyResponseContext(): EventLog.SurveyResponseContext { + return EventLog.SurveyResponseContext.newBuilder() + .setSurveyId("test_survey_id") + .build() + } + private fun setUpEventLoggerToFail() { // Simulate the log attempt itself failing during the job. Note that the reset is necessary here // to remove the default stubbing for the mock so that it can properly trigger a failure. @@ -410,6 +509,14 @@ class LogUploadWorkerTest { .thenThrow(IllegalStateException("Failure.")) } + private fun setUpFirestoreEventLoggerToFail() { + // Simulate the log attempt itself failing during the job. Note that the reset is necessary here + // to remove the default stubbing for the mock so that it can properly trigger a failure. + reset(mockFirestoreEventLogger) + `when`(mockFirestoreEventLogger.uploadEvent(anyOrNull())) + .thenThrow(IllegalStateException("Failure.")) + } + /** * Returns a list of lists of each relevant element of a [StackTraceElement] to be used for * comparison in a way that's consistent across JDK versions. @@ -431,6 +538,9 @@ class LogUploadWorkerTest { @Qualifier annotation class MockEventLogger + @Qualifier + annotation class MockFirestoreEventLogger + // TODO(#89): Move this to a common test application component. @Module class TestModule { @@ -451,6 +561,21 @@ class LogUploadWorkerTest { } } + @Provides + @Singleton + @MockFirestoreEventLogger + fun bindMockFirestoreEventLogger(fakeFirestoreLogger: FakeFirestoreEventLogger): + FirestoreEventLogger { + return mock(FirestoreEventLogger::class.java).also { + `when`(it.uploadEvent(anyOrNull())).then { answer -> + fakeFirestoreLogger.uploadEvent( + answer.getArgument(/* index= */ 0, /* clazz= */ EventLog::class.java) + ) + return@then null + } + } + } + @Provides fun bindFakeEventLogger(@MockEventLogger delegate: AnalyticsEventLogger): AnalyticsEventLogger = delegate @@ -462,6 +587,11 @@ class LogUploadWorkerTest { fun bindFakePerformanceMetricsLogger( fakePerformanceMetricsEventLogger: FakePerformanceMetricsEventLogger ): PerformanceMetricsEventLogger = fakePerformanceMetricsEventLogger + + @Provides + fun bindFakeFirestoreEventLogger( + @MockFirestoreEventLogger delegate: FirestoreEventLogger + ): FirestoreEventLogger = delegate } @Module @@ -478,6 +608,10 @@ class LogUploadWorkerTest { @Provides @PerformanceMetricsLogStorageCacheSize fun providePerformanceMetricsLogStorageCacheSize(): Int = 2 + + @Provides + @FirestoreLogStorageCacheSize + fun provideFirestoreLogStorageCacheSize(): Int = 2 } @Module @@ -487,6 +621,14 @@ class LogUploadWorkerTest { fun bindsFakeLogUploader(fakeLogUploader: FakeLogUploader): LogUploader } + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + // TODO(#89): Move this to a common test application component. @Singleton @Component( @@ -498,7 +640,8 @@ class LogUploadWorkerTest { AssetModule::class, TestPlatformParameterModule::class, PlatformParameterSingletonModule::class, LoggingIdentifierModule::class, SyncStatusTestModule::class, PerformanceMetricsAssessorModule::class, - ApplicationLifecycleModule::class, PerformanceMetricsConfigurationsModule::class + ApplicationLifecycleModule::class, PerformanceMetricsConfigurationsModule::class, + TestAuthModule::class, ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/survey/SurveyControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/survey/SurveyControllerTest.kt index eb9e43ab83a..4e1049baa3a 100644 --- a/domain/src/test/java/org/oppia/android/domain/survey/SurveyControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/survey/SurveyControllerTest.kt @@ -5,6 +5,7 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat +import dagger.Binds import dagger.BindsInstance import dagger.Component import dagger.Module @@ -14,10 +15,12 @@ import org.junit.Test import org.junit.runner.RunWith import org.oppia.android.app.model.ProfileId import org.oppia.android.app.model.SurveyQuestionName +import org.oppia.android.domain.auth.AuthenticationListener import org.oppia.android.domain.exploration.ExplorationProgressModule import org.oppia.android.domain.oppialogger.ApplicationIdSeed import org.oppia.android.domain.oppialogger.LogStorageModule import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule +import org.oppia.android.testing.FakeAuthenticationController import org.oppia.android.testing.FakeExceptionLogger import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor @@ -203,6 +206,14 @@ class SurveyControllerTest { fun provideApplicationIdSeed(): Long = applicationIdSeed } + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + // TODO(#89): Move this to a common test application component. @Singleton @Component( @@ -211,7 +222,7 @@ class SurveyControllerTest { ApplicationLifecycleModule::class, TestDispatcherModule::class, LocaleProdModule::class, ExplorationProgressModule::class, TestLogReportingModule::class, AssetModule::class, NetworkConnectionUtilDebugModule::class, SyncStatusModule::class, LogStorageModule::class, - TestLoggingIdentifierModule::class, + TestLoggingIdentifierModule::class, TestAuthModule::class, ] ) interface TestApplicationComponent : DataProvidersInjector { diff --git a/domain/src/test/java/org/oppia/android/domain/survey/SurveyProgressControllerTest.kt b/domain/src/test/java/org/oppia/android/domain/survey/SurveyProgressControllerTest.kt index 865120fb089..ad017d98353 100644 --- a/domain/src/test/java/org/oppia/android/domain/survey/SurveyProgressControllerTest.kt +++ b/domain/src/test/java/org/oppia/android/domain/survey/SurveyProgressControllerTest.kt @@ -5,6 +5,7 @@ import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat +import dagger.Binds import dagger.BindsInstance import dagger.Component import dagger.Module @@ -18,12 +19,15 @@ import org.oppia.android.app.model.ProfileId import org.oppia.android.app.model.SurveyQuestionName import org.oppia.android.app.model.SurveySelectedAnswer import org.oppia.android.app.model.UserTypeAnswer +import org.oppia.android.domain.auth.AuthenticationListener import org.oppia.android.domain.exploration.ExplorationProgressModule import org.oppia.android.domain.oppialogger.ApplicationIdSeed import org.oppia.android.domain.oppialogger.LogStorageModule import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule import org.oppia.android.testing.FakeAnalyticsEventLogger +import org.oppia.android.testing.FakeAuthenticationController import org.oppia.android.testing.FakeExceptionLogger +import org.oppia.android.testing.FakeFirestoreEventLogger import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.data.DataProviderTestMonitor import org.oppia.android.testing.logging.EventLogSubject @@ -72,6 +76,9 @@ class SurveyProgressControllerTest { @Inject lateinit var fakeAnalyticsEventLogger: FakeAnalyticsEventLogger + @Inject + lateinit var fakeFirestoreEventLogger: FakeFirestoreEventLogger + private val profileId = ProfileId.newBuilder().setInternalId(1).build() @Before @@ -397,7 +404,26 @@ class SurveyProgressControllerTest { } } - // TODO(#5001): Add tests for Optional responses logging to Firestore + @Test + fun testEndSurvey_afterCompletingAllQuestions_logsOptionalSurveyResponseEvent() { + startSuccessfulSurveySession() + waitForGetCurrentQuestionSuccessfulLoad() + submitUserTypeAnswer(UserTypeAnswer.PARENT) + submitMarketFitAnswer(MarketFitAnswer.VERY_DISAPPOINTED) + submitNpsAnswer(10) + submitTextInputAnswer(SurveyQuestionName.PROMOTER_FEEDBACK, TEXT_ANSWER) + stopSurveySession(surveyCompleted = true) + + val eventLog = fakeFirestoreEventLogger.getMostRecentEvent() + + EventLogSubject.assertThat(eventLog).hasOptionalSurveyResponseContextThat { + hasSurveyDetailsThat { + hasSurveyIdThat().isNotEmpty() + hasInternalProfileIdThat().isEqualTo("1") + } + hasFeedbackAnswerThat().isEqualTo(TEXT_ANSWER) + } + } private fun stopSurveySession(surveyCompleted: Boolean) { val stopProvider = surveyController.stopSurveySession(surveyCompleted) @@ -534,6 +560,14 @@ class SurveyProgressControllerTest { fun provideApplicationIdSeed(): Long = applicationIdSeed } + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + // TODO(#89): Move this to a common test application component. @Singleton @Component( @@ -542,7 +576,7 @@ class SurveyProgressControllerTest { ApplicationLifecycleModule::class, TestDispatcherModule::class, LocaleProdModule::class, ExplorationProgressModule::class, TestLogReportingModule::class, AssetModule::class, NetworkConnectionUtilDebugModule::class, SyncStatusModule::class, LogStorageModule::class, - TestLoggingIdentifierModule::class + TestLoggingIdentifierModule::class, TestAuthModule::class, ] ) diff --git a/gradle.properties b/gradle.properties index 6efd2e7dbe5..157de43e7f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,4 +23,8 @@ android.enableJetifier=true kotlin.code.style=official # Needed to enable Android data binding. android.databinding.enableV2=true - +# Needed to exclude bcprov from being processed by jetifier, since there is a resulting bug when +# used with android gradle plugins pre 7.1. +# See https://github.com/robolectric/robolectric/issues/6521 +# and https://issuetracker.google.com/issues/159151549#comment12 +android.jetifier.blacklist=bcprov-jdk15on diff --git a/instrumentation/src/java/org/oppia/android/instrumentation/application/BUILD.bazel b/instrumentation/src/java/org/oppia/android/instrumentation/application/BUILD.bazel index 97be8252f41..5d9fe4ac612 100644 --- a/instrumentation/src/java/org/oppia/android/instrumentation/application/BUILD.bazel +++ b/instrumentation/src/java/org/oppia/android/instrumentation/application/BUILD.bazel @@ -25,6 +25,7 @@ kt_android_library( "//app/src/main/java/org/oppia/android/app/application/testing:testing_build_flavor_module", "//data/src/main/java/org/oppia/android/data/backends/gae:network_config_annotations", "//domain", + "//testing", "//utility", "//utility/src/main/java/org/oppia/android/util/logging:standard_event_logging_configuration_module", "//utility/src/main/java/org/oppia/android/util/logging/firebase:debug_module", diff --git a/instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt b/instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt index 25f666f4029..fbf99ee8103 100644 --- a/instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt +++ b/instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt @@ -45,6 +45,7 @@ import org.oppia.android.domain.platformparameter.syncup.PlatformParameterSyncUp import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.util.accessibility.AccessibilityProdModule import org.oppia.android.util.caching.AssetModule import org.oppia.android.util.caching.CachingModule @@ -101,7 +102,8 @@ import javax.inject.Singleton MetricLogSchedulerModule::class, ActivityRouterModule::class, PerformanceMetricsAssessorModule::class, PerformanceMetricsConfigurationsModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, - ExplorationProgressModule::class, CpuPerformanceSnapshotterModule::class + ExplorationProgressModule::class, CpuPerformanceSnapshotterModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/scripts/assets/maven_dependencies.textproto b/scripts/assets/maven_dependencies.textproto index ddb692a40f3..29f3dcbc0cc 100644 --- a/scripts/assets/maven_dependencies.textproto +++ b/scripts/assets/maven_dependencies.textproto @@ -514,6 +514,17 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "com.google.android:annotations:4.1.1.4" + artifact_version: "4.1.1.4" + license { + license_name: "Apache 2.0" + original_link: "https://www.apache.org/licenses/LICENSE-2.0" + extracted_copy_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "com.google.auto.service:auto-service-annotations:1.0-rc7" artifact_version: "1.0-rc7" @@ -529,6 +540,7 @@ maven_dependency { artifact_version: "1.8.1" license { license_name: "The Apache Software License, Version 2.0" + original_link: "https://www.apache.org/licenses/LICENSE-2.0.txt" scrapable_link { url: "https://www.apache.org/licenses/LICENSE-2.0.txt" } @@ -545,6 +557,16 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "com.google.code.gson:gson:2.8.6" + artifact_version: "2.8.6" + license { + license_name: "Apache 2.0" + scrapable_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "com.google.dagger:dagger:2.28.1" artifact_version: "2.28.1" @@ -557,8 +579,8 @@ maven_dependency { } } maven_dependency { - artifact_name: "com.google.errorprone:error_prone_annotations:2.7.1" - artifact_version: "2.7.1" + artifact_name: "com.google.errorprone:error_prone_annotations:2.9.0" + artifact_version: "2.9.0" license { license_name: "Apache 2.0" original_link: "https://www.apache.org/licenses/LICENSE-2.0.txt" @@ -578,6 +600,17 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "com.google.firebase:firebase-auth-ktx:19.3.1" + artifact_version: "19.3.1" + license { + license_name: "Android Software Development Kit License" + original_link: "https://developer.android.com/studio/terms.html" + direct_link_only { + url: "https://developer.android.com/studio/terms.html" + } + } +} maven_dependency { artifact_name: "com.google.firebase:firebase-common:19.3.0" artifact_version: "19.3.0" @@ -600,6 +633,17 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "com.google.firebase:firebase-firestore-ktx:21.5.0" + artifact_version: "21.5.0" + license { + license_name: "The Apache Software License, Version 2.0" + original_link: "https://www.apache.org/licenses/LICENSE-2.0.txt" + scrapable_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "com.google.guava:failureaccess:1.0.1" artifact_version: "1.0.1" @@ -695,6 +739,16 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "com.squareup.okhttp:okhttp:2.7.5" + artifact_version: "2.7.5" + license { + license_name: "The Apache Software License, Version 2.0" + scrapable_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "com.squareup.okio:okio:2.6.0" artifact_version: "2.6.0" @@ -768,6 +822,50 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "io.grpc:grpc-api:1.28.0" + artifact_version: "1.28.0" + license { + license_name: "Apache 2.0" + original_link: "https://opensource.org/licenses/Apache-2.0" + extracted_copy_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} +maven_dependency { + artifact_name: "io.grpc:grpc-context:1.28.0" + artifact_version: "1.28.0" + license { + license_name: "Apache 2.0" + original_link: "https://opensource.org/licenses/Apache-2.0" + extracted_copy_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} +maven_dependency { + artifact_name: "io.grpc:grpc-core:1.28.0" + artifact_version: "1.28.0" + license { + license_name: "Apache 2.0" + original_link: "https://opensource.org/licenses/Apache-2.0" + extracted_copy_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} +maven_dependency { + artifact_name: "io.perfmark:perfmark-api:0.19.0" + artifact_version: "0.19.0" + license { + license_name: "Apache 2.0" + original_link: "https://opensource.org/licenses/Apache-2.0" + extracted_copy_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "javax.annotation:javax.annotation-api:1.3.2" artifact_version: "1.3.2" @@ -830,6 +928,16 @@ maven_dependency { } } } +maven_dependency { + artifact_name: "org.codehaus.mojo:animal-sniffer-annotations:1.18" + artifact_version: "1.18" + license { + license_name: "The Apache Software License, Version 2.0" + scrapable_link { + url: "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } +} maven_dependency { artifact_name: "org.jetbrains.kotlin:kotlin-reflect:1.5.0" artifact_version: "1.5.0" @@ -919,8 +1027,8 @@ maven_dependency { } } maven_dependency { - artifact_name: "org.ow2.asm:asm:9.1" - artifact_version: "9.1" + artifact_name: "org.ow2.asm:asm:9.2" + artifact_version: "9.2" license { license_name: "BSD-3-Clause" original_link: "https://asm.ow2.io/license.html" diff --git a/scripts/assets/test_file_exemptions.textproto b/scripts/assets/test_file_exemptions.textproto index 699f8b9a9cd..d88145e8a2d 100644 --- a/scripts/assets/test_file_exemptions.textproto +++ b/scripts/assets/test_file_exemptions.textproto @@ -645,6 +645,9 @@ exempted_file_path: "data/src/main/java/org/oppia/android/data/backends/gae/mode exempted_file_path: "data/src/main/java/org/oppia/android/data/backends/gae/model/GaeVoiceover.kt" exempted_file_path: "data/src/main/java/org/oppia/android/data/backends/gae/model/GaeWrittenTranslation.kt" exempted_file_path: "data/src/main/java/org/oppia/android/data/backends/gae/model/GaeWrittenTranslations.kt" +exempted_file_path: "domain/src/main/java/org/oppia/android/domain/auth/AuthenticationController.kt" +exempted_file_path: "domain/src/main/java/org/oppia/android/domain/auth/AuthenticationListener.kt" +exempted_file_path: "domain/src/main/java/org/oppia/android/domain/auth/AuthenticationModule.kt" exempted_file_path: "domain/src/main/java/org/oppia/android/domain/classify/ClassificationContext.kt" exempted_file_path: "domain/src/main/java/org/oppia/android/domain/classify/ClassificationResult.kt" exempted_file_path: "domain/src/main/java/org/oppia/android/domain/classify/GenericInteractionClassifier.kt" @@ -751,6 +754,7 @@ exempted_file_path: "testing/src/main/java/org/oppia/android/testing/OppiaTestAn exempted_file_path: "testing/src/main/java/org/oppia/android/testing/OppiaTestRule.kt" exempted_file_path: "testing/src/main/java/org/oppia/android/testing/OppiaTestRunner.kt" exempted_file_path: "testing/src/main/java/org/oppia/android/testing/RichTextViewMatcher.kt" +exempted_file_path: "testing/src/main/java/org/oppia/android/testing/TestAuthenticationModule.kt" exempted_file_path: "testing/src/main/java/org/oppia/android/testing/TestImageLoaderModule.kt" exempted_file_path: "testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt" exempted_file_path: "testing/src/main/java/org/oppia/android/testing/TextInputActionTestActivity.kt" @@ -842,11 +846,14 @@ exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/Loggin exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/SyncStatusManager.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/SyncStatusModule.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/DebugAnalyticsEventLogger.kt" +exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/DebugFirestoreEventLogger.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/DebugLogReportingModule.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseAnalyticsEventLogger.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseExceptionLogger.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploader.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploaderModule.kt" +exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLogger.kt" +exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLoggerProdImpl.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/logging/firebase/LogReportingModule.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/math/FloatExtensions.kt" exempted_file_path: "utility/src/main/java/org/oppia/android/util/math/FractionExtensions.kt" diff --git a/testing/build.gradle b/testing/build.gradle index 65e7a17590e..a091667fb6b 100644 --- a/testing/build.gradle +++ b/testing/build.gradle @@ -71,16 +71,17 @@ dependencies { 'androidx.core:core-ktx:1.0.2', "androidx.test:core:1.0.0", 'androidx.test.espresso:espresso-accessibility:3.1.0', - 'androidx.test.espresso:espresso-core:3.2.0', + 'androidx.test.espresso:espresso-core:3.5.0-alpha03', 'androidx.test:runner:1.2.0', 'com.google.android.material:material:1.3.0', 'com.google.dagger:dagger:2.24', + 'com.google.firebase:firebase-auth-ktx:19.3.1', 'com.google.protobuf:protobuf-javalite:3.17.3', 'com.google.truth:truth:1.1.3', 'com.google.truth.extensions:truth-liteproto-extension:1.1.3', 'nl.dionsegijn:konfetti:1.2.5', 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', - 'org.robolectric:robolectric:4.5', + 'org.robolectric:robolectric:4.7', 'org.jetbrains.kotlin:kotlin-reflect:$kotlin_version', 'org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version', 'org.mockito:mockito-core:2.19.0', diff --git a/testing/src/main/java/org/oppia/android/testing/FakeAuthenticationController.kt b/testing/src/main/java/org/oppia/android/testing/FakeAuthenticationController.kt new file mode 100644 index 00000000000..465cdd8af9d --- /dev/null +++ b/testing/src/main/java/org/oppia/android/testing/FakeAuthenticationController.kt @@ -0,0 +1,38 @@ +package org.oppia.android.testing + +import com.google.firebase.auth.FirebaseUser +import kotlinx.coroutines.CompletableDeferred +import org.mockito.Mockito.mock +import org.oppia.android.domain.auth.AuthenticationListener +import org.oppia.android.util.data.AsyncResult +import javax.inject.Inject +import javax.inject.Singleton + +/** A test specific fake for the AuthenticationController. */ +@Singleton +class FakeAuthenticationController @Inject constructor() : AuthenticationListener { + private var signInIsSuccessful = true + private val mockFirebaseUser: FirebaseUser? = mock(FirebaseUser::class.java) + + override fun getCurrentSignedInUser(): FirebaseUser? { + return mockFirebaseUser + } + + override fun signInAnonymously(): CompletableDeferred> { + val deferredResult = CompletableDeferred>() + + if (signInIsSuccessful) { + deferredResult.complete(AsyncResult.Success(null)) + } else { + val error = Exception("Authentication failed") + deferredResult.complete(AsyncResult.Failure(error)) + } + + return deferredResult + } + + /** Sets whether sign in was successful. */ + fun setSignInSuccessStatus(signInSuccessful: Boolean) { + signInIsSuccessful = signInSuccessful + } +} diff --git a/testing/src/main/java/org/oppia/android/testing/FakeFirestoreEventLogger.kt b/testing/src/main/java/org/oppia/android/testing/FakeFirestoreEventLogger.kt new file mode 100644 index 00000000000..b2a16c85704 --- /dev/null +++ b/testing/src/main/java/org/oppia/android/testing/FakeFirestoreEventLogger.kt @@ -0,0 +1,41 @@ +package org.oppia.android.testing + +import org.oppia.android.app.model.EventLog +import org.oppia.android.util.logging.firebase.FirestoreEventLogger +import java.util.concurrent.CopyOnWriteArrayList +import javax.inject.Inject +import javax.inject.Singleton + +/** A test specific fake for the FirestoreEventLogger. */ +@Singleton +class FakeFirestoreEventLogger @Inject constructor() : FirestoreEventLogger { + private val eventList = CopyOnWriteArrayList() + + override fun uploadEvent(eventLog: EventLog) { + eventList.add(eventLog) + } + + /** Returns the oldest event that's been logged. */ + fun getOldestEvent(): EventLog = eventList.first() + + /** Returns the most recently logged event. */ + fun getMostRecentEvent(): EventLog = getMostRecentEvents(count = 1).first() + + /** Returns the most recent [count] logged events. */ + fun getMostRecentEvents(count: Int): List = eventList.takeLast(count) + + /** Clears all the events that are currently logged. */ + fun clearAllEvents() = eventList.clear() + + /** Returns whether a certain event has been logged or not, based on the provided [predicate]. */ + fun hasEventLogged(predicate: (EventLog) -> Boolean): Boolean = eventList.find(predicate) != null + + /** Returns the number of logged events that match the provided [predicate]. */ + fun countEvents(predicate: (EventLog) -> Boolean): Int = eventList.count(predicate) + + /** Returns true if there are no events logged. */ + fun noEventsPresent(): Boolean = eventList.isEmpty() + + /** Returns the number of events logged to date (and not cleared by [clearAllEvents]). */ + fun getEventListCount(): Int = eventList.size +} diff --git a/testing/src/main/java/org/oppia/android/testing/TestAuthenticationModule.kt b/testing/src/main/java/org/oppia/android/testing/TestAuthenticationModule.kt new file mode 100644 index 00000000000..c3c1fa60ff8 --- /dev/null +++ b/testing/src/main/java/org/oppia/android/testing/TestAuthenticationModule.kt @@ -0,0 +1,15 @@ +package org.oppia.android.testing + +import dagger.Module +import dagger.Provides +import org.oppia.android.domain.auth.AuthenticationListener +import javax.inject.Singleton + +/** Provides debug authentication dependencies. */ +@Module +class TestAuthenticationModule { + @Provides + @Singleton + fun provideAuthenticationController(authController: FakeAuthenticationController): + AuthenticationListener = authController +} diff --git a/testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt b/testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt index 9d27f8c3a51..22ca3a3d598 100644 --- a/testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt +++ b/testing/src/main/java/org/oppia/android/testing/TestLogReportingModule.kt @@ -4,6 +4,7 @@ import dagger.Binds import dagger.Module import org.oppia.android.util.logging.AnalyticsEventLogger import org.oppia.android.util.logging.ExceptionLogger +import org.oppia.android.util.logging.firebase.FirestoreEventLogger import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsAssessor import org.oppia.android.util.logging.performancemetrics.PerformanceMetricsEventLogger @@ -26,4 +27,9 @@ interface TestLogReportingModule { fun bindFakePerformanceMetricsAssessor( fakePerformanceMetricAssessor: FakePerformanceMetricAssessor ): PerformanceMetricsAssessor + + @Binds + fun bindFakeFirestoreEventLogger( + fakeFirestoreEventLogger: FakeFirestoreEventLogger + ): FirestoreEventLogger } diff --git a/testing/src/main/java/org/oppia/android/testing/logging/EventLogSubject.kt b/testing/src/main/java/org/oppia/android/testing/logging/EventLogSubject.kt index cbd7163ce19..5f17e632be0 100644 --- a/testing/src/main/java/org/oppia/android/testing/logging/EventLogSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/logging/EventLogSubject.kt @@ -40,6 +40,7 @@ import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.OPEN_QUE import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.OPEN_REVISION_CARD import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.OPEN_REVISION_TAB import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.OPEN_STORY_ACTIVITY +import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.OPTIONAL_RESPONSE import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.PAUSE_VOICE_OVER_CONTEXT import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.PLAY_VOICE_OVER_CONTEXT import org.oppia.android.app.model.EventLog.Context.ActivityContextCase.REACH_INVESTED_ENGAGEMENT @@ -1046,6 +1047,34 @@ class EventLogSubject private constructor( hasBeginSurveyContextThat().block() } + /** + * Verifies that the [EventLog] under test has a context corresponding to + * [OPTIONAL_RESPONSE] (per [EventLog.Context.getActivityContextCase]). + */ + fun hasOptionalSurveyResponseContext() { + assertThat(actual.context.activityContextCase).isEqualTo(OPTIONAL_RESPONSE) + } + + /** + * Verifies the [EventLog]'s context per [hasOptionalSurveyResponseContext] and returns a + * [OptionalSurveyResponseContextSubject] to test the corresponding context. + */ + fun hasOptionalSurveyResponseContextThat(): OptionalSurveyResponseContextSubject { + hasOptionalSurveyResponseContext() + return OptionalSurveyResponseContextSubject.assertThat( + actual.context.optionalResponse + ) + } + + /** + * Verifies the [EventLog]'s context and executes [block]. + */ + fun hasOptionalSurveyResponseContextThat( + block: OptionalSurveyResponseContextSubject.() -> Unit + ) { + hasOptionalSurveyResponseContextThat().block() + } + /** * Truth subject for verifying properties of [AppLanguageSelection]s. * @@ -1754,6 +1783,54 @@ class EventLogSubject private constructor( } } + /** + * Truth subject for verifying properties of [EventLog.OptionalSurveyResponseContext]s. + * + * Note that this class is also a [LiteProtoSubject] so other aspects of the underlying + * [EventLog.OptionalSurveyResponseContext] proto can be verified through inherited methods. + * + * Call [OptionalSurveyResponseContextSubject.assertThat] to create the subject. + */ + class OptionalSurveyResponseContextSubject private constructor( + metadata: FailureMetadata, + private val actual: EventLog.OptionalSurveyResponseContext + ) : LiteProtoSubject(metadata, actual) { + /** + * Returns a [SurveyResponseContextSubject] to test + * [EventLog.OptionalSurveyResponseContext.getSurveyDetails]. + * + * This method never fails since the underlying property defaults to empty string if it's not + * defined in the context. + */ + fun hasSurveyDetailsThat(): SurveyResponseContextSubject = + SurveyResponseContextSubject.assertThat(actual.surveyDetails) + + /** Executes [block] in the context returned by [hasSurveyDetailsThat]. */ + fun hasSurveyDetailsThat(block: SurveyResponseContextSubject.() -> Unit) { + hasSurveyDetailsThat().block() + } + + /** + * Returns a [StringSubject] to test + * [EventLog.OptionalSurveyResponseContext.getFeedbackAnswer]. + * + * This method never fails since the underlying property defaults to empty object if it's not + * defined in the context. + */ + fun hasFeedbackAnswerThat(): StringSubject = + assertThat(actual.feedbackAnswer) + + companion object { + /** + * Returns a new [OptionalSurveyResponseContextSubject] to verify aspects of the specified + * [EventLog.OptionalSurveyResponseContext] value. + */ + fun assertThat(actual: EventLog.OptionalSurveyResponseContext): + OptionalSurveyResponseContextSubject = + assertAbout(::OptionalSurveyResponseContextSubject).that(actual) + } + } + /** * Truth subject for verifying properties of [EventLog.MandatorySurveyResponseContext]s. * @@ -1768,7 +1845,7 @@ class EventLogSubject private constructor( ) : LiteProtoSubject(metadata, actual) { /** * Returns a [SurveyResponseContextSubject] to test - * [EventLog.AbandonSurveyContext.getSurveyDetails]. + * [EventLog.MandatorySurveyResponseContext.getSurveyDetails]. * * This method never fails since the underlying property defaults to empty object if it's not * defined in the context. @@ -1802,8 +1879,8 @@ class EventLogSubject private constructor( assertThat(actual.marketFitAnswer) /** - * Returns a [ComparableSubject] to test - * [EventLog.MandatorySurveyResponseContext.getUserTypeAnswer]. + * Returns a [IntegerSubject] to test + * [EventLog.MandatorySurveyResponseContext.getNpsScoreAnswer]. * * This method never fails since the underlying property defaults to empty object if it's not * defined in the context. @@ -1813,8 +1890,8 @@ class EventLogSubject private constructor( companion object { /** - * Returns a new [AbandonSurveyContextSubject] to verify aspects of the specified - * [EventLog.AbandonSurveyContext] value. + * Returns a new [MandatorySurveyResponseContextSubject] to verify aspects of the specified + * [EventLog.MandatorySurveyResponseContext] value. */ fun assertThat(actual: EventLog.MandatorySurveyResponseContext): MandatorySurveyResponseContextSubject = diff --git a/testing/src/test/java/org/oppia/android/testing/FakeAuthenticationControllerTest.kt b/testing/src/test/java/org/oppia/android/testing/FakeAuthenticationControllerTest.kt new file mode 100644 index 00000000000..1062d41d2d9 --- /dev/null +++ b/testing/src/test/java/org/oppia/android/testing/FakeAuthenticationControllerTest.kt @@ -0,0 +1,163 @@ +package org.oppia.android.testing + +import android.app.Application +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.google.common.truth.Truth.assertThat +import com.google.firebase.auth.FirebaseUser +import dagger.Binds +import dagger.BindsInstance +import dagger.Component +import dagger.Module +import dagger.Provides +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.async +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.oppia.android.domain.auth.AuthenticationListener +import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule +import org.oppia.android.testing.robolectric.RobolectricModule +import org.oppia.android.testing.threading.TestCoroutineDispatchers +import org.oppia.android.testing.threading.TestDispatcherModule +import org.oppia.android.testing.time.FakeOppiaClockModule +import org.oppia.android.util.data.AsyncResult +import org.oppia.android.util.data.DataProvidersInjector +import org.oppia.android.util.data.DataProvidersInjectorProvider +import org.oppia.android.util.threading.BackgroundDispatcher +import org.robolectric.annotation.Config +import org.robolectric.annotation.LooperMode +import javax.inject.Inject +import javax.inject.Singleton + +/** Tests for [FakeAuthenticationController]. */ +// FunctionName: test names are conventionally named with underscores. +@Suppress("FunctionName") +@RunWith(AndroidJUnit4::class) +@LooperMode(LooperMode.Mode.PAUSED) +@Config(application = FakeAuthenticationControllerTest.TestApplication::class) +class FakeAuthenticationControllerTest { + @Inject + lateinit var fakeAuthenticationController: FakeAuthenticationController + + @Inject + lateinit var authenticationListener: AuthenticationListener + + @field:[Inject BackgroundDispatcher] + lateinit var backgroundDispatcher: CoroutineDispatcher + + @Inject + lateinit var testCoroutineDispatchers: TestCoroutineDispatchers + + @Before + fun setUp() { + setUpTestApplicationComponent() + } + + @Test + fun testAuthentication_getCurrentSignedInUser() { + val user = authenticationListener.getCurrentSignedInUser() + + assertThat(user).isInstanceOf(FirebaseUser::class.java) + } + + @Test + fun testFakeController_signInAnonymously_succeeds() { + fakeAuthenticationController.setSignInSuccessStatus(true) + + // A successful result is returned + runSynchronously { fakeAuthenticationController.signInAnonymously().await() } + } + + private fun runSynchronously(operation: suspend () -> Unit) = + CoroutineScope(backgroundDispatcher).async { operation() }.waitForSuccessfulResult() + + private fun Deferred.waitForSuccessfulResult() { + return when (val result = waitForResult()) { + is AsyncResult.Pending -> error("Deferred never finished.") + is AsyncResult.Success -> {} // Nothing to do; the result succeeded. + is AsyncResult.Failure -> throw IllegalStateException("Deferred failed", result.error) + } + } + + private fun Deferred.waitForResult() = toStateFlow().waitForLatestValue() + + private fun Deferred.toStateFlow(): StateFlow> { + val deferred = this + return MutableStateFlow>(value = AsyncResult.Pending()).also { flow -> + CoroutineScope(backgroundDispatcher).async { + try { + val result = deferred.await() + flow.emit(AsyncResult.Success(result)) + } catch (e: Throwable) { + flow.emit(AsyncResult.Failure(e)) + } + } + } + } + + private fun StateFlow.waitForLatestValue(): T = + also { testCoroutineDispatchers.runCurrent() }.value + + private fun setUpTestApplicationComponent() { + ApplicationProvider.getApplicationContext() + .inject(this) + } + + @Module + class TestModule { + @Provides + @Singleton + fun provideContext(application: Application): Context { + return application + } + } + + @Module + interface TestAuthModule { + @Binds + fun bindFakeAuthenticationController( + fakeAuthenticationController: FakeAuthenticationController + ): AuthenticationListener + } + + // TODO(#89): Move this to a common test application component. + @Singleton + @Component( + modules = [ + TestModule::class, RobolectricModule::class, FakeOppiaClockModule::class, + ApplicationLifecycleModule::class, TestDispatcherModule::class, TestAuthModule::class, + TestLogReportingModule::class, + ] + ) + interface TestApplicationComponent : DataProvidersInjector { + @Component.Builder + interface Builder { + @BindsInstance + fun setApplication(application: Application): Builder + + fun build(): TestApplicationComponent + } + + fun inject(test: FakeAuthenticationControllerTest) + } + + class TestApplication : Application(), DataProvidersInjectorProvider { + private val component: TestApplicationComponent by lazy { + DaggerFakeAuthenticationControllerTest_TestApplicationComponent.builder() + .setApplication(this) + .build() + } + + fun inject(test: FakeAuthenticationControllerTest) { + component.inject(test) + } + + override fun getDataProvidersInjector(): DataProvidersInjector = component + } +} diff --git a/testing/src/test/java/org/oppia/android/testing/FakeFirestoreEventLoggerTest.kt b/testing/src/test/java/org/oppia/android/testing/FakeFirestoreEventLoggerTest.kt new file mode 100644 index 00000000000..41ce667b82f --- /dev/null +++ b/testing/src/test/java/org/oppia/android/testing/FakeFirestoreEventLoggerTest.kt @@ -0,0 +1,302 @@ +package org.oppia.android.testing + +import android.app.Application +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.google.common.truth.Truth.assertThat +import dagger.BindsInstance +import dagger.Component +import dagger.Module +import dagger.Provides +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.oppia.android.app.model.EventLog +import org.oppia.android.app.model.EventLog.Priority +import org.oppia.android.domain.oppialogger.LogStorageModule +import org.oppia.android.testing.robolectric.RobolectricModule +import org.oppia.android.testing.threading.TestDispatcherModule +import org.oppia.android.testing.time.FakeOppiaClockModule +import org.oppia.android.util.logging.firebase.FirestoreEventLogger +import org.robolectric.annotation.Config +import org.robolectric.annotation.LooperMode +import javax.inject.Inject +import javax.inject.Singleton + +/** Tests for [fakeEventLogger]. */ +// FunctionName: test names are conventionally named with underscores. +@Suppress("FunctionName") +@RunWith(AndroidJUnit4::class) +@LooperMode(LooperMode.Mode.PAUSED) +@Config(manifest = Config.NONE) +class FakeFirestoreEventLoggerTest { + + @Inject + lateinit var fakeEventLogger: FakeFirestoreEventLogger + + @Inject + lateinit var eventLogger: FirestoreEventLogger + + private val eventLog1 = EventLog.newBuilder().setPriority(Priority.ESSENTIAL).build() + private val eventLog2 = EventLog.newBuilder().setPriority(Priority.OPTIONAL).build() + + @Before + fun setUp() { + setUpTestApplicationComponent() + } + + @Test + fun testfakeEventLogger_logEvent_returnsEvent() { + eventLogger.uploadEvent(eventLog1) + val event = fakeEventLogger.getMostRecentEvent() + + assertThat(event).isEqualTo(eventLog1) + assertThat(event.priority).isEqualTo(Priority.ESSENTIAL) + } + + @Test + fun testfakeEventLogger_logEventTwice_returnsLatestEvent() { + eventLogger.uploadEvent(eventLog1) + eventLogger.uploadEvent(eventLog2) + val event = fakeEventLogger.getMostRecentEvent() + + assertThat(event).isEqualTo(eventLog2) + assertThat(event.priority).isEqualTo(Priority.OPTIONAL) + } + + @Test + fun testfakeEventLogger_logEvent_clearAllEvents_logEventAgain_returnsLatestEvent() { + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + eventLogger.uploadEvent(eventLog2) + val event = fakeEventLogger.getMostRecentEvent() + + assertThat(event).isEqualTo(eventLog2) + assertThat(event.priority).isEqualTo(Priority.OPTIONAL) + } + + @Test + fun testfakeEventLogger_logNothing_getMostRecent_returnsFailure() { + assertThrows(NoSuchElementException::class) { fakeEventLogger.getMostRecentEvent() } + } + + @Test + fun testfakeEventLogger_logEvent_clearAllEvents_getMostRecent_returnsFailure() { + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + + val eventException = assertThrows(NoSuchElementException::class) { + fakeEventLogger.getMostRecentEvent() + } + + assertThat(eventException).isInstanceOf(NoSuchElementException::class.java) + } + + @Test + fun testfakeEventLogger_clearAllEvents_returnsEmptyList() { + fakeEventLogger.clearAllEvents() + val isListEmpty = fakeEventLogger.noEventsPresent() + + assertThat(isListEmpty).isTrue() + } + + @Test + fun testfakeEventLogger_logEvent_clearAllEvents_returnsEmptyList() { + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + val isListEmpty = fakeEventLogger.noEventsPresent() + + assertThat(isListEmpty).isTrue() + } + + @Test + fun testfakeEventLogger_logMultipleEvents_clearAllEvents_returnsEmptyList() { + eventLogger.uploadEvent(eventLog1) + eventLogger.uploadEvent(eventLog2) + fakeEventLogger.clearAllEvents() + val isListEmpty = fakeEventLogger.noEventsPresent() + + assertThat(isListEmpty).isTrue() + } + + @Test + fun testfakeEventLogger_logEvent_returnsNonEmptyList() { + eventLogger.uploadEvent(eventLog1) + val isListEmpty = fakeEventLogger.noEventsPresent() + + assertThat(isListEmpty).isFalse() + } + + @Test + fun testfakeEventLogger_logMultipleEvents_returnsNonEmptyList() { + eventLogger.uploadEvent(eventLog1) + eventLogger.uploadEvent(eventLog2) + + val eventLogStatus1 = fakeEventLogger.hasEventLogged { it == eventLog1 } + val eventLogStatus2 = fakeEventLogger.hasEventLogged { it == eventLog2 } + val eventListStatus = fakeEventLogger.noEventsPresent() + + assertThat(eventListStatus).isFalse() + assertThat(eventLogStatus1).isTrue() + assertThat(eventLogStatus2).isTrue() + } + + @Test + fun testGetOldestEvent_noEventsLogged_throwsException() { + assertThrows(NoSuchElementException::class) { fakeEventLogger.getOldestEvent() } + } + + @Test + fun testGetOldestEvent_oneEventLogged_returnsLoggedEvent() { + eventLogger.uploadEvent(eventLog1) + + val oldestEvent = fakeEventLogger.getOldestEvent() + + assertThat(oldestEvent).isEqualTo(eventLog1) + } + + @Test + fun testGetOldestEvent_twoEventsLogged_returnsFirstEventLogged() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + + val oldestEvent = fakeEventLogger.getOldestEvent() + + assertThat(oldestEvent).isEqualTo(eventLog2) + } + + @Test + fun testGetOldestEvent_twoEventsLogged_clearEvents_throwsException() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + + assertThrows(NoSuchElementException::class) { fakeEventLogger.getOldestEvent() } + } + + @Test + fun testGetOldestEvent_eventLogged_cleared_newEventLogged_returnsLatestEventLog() { + eventLogger.uploadEvent(eventLog2) + fakeEventLogger.clearAllEvents() + eventLogger.uploadEvent(eventLog1) + + val oldestEvent = fakeEventLogger.getOldestEvent() + + assertThat(oldestEvent).isEqualTo(eventLog1) + } + + @Test + fun testGetMostRecentEvents_twoEvents_noEventsLogged_returnsEmptyList() { + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 2) + + assertThat(mostRecentEvents).isEmpty() + } + + @Test + fun testGetMostRecentEvents_twoEvents_oneEventLogged_returnsOneItemList() { + eventLogger.uploadEvent(eventLog1) + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 2) + + assertThat(mostRecentEvents).containsExactly(eventLog1) + } + + @Test + fun testGetMostRecentEvents_twoEvents_twoEventsLogged_returnsEventsInOrder() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 2) + + assertThat(mostRecentEvents).containsExactly(eventLog2, eventLog1).inOrder() + } + + @Test + fun testGetMostRecentEvents_oneEvent_twoEventsLogged_returnsSingleLatestEvent() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 1) + + assertThat(mostRecentEvents).containsExactly(eventLog1) + } + + @Test + fun testGetMostRecentEvents_zeroEvents_twoEventsLogged_returnsEmptyList() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 0) + + assertThat(mostRecentEvents).isEmpty() + } + + @Test + fun testGetMostRecentEvents_negativeEvents_twoEventsLogged_throwsException() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + + assertThrows(IllegalArgumentException::class) { + fakeEventLogger.getMostRecentEvents(count = -1) + } + } + + @Test + fun testGetMostRecentEvents_twoEventsLogged_eventsCleared_returnsEmptyList() { + eventLogger.uploadEvent(eventLog2) + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 2) + + assertThat(mostRecentEvents).isEmpty() + } + + @Test + fun testGetMostRecentEvents_eventLogged_cleared_newEventLogged_returnsNewestEvent() { + eventLogger.uploadEvent(eventLog1) + fakeEventLogger.clearAllEvents() + eventLogger.uploadEvent(eventLog2) + + val mostRecentEvents = fakeEventLogger.getMostRecentEvents(count = 2) + + assertThat(mostRecentEvents).containsExactly(eventLog2) + } + + private fun setUpTestApplicationComponent() { + DaggerFakeFirestoreEventLoggerTest_TestApplicationComponent.builder() + .setApplication(ApplicationProvider.getApplicationContext()) + .build() + .inject(this) + } + + // TODO(#89): Move this to a common test application component. + @Module + class TestModule { + @Provides + @Singleton + fun provideContext(application: Application): Context { + return application + } + } + + // TODO(#89): Move this to a common test application component. + @Singleton + @Component( + modules = [ + TestModule::class, TestLogReportingModule::class, RobolectricModule::class, + TestDispatcherModule::class, LogStorageModule::class, FakeOppiaClockModule::class + ] + ) + interface TestApplicationComponent { + @Component.Builder + interface Builder { + @BindsInstance + fun setApplication(application: Application): Builder + fun build(): TestApplicationComponent + } + + fun inject(fakeEventLoggerTest: FakeFirestoreEventLoggerTest) + } +} diff --git a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt index 0939de4682b..71f53946331 100644 --- a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt +++ b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt @@ -60,6 +60,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.robolectric.RobolectricModule import org.oppia.android.testing.threading.TestDispatcherModule @@ -271,7 +272,8 @@ class InitializeDefaultLocaleRuleCustomContextTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt index f2f2b2c89f0..385742c3a2c 100644 --- a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt +++ b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt @@ -57,6 +57,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.assertThrows import org.oppia.android.testing.robolectric.RobolectricModule @@ -147,7 +148,8 @@ class InitializeDefaultLocaleRuleOmissionTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt index 89e80d0c6ef..896afc9b13e 100644 --- a/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt +++ b/testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt @@ -61,6 +61,7 @@ import org.oppia.android.domain.platformparameter.PlatformParameterSingletonModu import org.oppia.android.domain.question.QuestionModule import org.oppia.android.domain.topic.PrimeTopicAssetsControllerModule import org.oppia.android.domain.workmanager.WorkManagerConfigurationModule +import org.oppia.android.testing.TestAuthenticationModule import org.oppia.android.testing.TestLogReportingModule import org.oppia.android.testing.robolectric.RobolectricModule import org.oppia.android.testing.threading.TestDispatcherModule @@ -151,7 +152,8 @@ class InitializeDefaultLocaleRuleTest { LoggingIdentifierModule::class, ApplicationLifecycleModule::class, SyncStatusModule::class, MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, EventLoggingConfigurationModule::class, ActivityRouterModule::class, - CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class + CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/third_party/maven_install.json b/third_party/maven_install.json index 6ac87f7eab6..dadc9b1c843 100644 --- a/third_party/maven_install.json +++ b/third_party/maven_install.json @@ -1,8 +1,8 @@ { "dependency_tree": { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 521507787, - "__RESOLVED_ARTIFACTS_HASH": -1467267841, + "__INPUT_ARTIFACTS_HASH": -1918105693, + "__RESOLVED_ARTIFACTS_HASH": 923002438, "conflict_resolution": { "androidx.constraintlayout:constraintlayout:1.1.3": "androidx.constraintlayout:constraintlayout:2.0.1", "androidx.core:core:1.0.1": "androidx.core:core:1.3.1", @@ -3102,12 +3102,19 @@ { "coord": "androidx.test.espresso:espresso-accessibility:3.1.0", "dependencies": [ + "androidx.test.espresso:espresso-core:3.1.0", + "com.google.code.findbugs:jsr305:3.0.2", + "org.hamcrest:hamcrest-library:1.3", + "androidx.test:runner:1.2.0", + "org.hamcrest:hamcrest-integration:1.3", "org.hamcrest:hamcrest-core:1.3", - "androidx.test.espresso:espresso-core:3.2.0", - "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0" + "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0", + "com.squareup:javawriter:2.1.1", + "javax.inject:javax.inject:1", + "androidx.test.espresso:espresso-idling-resource:3.1.0" ], "directDependencies": [ - "androidx.test.espresso:espresso-core:3.2.0", + "androidx.test.espresso:espresso-core:3.1.0", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-accessibility/3.1.0/espresso-accessibility-3.1.0.aar", @@ -3124,12 +3131,19 @@ { "coord": "androidx.test.espresso:espresso-accessibility:jar:sources:3.1.0", "dependencies": [ - "org.hamcrest:hamcrest-core:jar:sources:1.3", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "org.hamcrest:hamcrest-integration:jar:sources:1.3", + "com.squareup:javawriter:jar:sources:2.1.1", + "javax.inject:javax.inject:jar:sources:1", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:jar:sources:2.0", - "androidx.test.espresso:espresso-core:jar:sources:3.2.0" + "org.hamcrest:hamcrest-core:jar:sources:1.3", + "org.hamcrest:hamcrest-library:jar:sources:1.3", + "androidx.test:runner:jar:sources:1.2.0", + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0", + "androidx.test.espresso:espresso-core:jar:sources:3.1.0" ], "directDependencies": [ - "androidx.test.espresso:espresso-core:jar:sources:3.2.0", + "androidx.test.espresso:espresso-core:jar:sources:3.1.0", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:jar:sources:2.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-accessibility/3.1.0/espresso-accessibility-3.1.0-sources.jar", @@ -3146,12 +3160,16 @@ { "coord": "androidx.test.espresso:espresso-contrib:3.1.0", "dependencies": [ - "androidx.test.espresso:espresso-core:3.2.0", + "androidx.test.espresso:espresso-core:3.1.0", "androidx.interpolator:interpolator:aar:1.0.0", "androidx.annotation:annotation:1.1.0", + "com.google.code.findbugs:jsr305:3.0.2", + "org.hamcrest:hamcrest-library:1.3", "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", "androidx.legacy:legacy-support-core-utils:aar:1.0.0", "androidx.slidingpanelayout:slidingpanelayout:aar:1.0.0", + "androidx.test:runner:1.2.0", + "org.hamcrest:hamcrest-integration:1.3", "org.hamcrest:hamcrest-core:1.3", "androidx.lifecycle:lifecycle-livedata:aar:2.2.0", "androidx.cursoradapter:cursoradapter:aar:1.0.0", @@ -3161,7 +3179,6 @@ "com.google.android.material:material:1.3.0", "androidx.recyclerview:recyclerview:1.1.0", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0", - "androidx.test.espresso:espresso-idling-resource:3.2.0", "androidx.coordinatorlayout:coordinatorlayout:aar:1.1.0", "androidx.print:print:aar:1.0.0", "androidx.lifecycle:lifecycle-viewmodel:aar:2.2.0", @@ -3169,19 +3186,22 @@ "androidx.asynclayoutinflater:asynclayoutinflater:aar:1.0.0", "androidx.legacy:legacy-support-core-ui:aar:1.0.0", "androidx.documentfile:documentfile:aar:1.0.0", + "com.squareup:javawriter:2.1.1", + "javax.inject:javax.inject:1", "androidx.legacy:legacy-support-core-utils:1.0.0", "androidx.swiperefreshlayout:swiperefreshlayout:aar:1.0.0", "androidx.loader:loader:aar:1.0.0", + "androidx.test.espresso:espresso-idling-resource:3.1.0", "androidx.customview:customview:aar:1.1.0" ], "directDependencies": [ - "androidx.test.espresso:espresso-core:3.2.0", + "androidx.test.espresso:espresso-core:3.1.0", "androidx.core:core:1.3.1", "com.google.android.material:material:1.3.0", "androidx.recyclerview:recyclerview:1.1.0", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0", - "androidx.test.espresso:espresso-idling-resource:3.2.0", - "androidx.legacy:legacy-support-core-utils:1.0.0" + "androidx.legacy:legacy-support-core-utils:1.0.0", + "androidx.test.espresso:espresso-idling-resource:3.1.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-contrib/3.1.0/espresso-contrib-3.1.0.aar", "mirror_urls": [ @@ -3198,17 +3218,20 @@ "coord": "androidx.test.espresso:espresso-contrib:jar:sources:3.1.0", "dependencies": [ "androidx.documentfile:documentfile:aar:sources:1.0.0", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", "androidx.print:print:aar:sources:1.0.0", "androidx.recyclerview:recyclerview:jar:sources:1.1.0", "androidx.lifecycle:lifecycle-viewmodel:aar:sources:2.2.0", "androidx.core:core:aar:sources:1.3.1", "androidx.swiperefreshlayout:swiperefreshlayout:aar:sources:1.0.0", + "org.hamcrest:hamcrest-integration:jar:sources:1.3", "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", "androidx.legacy:legacy-support-core-utils:aar:sources:1.0.0", "androidx.coordinatorlayout:coordinatorlayout:aar:sources:1.1.0", - "androidx.test.espresso:espresso-core:jar:sources:3.2.0", "androidx.core:core:jar:sources:1.3.1", "androidx.drawerlayout:drawerlayout:aar:sources:1.1.0", + "com.squareup:javawriter:jar:sources:2.1.1", + "javax.inject:javax.inject:jar:sources:1", "androidx.viewpager:viewpager:aar:sources:1.0.0", "androidx.asynclayoutinflater:asynclayoutinflater:aar:sources:1.0.0", "androidx.legacy:legacy-support-core-ui:aar:sources:1.0.0", @@ -3216,22 +3239,25 @@ "org.hamcrest:hamcrest-core:jar:sources:1.3", "androidx.legacy:legacy-support-core-utils:jar:sources:1.0.0", "androidx.lifecycle:lifecycle-livedata:aar:sources:2.2.0", - "androidx.test.espresso:espresso-idling-resource:jar:sources:3.2.0", "androidx.interpolator:interpolator:aar:sources:1.0.0", "androidx.cursoradapter:cursoradapter:aar:sources:1.0.0", + "org.hamcrest:hamcrest-library:jar:sources:1.3", "androidx.annotation:annotation:jar:sources:1.1.0", "androidx.slidingpanelayout:slidingpanelayout:aar:sources:1.0.0", + "androidx.test:runner:jar:sources:1.2.0", "androidx.customview:customview:aar:sources:1.1.0", + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0", "androidx.loader:loader:aar:sources:1.0.0", + "androidx.test.espresso:espresso-core:jar:sources:3.1.0", "com.google.android.material:material:jar:sources:1.3.0" ], "directDependencies": [ "androidx.recyclerview:recyclerview:jar:sources:1.1.0", - "androidx.test.espresso:espresso-core:jar:sources:3.2.0", "androidx.core:core:jar:sources:1.3.1", "com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:jar:sources:2.0", "androidx.legacy:legacy-support-core-utils:jar:sources:1.0.0", - "androidx.test.espresso:espresso-idling-resource:jar:sources:3.2.0", + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0", + "androidx.test.espresso:espresso-core:jar:sources:3.1.0", "com.google.android.material:material:jar:sources:1.3.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-contrib/3.1.0/espresso-contrib-3.1.0-sources.jar", @@ -3246,117 +3272,116 @@ "url": "https://maven.google.com/androidx/test/espresso/espresso-contrib/3.1.0/espresso-contrib-3.1.0-sources.jar" }, { - "coord": "androidx.test.espresso:espresso-core:3.2.0", + "coord": "androidx.test.espresso:espresso-core:3.1.0", "dependencies": [ - "androidx.annotation:annotation:1.1.0", - "androidx.test:monitor:1.4.0", "com.google.code.findbugs:jsr305:3.0.2", "org.hamcrest:hamcrest-library:1.3", "androidx.test:runner:1.2.0", "org.hamcrest:hamcrest-integration:1.3", "org.hamcrest:hamcrest-core:1.3", - "androidx.test.espresso:espresso-idling-resource:3.2.0", "com.squareup:javawriter:2.1.1", "javax.inject:javax.inject:1", - "junit:junit:4.13.2", - "net.sf.kxml:kxml2:2.3.0" + "androidx.test.espresso:espresso-idling-resource:3.1.0" ], "directDependencies": [ "com.google.code.findbugs:jsr305:3.0.2", "org.hamcrest:hamcrest-library:1.3", "androidx.test:runner:1.2.0", "org.hamcrest:hamcrest-integration:1.3", - "androidx.test.espresso:espresso-idling-resource:3.2.0", "com.squareup:javawriter:2.1.1", - "javax.inject:javax.inject:1" + "javax.inject:javax.inject:1", + "androidx.test.espresso:espresso-idling-resource:3.1.0" ], - "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar", + "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar", "mirror_urls": [ - "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar", - "https://maven.fabric.io/public/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar", - "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar" + "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar", + "https://maven.fabric.io/public/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar", + "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar" ], - "sha256": "beb4712c2520c1da30ac1f25506871f16ea5b83ee686ece5a258769df1a01e15", - "url": "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0.aar" + "sha256": "af9c385fb753e4ee9f7def800dbbc4a25841bec95727e3ef30e9d04d76b73fe9", + "url": "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0.aar" }, { - "coord": "androidx.test.espresso:espresso-core:jar:sources:3.2.0", + "coord": "androidx.test.espresso:espresso-core:jar:sources:3.1.0", "dependencies": [ "com.google.code.findbugs:jsr305:jar:sources:3.0.2", - "androidx.test:monitor:jar:sources:1.4.0", "org.hamcrest:hamcrest-integration:jar:sources:1.3", - "junit:junit:jar:sources:4.13.2", "com.squareup:javawriter:jar:sources:2.1.1", "javax.inject:javax.inject:jar:sources:1", "org.hamcrest:hamcrest-core:jar:sources:1.3", - "androidx.test.espresso:espresso-idling-resource:jar:sources:3.2.0", "org.hamcrest:hamcrest-library:jar:sources:1.3", - "androidx.annotation:annotation:jar:sources:1.1.0", "androidx.test:runner:jar:sources:1.2.0", - "net.sf.kxml:kxml2:jar:sources:2.3.0" + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0" ], "directDependencies": [ "com.google.code.findbugs:jsr305:jar:sources:3.0.2", "org.hamcrest:hamcrest-integration:jar:sources:1.3", "com.squareup:javawriter:jar:sources:2.1.1", "javax.inject:javax.inject:jar:sources:1", - "androidx.test.espresso:espresso-idling-resource:jar:sources:3.2.0", "org.hamcrest:hamcrest-library:jar:sources:1.3", - "androidx.test:runner:jar:sources:1.2.0" + "androidx.test:runner:jar:sources:1.2.0", + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0" ], - "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar", + "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar", "mirror_urls": [ - "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar", - "https://maven.fabric.io/public/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar", - "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar" + "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar", + "https://maven.fabric.io/public/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar", + "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar" ], - "sha256": "08d443f440e8b4fdd5eb4dbc5447264d79350fa7fbc256762b86f1c9fabb6b07", - "url": "https://maven.google.com/androidx/test/espresso/espresso-core/3.2.0/espresso-core-3.2.0-sources.jar" + "sha256": "3c213555e35e5f0c4ef672f882810102cd678b1df58dc21d4873f8cebbdce1c8", + "url": "https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espresso-core-3.1.0-sources.jar" }, { - "coord": "androidx.test.espresso:espresso-idling-resource:3.2.0", + "coord": "androidx.test.espresso:espresso-idling-resource:3.1.0", "dependencies": [], "directDependencies": [], - "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar", + "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar", "mirror_urls": [ - "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar", - "https://maven.fabric.io/public/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar", - "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar" + "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar", + "https://maven.fabric.io/public/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar", + "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar" ], - "sha256": "c1a0454fe95788122ba652c3ecff7ec538c7e27de206aed970f2809fb8090d09", - "url": "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0.aar" + "sha256": "c1a6a7add4f5d51627539fb8875a6cc3285d51638f6d638ee32f58254861f482", + "url": "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0.aar" }, { - "coord": "androidx.test.espresso:espresso-idling-resource:jar:sources:3.2.0", + "coord": "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0", "dependencies": [], "directDependencies": [], - "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar", + "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar", "mirror_urls": [ - "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar", - "https://maven.fabric.io/public/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar", - "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar", - "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar" + "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar", + "https://maven.fabric.io/public/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar", + "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar", + "https://repo1.maven.org/maven2/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar" ], - "sha256": "38935cd32b5c0a868eb3a3cda9465004867d08e631bf872ffa8bbb158b3d32fc", - "url": "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.2.0/espresso-idling-resource-3.2.0-sources.jar" + "sha256": "2fc10d44ede64066fcf3d4d4dc4fd6428199ba914ea34ceb0cdac7fa62e6300a", + "url": "https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.1.0/espresso-idling-resource-3.1.0-sources.jar" }, { "coord": "androidx.test.espresso:espresso-intents:3.1.0", "dependencies": [ + "androidx.test.espresso:espresso-core:3.1.0", + "com.google.code.findbugs:jsr305:3.0.2", + "org.hamcrest:hamcrest-library:1.3", + "androidx.test:runner:1.2.0", + "org.hamcrest:hamcrest-integration:1.3", + "org.hamcrest:hamcrest-core:1.3", "androidx.test:rules:1.1.0", - "androidx.test.espresso:espresso-core:3.2.0", - "androidx.test:runner:1.2.0" + "com.squareup:javawriter:2.1.1", + "javax.inject:javax.inject:1", + "androidx.test.espresso:espresso-idling-resource:3.1.0" ], "directDependencies": [ "androidx.test:rules:1.1.0", - "androidx.test.espresso:espresso-core:3.2.0" + "androidx.test.espresso:espresso-core:3.1.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-intents/3.1.0/espresso-intents-3.1.0.aar", "mirror_urls": [ @@ -3373,12 +3398,19 @@ "coord": "androidx.test.espresso:espresso-intents:jar:sources:3.1.0", "dependencies": [ "androidx.test:rules:jar:sources:1.1.0", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "org.hamcrest:hamcrest-integration:jar:sources:1.3", + "com.squareup:javawriter:jar:sources:2.1.1", + "javax.inject:javax.inject:jar:sources:1", + "org.hamcrest:hamcrest-core:jar:sources:1.3", + "org.hamcrest:hamcrest-library:jar:sources:1.3", "androidx.test:runner:jar:sources:1.2.0", - "androidx.test.espresso:espresso-core:jar:sources:3.2.0" + "androidx.test.espresso:espresso-idling-resource:jar:sources:3.1.0", + "androidx.test.espresso:espresso-core:jar:sources:3.1.0" ], "directDependencies": [ "androidx.test:rules:jar:sources:1.1.0", - "androidx.test.espresso:espresso-core:jar:sources:3.2.0" + "androidx.test.espresso:espresso-core:jar:sources:3.1.0" ], "file": "v1/https/maven.google.com/androidx/test/espresso/espresso-intents/3.1.0/espresso-intents-3.1.0-sources.jar", "mirror_urls": [ @@ -4680,12 +4712,12 @@ "androidx.legacy:legacy-support-core-utils:aar:1.0.0", "com.google.guava:guava:30.1.1-android", "androidx.slidingpanelayout:slidingpanelayout:aar:1.0.0", - "com.google.errorprone:error_prone_annotations:2.7.1", "androidx.lifecycle:lifecycle-livedata:aar:2.2.0", "androidx.vectordrawable:vectordrawable:aar:1.1.0", "androidx.cursoradapter:cursoradapter:aar:1.0.0", "androidx.drawerlayout:drawerlayout:aar:1.1.0", "androidx.core:core:aar:1.3.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.github.bumptech.glide:gifdecoder:4.11.0", "androidx.coordinatorlayout:coordinatorlayout:aar:1.1.0", "androidx.print:print:aar:1.0.0", @@ -4754,7 +4786,7 @@ "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "androidx.customview:customview:aar:sources:1.1.0", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "androidx.loader:loader:aar:sources:1.0.0", "androidx.vectordrawable:vectordrawable:aar:sources:1.1.0" ], @@ -4937,7 +4969,7 @@ "url": "https://maven.google.com/com/google/android/gms/play-services-ads-identifier/17.0.0/play-services-ads-identifier-17.0.0.aar" }, { - "coord": "com.google.android.gms:play-services-base:aar:17.0.0", + "coord": "com.google.android.gms:play-services-base:aar:17.1.0", "dependencies": [ "androidx.collection:collection:jar:1.1.0", "com.google.android.gms:play-services-tasks:aar:17.0.0", @@ -4952,16 +4984,16 @@ "androidx.core:core:aar:1.3.1", "com.google.android.gms:play-services-basement:aar:17.0.0" ], - "file": "v1/https/maven.google.com/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar", + "file": "v1/https/maven.google.com/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar", "mirror_urls": [ - "https://maven.google.com/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar", - "https://repo1.maven.org/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar", - "https://maven.fabric.io/public/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar", - "https://maven.google.com/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar", - "https://repo1.maven.org/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar" + "https://maven.google.com/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar", + "https://repo1.maven.org/maven2/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar", + "https://maven.fabric.io/public/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar", + "https://maven.google.com/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar", + "https://repo1.maven.org/maven2/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar" ], - "sha256": "dd0980edf729e0d346e2b58e70801dc237c1aed0c7ab274fa3f1c8c8efc64cc7", - "url": "https://maven.google.com/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.aar" + "sha256": "f02ac8c5661b1708c80a22d515b93032489d412fe02b59a97c04e4b80d1a7dbe", + "url": "https://maven.google.com/com/google/android/gms/play-services-base/17.1.0/play-services-base-17.1.0.aar" }, { "coord": "com.google.android.gms:play-services-basement:aar:17.0.0", @@ -5420,6 +5452,36 @@ "sha256": "1d9fe3a4512512a311889be798e4a0f9cf9fbccddea50a7ca330b1b99ee92993", "url": "https://maven.google.com/com/google/android/material/material/1.3.0/material-1.3.0-sources.jar" }, + { + "coord": "com.google.android:annotations:4.1.1.4", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", + "mirror_urls": [ + "https://maven.google.com/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", + "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", + "https://maven.fabric.io/public/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", + "https://maven.google.com/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar", + "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar" + ], + "sha256": "ba734e1e84c09d615af6a09d33034b4f0442f8772dec120efb376d86a565ae15", + "url": "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4.jar" + }, + { + "coord": "com.google.android:annotations:jar:sources:4.1.1.4", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar", + "mirror_urls": [ + "https://maven.google.com/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar", + "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar", + "https://maven.fabric.io/public/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar", + "https://maven.google.com/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar", + "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar" + ], + "sha256": "e9b667aa958df78ea1ad115f7bbac18a5869c3128b1d5043feb360b0cfce9d40", + "url": "https://repo1.maven.org/maven2/com/google/android/annotations/4.1.1.4/annotations-4.1.1.4-sources.jar" + }, { "coord": "com.google.auto.service:auto-service-annotations:1.0-rc7", "dependencies": [], @@ -5789,34 +5851,34 @@ "url": "https://repo1.maven.org/maven2/com/google/dagger/dagger/2.28.1/dagger-2.28.1-sources.jar" }, { - "coord": "com.google.errorprone:error_prone_annotations:2.7.1", + "coord": "com.google.errorprone:error_prone_annotations:2.9.0", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar", + "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar", "mirror_urls": [ - "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar", - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar", - "https://maven.fabric.io/public/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar", - "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar", - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" + "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar", + "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar", + "https://maven.fabric.io/public/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar", + "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar", + "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar" ], - "sha256": "cd5257c08a246cf8628817ae71cb822be192ef91f6881ca4a3fcff4f1de1cff3", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" + "sha256": "f947bdc33ae27a6b4aa44799e6c21e1944797bd0010ba43eb82d11446e163694", + "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.jar" }, { - "coord": "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "coord": "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar", "mirror_urls": [ - "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar", - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar", - "https://maven.fabric.io/public/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar", - "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar", - "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar" + "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar", + "https://maven.fabric.io/public/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar", + "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar" ], - "sha256": "e38921f918b8ad8eabd12bc61de426fa96c72de077054e9147d2f9fe7c648923", - "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1-sources.jar" + "sha256": "0e41e099f0d4c9be030c34a6991821e67a57e2846dba908f4e9bc9ec60732837", + "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0-sources.jar" }, { "coord": "com.google.errorprone:javac-shaded:9-dev-r4023-3", @@ -5896,6 +5958,141 @@ "sha256": "5c36ae943a719de1c598287370cb3ee1d27fd2dc9d0ada650de2b7f9a1dcac54", "url": "https://maven.google.com/com/google/firebase/firebase-analytics/17.5.0/firebase-analytics-17.5.0.aar" }, + { + "coord": "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "dependencies": [ + "androidx.collection:collection:jar:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "com.google.android.gms:play-services-base:aar:17.1.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.firebase:firebase-common:aar:19.3.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar", + "https://maven.google.com/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar" + ], + "sha256": "17998142300169d07172e79557cb3b392fb3a2ad6eb44030e3f3ec3937f3a222", + "url": "https://maven.google.com/com/google/firebase/firebase-auth-interop/19.0.0/firebase-auth-interop-19.0.0.aar" + }, + { + "coord": "com.google.firebase:firebase-auth-ktx:19.3.1", + "dependencies": [ + "androidx.collection:collection:jar:1.1.0", + "androidx.annotation:annotation:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "com.google.firebase:firebase-common-ktx:aar:19.3.0", + "androidx.annotation:annotation:jar:1.1.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:1.8.1", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.firebase:firebase-auth:aar:19.3.1", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "com.google.firebase:firebase-common:aar:19.3.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10", + "com.google.firebase:firebase-components:aar:16.0.0", + "com.google.firebase:firebase-common-ktx:aar:19.3.0", + "com.google.firebase:firebase-auth:aar:19.3.1" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar", + "https://maven.google.com/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar" + ], + "sha256": "bd23f0077d8e85c8c57e06c06cdcccdc06a3de96facdd72fabd11159f01c4d4d", + "url": "https://maven.google.com/com/google/firebase/firebase-auth-ktx/19.3.1/firebase-auth-ktx-19.3.1.aar" + }, + { + "coord": "com.google.firebase:firebase-auth:aar:19.3.1", + "dependencies": [ + "androidx.collection:collection:jar:1.1.0", + "androidx.annotation:annotation:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "androidx.annotation:annotation:jar:1.1.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:1.8.1", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "androidx.collection:collection:jar:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.fragment:fragment:aar:1.2.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar", + "https://maven.google.com/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar" + ], + "sha256": "0523401e4028729d1a882d2f787cd180bdf91bd12cb1d362453a770e6a2f72c1", + "url": "https://maven.google.com/com/google/firebase/firebase-auth/19.3.1/firebase-auth-19.3.1.aar" + }, + { + "coord": "com.google.firebase:firebase-common-ktx:aar:19.3.0", + "dependencies": [ + "androidx.collection:collection:jar:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "androidx.annotation:annotation:jar:1.1.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:1.8.1" + ], + "directDependencies": [ + "androidx.annotation:annotation:jar:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar", + "https://maven.google.com/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar" + ], + "sha256": "5e2890a119a946309bde2dc5066be224df4a00b9905bebbc6dd035e4f9d98786", + "url": "https://maven.google.com/com/google/firebase/firebase-common-ktx/19.3.0/firebase-common-ktx-19.3.0.aar" + }, { "coord": "com.google.firebase:firebase-common:19.3.0", "dependencies": [ @@ -6000,7 +6197,6 @@ "androidx.collection:collection:jar:1.1.0", "com.google.android.gms:play-services-stats:aar:17.0.0", "androidx.annotation:annotation:1.1.0", - "com.google.android.gms:play-services-base:aar:17.0.0", "com.google.firebase:firebase-iid:aar:20.1.5", "com.google.firebase:firebase-common:aar:19.3.0", "com.google.android.datatransport:transport-backend-cct:aar:2.3.0", @@ -6024,7 +6220,8 @@ "com.google.android.datatransport:transport-runtime:aar:2.2.3", "com.google.auto.value:auto-value-annotations:jar:1.8.1", "com.google.firebase:firebase-installations-interop:aar:16.0.0", - "androidx.loader:loader:aar:1.0.0" + "androidx.loader:loader:aar:1.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" ], "directDependencies": [ "com.google.firebase:firebase-measurement-connector:aar:18.0.0", @@ -6050,6 +6247,44 @@ "sha256": "635953640e1bbb277affadbc3e59b43f1c4dd07de79c8973b6341a756ad8b74b", "url": "https://maven.google.com/com/google/firebase/firebase-crashlytics/17.1.1/firebase-crashlytics-17.1.1.aar" }, + { + "coord": "com.google.firebase:firebase-database-collection:aar:17.0.1", + "dependencies": [ + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar", + "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar" + ], + "sha256": "dc75440106b2aba44626e03794abfee873db63edb41fbd584897daa7847d7ad4", + "url": "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1.aar" + }, + { + "coord": "com.google.firebase:firebase-database-collection:aar:sources:17.0.1", + "dependencies": [ + "com.google.android.gms:play-services-base:aar:sources:17.1.0" + ], + "directDependencies": [ + "com.google.android.gms:play-services-base:aar:sources:17.1.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar", + "https://maven.fabric.io/public/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar", + "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar" + ], + "sha256": "45405b15ca8596bf85a31cc9749eaf552a307261c36f56bd138c7917bfe6d5f4", + "url": "https://maven.google.com/com/google/firebase/firebase-database-collection/17.0.1/firebase-database-collection-17.0.1-sources.jar" + }, { "coord": "com.google.firebase:firebase-encoders-json:aar:16.1.0", "dependencies": [ @@ -6089,67 +6324,322 @@ "url": "https://maven.google.com/com/google/firebase/firebase-encoders-json/16.1.0/firebase-encoders-json-16.1.0-sources.jar" }, { - "coord": "com.google.firebase:firebase-iid-interop:aar:17.0.0", + "coord": "com.google.firebase:firebase-firestore-ktx:21.5.0", "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "io.grpc:grpc-android:aar:1.28.0", + "io.grpc:grpc-stub:jar:1.28.0", "androidx.collection:collection:jar:1.1.0", - "com.google.android.gms:play-services-base:aar:17.0.0", + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.squareup.okhttp:okhttp:jar:2.7.5", + "com.google.protobuf:protobuf-javalite:3.17.3", + "com.google.firebase:firebase-common:aar:19.3.0", + "io.grpc:grpc-okhttp:jar:1.28.0", + "io.grpc:grpc-protobuf-lite:jar:1.28.0", + "com.google.firebase:protolite-well-known-types:aar:17.1.0", + "com.google.android:annotations:4.1.1.4", "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.guava:guava:30.1.1-android", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10", + "com.google.firebase:firebase-components:aar:16.0.0", + "com.google.firebase:firebase-firestore:aar:21.5.0", + "com.google.code.gson:gson:2.8.6", + "com.google.firebase:firebase-database-collection:aar:17.0.1", "androidx.fragment:fragment:aar:1.2.0", + "io.grpc:grpc-core:1.28.0", "androidx.core:core:aar:1.3.1", - "com.google.android.gms:play-services-basement:aar:17.0.0" + "com.google.protobuf:protobuf-javalite:jar:3.17.3", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:2.6.0", + "com.google.firebase:firebase-common-ktx:aar:19.3.0", + "androidx.annotation:annotation:jar:1.1.0", + "com.google.guava:failureaccess:1.0.1", + "io.grpc:grpc-api:1.28.0", + "org.jetbrains.kotlin:kotlin-stdlib:1.5.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:1.8.1", + "io.perfmark:perfmark-api:0.19.0", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0", + "org.checkerframework:checker-compat-qual:2.5.5" ], "directDependencies": [ - "com.google.android.gms:play-services-base:aar:17.0.0", - "com.google.android.gms:play-services-basement:aar:17.0.0" + "com.google.firebase:firebase-common:aar:19.3.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10", + "com.google.firebase:firebase-components:aar:16.0.0", + "com.google.firebase:firebase-firestore:aar:21.5.0", + "com.google.firebase:firebase-common-ktx:aar:19.3.0", + "androidx.annotation:annotation:jar:1.1.0" ], - "file": "v1/https/maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "file": "v1/https/maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar", "mirror_urls": [ - "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", - "https://repo1.maven.org/maven2/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", - "https://maven.fabric.io/public/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", - "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", - "https://repo1.maven.org/maven2/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar" + "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar", + "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar" ], - "sha256": "b6f4ad581eb489370be3bf38a4bdabfc6ea3d4e716234c625a0f42516c53523c", - "url": "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar" + "sha256": "8a2c743c73df35b15313c92942a4c9772bc0a5e4d88db68971479a41b78d1799", + "url": "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0.aar" }, { - "coord": "com.google.firebase:firebase-iid:aar:20.1.5", + "coord": "com.google.firebase:firebase-firestore-ktx:jar:sources:21.5.0", "dependencies": [ - "com.google.firebase:firebase-installations:aar:16.3.2", + "com.google.guava:guava:jar:sources:30.1.1-android", + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "org.jetbrains.kotlin:kotlin-stdlib:jar:sources:1.5.0", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.android:annotations:jar:sources:4.1.1.4", + "androidx.core:core:aar:sources:1.3.1", + "io.grpc:grpc-protobuf-lite:jar:sources:1.28.0", + "io.grpc:grpc-api:jar:sources:1.28.0", + "com.google.j2objc:j2objc-annotations:jar:sources:1.3", + "io.grpc:grpc-stub:jar:sources:1.28.0", + "com.google.firebase:firebase-common-ktx:aar:sources:19.3.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "io.grpc:grpc-android:aar:sources:1.28.0", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "com.google.firebase:firebase-firestore:aar:sources:21.5.0", + "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.firebase:firebase-database-collection:aar:sources:17.0.1", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.code.gson:gson:jar:sources:2.8.6", + "com.google.firebase:protolite-well-known-types:aar:sources:17.1.0", + "androidx.annotation:annotation:jar:sources:1.1.0", + "io.grpc:grpc-okhttp:jar:sources:1.28.0", + "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", + "com.squareup.okio:okio:jar:sources:2.6.0", + "io.grpc:grpc-core:jar:sources:1.28.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.guava:failureaccess:jar:sources:1.0.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0", + "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0", + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3" + ], + "directDependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "com.google.firebase:firebase-common-ktx:aar:sources:19.3.0", + "com.google.firebase:firebase-firestore:aar:sources:21.5.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", + "androidx.annotation:annotation:jar:sources:1.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar", + "https://maven.fabric.io/public/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar", + "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar" + ], + "sha256": "ce909891d97d530388a7a1cb31e3a7e9efc9fd0bc6c5ed088525b7652e613c49", + "url": "https://maven.google.com/com/google/firebase/firebase-firestore-ktx/21.5.0/firebase-firestore-ktx-21.5.0-sources.jar" + }, + { + "coord": "com.google.firebase:firebase-firestore:aar:21.5.0", + "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "io.grpc:grpc-android:aar:1.28.0", + "io.grpc:grpc-stub:jar:1.28.0", "androidx.collection:collection:jar:1.1.0", - "com.google.android.gms:play-services-stats:aar:17.0.0", - "androidx.annotation:annotation:1.1.0", - "com.google.android.gms:play-services-base:aar:17.0.0", + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.squareup.okhttp:okhttp:jar:2.7.5", + "com.google.protobuf:protobuf-javalite:3.17.3", "com.google.firebase:firebase-common:aar:19.3.0", - "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", - "androidx.legacy:legacy-support-core-utils:aar:1.0.0", + "io.grpc:grpc-okhttp:jar:1.28.0", + "io.grpc:grpc-protobuf-lite:jar:1.28.0", + "com.google.firebase:protolite-well-known-types:aar:17.1.0", + "com.google.android:annotations:4.1.1.4", "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.guava:guava:30.1.1-android", "com.google.firebase:firebase-components:aar:16.0.0", - "androidx.lifecycle:lifecycle-livedata:aar:2.2.0", + "com.google.code.gson:gson:2.8.6", + "com.google.firebase:firebase-database-collection:aar:17.0.1", "androidx.fragment:fragment:aar:1.2.0", + "io.grpc:grpc-core:1.28.0", "androidx.core:core:aar:1.3.1", - "androidx.print:print:aar:1.0.0", + "com.google.protobuf:protobuf-javalite:jar:3.17.3", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:2.6.0", "androidx.annotation:annotation:jar:1.1.0", - "androidx.lifecycle:lifecycle-viewmodel:aar:2.2.0", - "androidx.documentfile:documentfile:aar:1.0.0", + "com.google.guava:failureaccess:1.0.1", + "io.grpc:grpc-api:1.28.0", "com.google.android.gms:play-services-basement:aar:17.0.0", - "com.google.firebase:firebase-iid-interop:aar:17.0.0", "com.google.auto.value:auto-value-annotations:jar:1.8.1", - "com.google.firebase:firebase-installations-interop:aar:16.0.0", - "androidx.loader:loader:aar:1.0.0" + "io.perfmark:perfmark-api:0.19.0", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0", + "org.checkerframework:checker-compat-qual:2.5.5" ], "directDependencies": [ - "com.google.firebase:firebase-installations:aar:16.3.2", - "androidx.collection:collection:jar:1.1.0", - "com.google.android.gms:play-services-stats:aar:17.0.0", + "io.grpc:grpc-android:aar:1.28.0", + "io.grpc:grpc-stub:jar:1.28.0", + "com.squareup.okhttp:okhttp:jar:2.7.5", "com.google.firebase:firebase-common:aar:19.3.0", - "androidx.legacy:legacy-support-core-utils:aar:1.0.0", + "io.grpc:grpc-okhttp:jar:1.28.0", + "io.grpc:grpc-protobuf-lite:jar:1.28.0", + "com.google.firebase:protolite-well-known-types:aar:17.1.0", "com.google.android.gms:play-services-tasks:aar:17.0.0", "com.google.firebase:firebase-components:aar:16.0.0", - "androidx.core:core:aar:1.3.1", + "com.google.firebase:firebase-database-collection:aar:17.0.1", + "androidx.annotation:annotation:jar:1.1.0", "com.google.android.gms:play-services-basement:aar:17.0.0", - "com.google.firebase:firebase-iid-interop:aar:17.0.0", + "com.google.firebase:firebase-auth-interop:aar:19.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar", + "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar" + ], + "sha256": "3dc212953022eac16a3c9c3835159649dd0f1bf6e0c2d799b601ee5b6ed37541", + "url": "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0.aar" + }, + { + "coord": "com.google.firebase:firebase-firestore:aar:sources:21.5.0", + "dependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.android:annotations:jar:sources:4.1.1.4", + "androidx.core:core:aar:sources:1.3.1", + "io.grpc:grpc-protobuf-lite:jar:sources:1.28.0", + "io.grpc:grpc-api:jar:sources:1.28.0", + "com.google.j2objc:j2objc-annotations:jar:sources:1.3", + "io.grpc:grpc-stub:jar:sources:1.28.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "io.grpc:grpc-android:aar:sources:1.28.0", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.firebase:firebase-database-collection:aar:sources:17.0.1", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.code.gson:gson:jar:sources:2.8.6", + "com.google.firebase:protolite-well-known-types:aar:sources:17.1.0", + "androidx.annotation:annotation:jar:sources:1.1.0", + "io.grpc:grpc-okhttp:jar:sources:1.28.0", + "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", + "com.squareup.okio:okio:jar:sources:2.6.0", + "io.grpc:grpc-core:jar:sources:1.28.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.guava:failureaccess:jar:sources:1.0.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0", + "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0", + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3" + ], + "directDependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "io.grpc:grpc-protobuf-lite:jar:sources:1.28.0", + "io.grpc:grpc-stub:jar:sources:1.28.0", + "io.grpc:grpc-android:aar:sources:1.28.0", + "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.firebase:firebase-database-collection:aar:sources:17.0.1", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.firebase:protolite-well-known-types:aar:sources:17.1.0", + "androidx.annotation:annotation:jar:sources:1.1.0", + "io.grpc:grpc-okhttp:jar:sources:1.28.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar", + "https://maven.fabric.io/public/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar", + "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar" + ], + "sha256": "b61a30dc0159462149cf155d857cb3710aacef7cf8b38d39e4773066e7de639f", + "url": "https://maven.google.com/com/google/firebase/firebase-firestore/21.5.0/firebase-firestore-21.5.0-sources.jar" + }, + { + "coord": "com.google.firebase:firebase-iid-interop:aar:17.0.0", + "dependencies": [ + "androidx.collection:collection:jar:1.1.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "com.google.android.gms:play-services-base:aar:17.1.0", + "com.google.android.gms:play-services-basement:aar:17.0.0" + ], + "file": "v1/https/maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "https://maven.fabric.io/public/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar" + ], + "sha256": "b6f4ad581eb489370be3bf38a4bdabfc6ea3d4e716234c625a0f42516c53523c", + "url": "https://maven.google.com/com/google/firebase/firebase-iid-interop/17.0.0/firebase-iid-interop-17.0.0.aar" + }, + { + "coord": "com.google.firebase:firebase-iid:aar:20.1.5", + "dependencies": [ + "com.google.firebase:firebase-installations:aar:16.3.2", + "androidx.collection:collection:jar:1.1.0", + "com.google.android.gms:play-services-stats:aar:17.0.0", + "androidx.annotation:annotation:1.1.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:1.0.0", + "androidx.legacy:legacy-support-core-utils:aar:1.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.lifecycle:lifecycle-livedata:aar:2.2.0", + "androidx.fragment:fragment:aar:1.2.0", + "androidx.core:core:aar:1.3.1", + "androidx.print:print:aar:1.0.0", + "androidx.annotation:annotation:jar:1.1.0", + "androidx.lifecycle:lifecycle-viewmodel:aar:2.2.0", + "androidx.documentfile:documentfile:aar:1.0.0", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.firebase:firebase-iid-interop:aar:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:1.8.1", + "com.google.firebase:firebase-installations-interop:aar:16.0.0", + "androidx.loader:loader:aar:1.0.0", + "com.google.android.gms:play-services-base:aar:17.1.0" + ], + "directDependencies": [ + "com.google.firebase:firebase-installations:aar:16.3.2", + "androidx.collection:collection:jar:1.1.0", + "com.google.android.gms:play-services-stats:aar:17.0.0", + "com.google.firebase:firebase-common:aar:19.3.0", + "androidx.legacy:legacy-support-core-utils:aar:1.0.0", + "com.google.android.gms:play-services-tasks:aar:17.0.0", + "com.google.firebase:firebase-components:aar:16.0.0", + "androidx.core:core:aar:1.3.1", + "com.google.android.gms:play-services-basement:aar:17.0.0", + "com.google.firebase:firebase-iid-interop:aar:17.0.0", "com.google.firebase:firebase-installations-interop:aar:16.0.0" ], "file": "v1/https/maven.google.com/com/google/firebase/firebase-iid/20.1.5/firebase-iid-20.1.5.aar", @@ -6239,6 +6729,25 @@ "sha256": "17e8b9b60ac0a79fcbed754d03d4b966cc5bb8837e79c2308bf2970f1d05700c", "url": "https://maven.google.com/com/google/firebase/firebase-measurement-connector/18.0.0/firebase-measurement-connector-18.0.0.aar" }, + { + "coord": "com.google.firebase:protolite-well-known-types:aar:17.1.0", + "dependencies": [ + "com.google.protobuf:protobuf-javalite:jar:3.17.3" + ], + "directDependencies": [ + "com.google.protobuf:protobuf-javalite:jar:3.17.3" + ], + "file": "v1/https/maven.google.com/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar", + "mirror_urls": [ + "https://maven.google.com/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar", + "https://maven.fabric.io/public/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar", + "https://maven.google.com/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar", + "https://repo1.maven.org/maven2/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar" + ], + "sha256": "9468971abac0d6f9d45ba549c0614e75c2afcfb21e729bdddf70af50730d417b", + "url": "https://maven.google.com/com/google/firebase/protolite-well-known-types/17.1.0/protolite-well-known-types-17.1.0.aar" + }, { "coord": "com.google.gms:google-services:4.3.3", "dependencies": [ @@ -6367,7 +6876,7 @@ "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", "com.google.j2objc:j2objc-annotations:1.3", "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.7.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.guava:failureaccess:1.0.1", "org.checkerframework:checker-compat-qual:2.5.5" ], @@ -6375,7 +6884,7 @@ "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", "com.google.j2objc:j2objc-annotations:1.3", "com.google.code.findbugs:jsr305:3.0.2", - "com.google.errorprone:error_prone_annotations:2.7.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.guava:failureaccess:1.0.1", "org.checkerframework:checker-compat-qual:2.5.5" ], @@ -6398,7 +6907,7 @@ "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" ], "directDependencies": [ "com.google.code.findbugs:jsr305:jar:sources:3.0.2", @@ -6406,7 +6915,7 @@ "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" ], "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava/30.1.1-android/guava-30.1.1-android-sources.jar", "mirror_urls": [ @@ -6471,15 +6980,15 @@ "com.google.j2objc:j2objc-annotations:1.3", "com.google.code.findbugs:jsr305:3.0.2", "com.google.guava:guava:30.1.1-android", - "com.google.errorprone:error_prone_annotations:2.7.1", "com.google.code.gson:gson:2.8.6", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.protobuf:protobuf-java:3.17.3", "com.google.guava:failureaccess:1.0.1", "org.checkerframework:checker-compat-qual:2.5.5" ], "directDependencies": [ "com.google.code.gson:gson:2.8.6", - "com.google.errorprone:error_prone_annotations:2.7.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.guava:guava:30.1.1-android", "com.google.protobuf:protobuf-java:3.17.3" ], @@ -6505,11 +7014,11 @@ "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" ], "directDependencies": [ "com.google.code.gson:gson:jar:sources:2.8.6", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "com.google.guava:guava:jar:sources:30.1.1-android", "com.google.protobuf:protobuf-java:jar:sources:3.17.3" ], @@ -6592,21 +7101,21 @@ "com.google.truth:truth:1.1.3", "com.google.code.findbugs:jsr305:3.0.2", "com.google.guava:guava:30.1.1-android", - "com.google.errorprone:error_prone_annotations:2.7.1", "org.hamcrest:hamcrest-core:1.3", "org.checkerframework:checker-qual:3.13.0", + "org.ow2.asm:asm:9.2", "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.guava:failureaccess:1.0.1", - "org.ow2.asm:asm:9.1", "junit:junit:4.13.2", "org.checkerframework:checker-compat-qual:2.5.5" ], "directDependencies": [ "com.google.truth:truth:1.1.3", "com.google.guava:guava:30.1.1-android", - "com.google.errorprone:error_prone_annotations:2.7.1", "org.checkerframework:checker-qual:3.13.0", - "com.google.auto.value:auto-value-annotations:1.8.1" + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.errorprone:error_prone_annotations:2.9.0" ], "file": "v1/https/repo1.maven.org/maven2/com/google/truth/extensions/truth-liteproto-extension/1.1.3/truth-liteproto-extension-1.1.3.jar", "mirror_urls": [ @@ -6622,10 +7131,10 @@ { "coord": "com.google.truth.extensions:truth-liteproto-extension:jar:sources:1.1.3", "dependencies": [ + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", "com.google.code.findbugs:jsr305:jar:sources:3.0.2", "com.google.j2objc:j2objc-annotations:jar:sources:1.3", - "org.ow2.asm:asm:jar:sources:9.1", "org.checkerframework:checker-qual:jar:sources:3.13.0", "junit:junit:jar:sources:4.13.2", "org.hamcrest:hamcrest-core:jar:sources:1.3", @@ -6633,14 +7142,14 @@ "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1" ], "directDependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", "org.checkerframework:checker-qual:jar:sources:3.13.0", "com.google.truth:truth:jar:sources:1.1.3", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1" ], "file": "v1/https/repo1.maven.org/maven2/com/google/truth/extensions/truth-liteproto-extension/1.1.3/truth-liteproto-extension-1.1.3-sources.jar", @@ -6661,21 +7170,21 @@ "com.google.j2objc:j2objc-annotations:1.3", "com.google.code.findbugs:jsr305:3.0.2", "com.google.guava:guava:30.1.1-android", - "com.google.errorprone:error_prone_annotations:2.7.1", "org.hamcrest:hamcrest-core:1.3", "org.checkerframework:checker-qual:3.13.0", + "org.ow2.asm:asm:9.2", "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "com.google.guava:failureaccess:1.0.1", - "org.ow2.asm:asm:9.1", "junit:junit:4.13.2", "org.checkerframework:checker-compat-qual:2.5.5" ], "directDependencies": [ "com.google.guava:guava:30.1.1-android", - "com.google.errorprone:error_prone_annotations:2.7.1", "org.checkerframework:checker-qual:3.13.0", + "org.ow2.asm:asm:9.2", "com.google.auto.value:auto-value-annotations:1.8.1", - "org.ow2.asm:asm:9.1", + "com.google.errorprone:error_prone_annotations:2.9.0", "junit:junit:4.13.2" ], "file": "v1/https/repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3.jar", @@ -6692,25 +7201,25 @@ { "coord": "com.google.truth:truth:jar:sources:1.1.3", "dependencies": [ + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", "com.google.code.findbugs:jsr305:jar:sources:3.0.2", "com.google.j2objc:j2objc-annotations:jar:sources:1.3", - "org.ow2.asm:asm:jar:sources:9.1", "org.checkerframework:checker-qual:jar:sources:3.13.0", "junit:junit:jar:sources:4.13.2", "org.hamcrest:hamcrest-core:jar:sources:1.3", "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "com.google.guava:failureaccess:jar:sources:1.0.1", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1" ], "directDependencies": [ + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.ow2.asm:asm:jar:sources:9.1", "org.checkerframework:checker-qual:jar:sources:3.13.0", "junit:junit:jar:sources:4.13.2", - "com.google.errorprone:error_prone_annotations:jar:sources:2.7.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1" ], "file": "v1/https/repo1.maven.org/maven2/com/google/truth/truth/1.1.3/truth-1.1.3-sources.jar", @@ -6788,6 +7297,7 @@ "coord": "com.squareup.moshi:moshi-kotlin-codegen:1.11.0", "dependencies": [ "com.squareup:kotlinpoet:1.6.0", + "org.ow2.asm:asm:9.2", "com.squareup.moshi:moshi:1.11.0", "com.google.auto.service:auto-service-annotations:1.0-rc7", "net.ltgt.gradle.incap:incap:0.3", @@ -6795,16 +7305,15 @@ "com.squareup.okio:okio:2.6.0", "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10", "org.jetbrains.kotlin:kotlin-stdlib:1.5.0", - "org.ow2.asm:asm:9.1", "org.jetbrains.kotlin:kotlin-reflect:1.5.0" ], "directDependencies": [ "com.squareup:kotlinpoet:1.6.0", + "org.ow2.asm:asm:9.2", "com.squareup.moshi:moshi:1.11.0", "com.google.auto.service:auto-service-annotations:1.0-rc7", "net.ltgt.gradle.incap:incap:0.3", "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10", - "org.ow2.asm:asm:9.1", "org.jetbrains.kotlin:kotlin-reflect:1.5.0" ], "file": "v1/https/repo1.maven.org/maven2/com/squareup/moshi/moshi-kotlin-codegen/1.11.0/moshi-kotlin-codegen-1.11.0.jar", @@ -6822,8 +7331,8 @@ "coord": "com.squareup.moshi:moshi-kotlin-codegen:jar:sources:1.11.0", "dependencies": [ "com.google.auto.service:auto-service-annotations:jar:sources:1.0-rc7", + "org.ow2.asm:asm:jar:sources:9.2", "org.jetbrains.kotlin:kotlin-stdlib:jar:sources:1.5.0", - "org.ow2.asm:asm:jar:sources:9.1", "org.jetbrains.kotlin:kotlin-reflect:jar:sources:1.5.0", "org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:sources:1.4.10", "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", @@ -6834,7 +7343,7 @@ ], "directDependencies": [ "com.google.auto.service:auto-service-annotations:jar:sources:1.0-rc7", - "org.ow2.asm:asm:jar:sources:9.1", + "org.ow2.asm:asm:jar:sources:9.2", "org.jetbrains.kotlin:kotlin-reflect:jar:sources:1.5.0", "org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:sources:1.4.10", "com.squareup:kotlinpoet:jar:sources:1.6.0", @@ -7032,6 +7541,42 @@ "sha256": "88348cf944f841a7a8f5f38960474592e0c1ed8a53349cabe05b22d255479772", "url": "https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp/4.7.2/okhttp-4.7.2-sources.jar" }, + { + "coord": "com.squareup.okhttp:okhttp:2.7.5", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.squareup.okio:okio" + ], + "file": "v1/https/repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "mirror_urls": [ + "https://maven.google.com/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "https://maven.fabric.io/public/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "https://maven.google.com/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar" + ], + "sha256": "88ac9fd1bb51f82bcc664cc1eb9c225c90dc4389d660231b4cc737bebfe7d0aa", + "url": "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar" + }, + { + "coord": "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.squareup.okio:okio" + ], + "file": "v1/https/repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar", + "mirror_urls": [ + "https://maven.google.com/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar", + "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar", + "https://maven.fabric.io/public/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar", + "https://maven.google.com/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar", + "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar" + ], + "sha256": "edfafce3b9abb0fc31b5c72cc5f533516a08f7b86754138f36595a6837746ddf", + "url": "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5-sources.jar" + }, { "coord": "com.squareup.okio:okio:2.6.0", "dependencies": [ @@ -7403,6 +7948,424 @@ "sha256": "36df4b321ec95e31226ff5abaae73e66f3a99dedddbc2d03054c4e141c8aaa5c", "url": "https://maven.google.com/io/fabric/sdk/android/fabric/1.4.7/fabric-1.4.7.aar" }, + { + "coord": "io.grpc:grpc-android:aar:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.android:annotations:4.1.1.4", + "com.google.code.gson:gson:2.8.6", + "io.grpc:grpc-core:1.28.0", + "com.google.errorprone:error_prone_annotations:2.9.0", + "io.grpc:grpc-api:1.28.0", + "io.perfmark:perfmark-api:0.19.0" + ], + "directDependencies": [ + "io.grpc:grpc-core:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar", + "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar", + "https://maven.fabric.io/public/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar", + "https://maven.google.com/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar", + "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar" + ], + "sha256": "56cdc27a27b178a8c6ac9b64381e81bc9e758b212187de948ab56e0b17e001e2", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0.aar" + }, + { + "coord": "io.grpc:grpc-android:aar:sources:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.android:annotations:jar:sources:4.1.1.4", + "io.grpc:grpc-api:jar:sources:1.28.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "com.google.code.gson:gson:jar:sources:2.8.6", + "io.grpc:grpc-core:jar:sources:1.28.0", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" + ], + "directDependencies": [ + "io.grpc:grpc-core:jar:sources:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar" + ], + "sha256": "f341e8a21016db31241f3a5a090a60f99c4b48822522f051c52cdf7ff6216a7a", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-android/1.28.0/grpc-android-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-api:1.28.0", + "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.google.guava:failureaccess:1.0.1", + "org.checkerframework:checker-compat-qual:2.5.5" + ], + "directDependencies": [ + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar" + ], + "sha256": "10db0e02a85601d38da1b77bfcd7ae08f56b719a5e22aae9894a19c64b0fa8ce", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-api:jar:sources:1.28.0", + "dependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.j2objc:j2objc-annotations:jar:sources:1.3", + "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", + "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", + "com.google.guava:failureaccess:jar:sources:1.0.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0" + ], + "directDependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar" + ], + "sha256": "a1ecf073671930e4883525cfa11850f04ba78b73f1e8434b81a0b2bf9b2f5927", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-api/1.28.0/grpc-api-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-context:1.28.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar" + ], + "sha256": "cc57df006555be067af2a6ae9c6510bd7ed40a2dc1af278ceb4e491ce7f184de", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-context:jar:sources:1.28.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar" + ], + "sha256": "d0f932244bee0f4c497646b5d94baa13877f4eddc4623ec6007dd5698253b421", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.28.0/grpc-context-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-core:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.android:annotations:4.1.1.4", + "com.google.code.gson:gson:2.8.6", + "com.google.errorprone:error_prone_annotations:2.9.0", + "io.grpc:grpc-api:1.28.0", + "io.perfmark:perfmark-api:0.19.0" + ], + "directDependencies": [ + "com.google.android:annotations:4.1.1.4", + "com.google.code.gson:gson:2.8.6", + "com.google.errorprone:error_prone_annotations:2.9.0", + "io.grpc:grpc-api:1.28.0", + "io.perfmark:perfmark-api:0.19.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar" + ], + "sha256": "be7754fd1bcc58d25009e2f8aff5d5bb243ca0b8acf969b77b2ee606c2a1fcc3", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-core:jar:sources:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.android:annotations:jar:sources:4.1.1.4", + "io.grpc:grpc-api:jar:sources:1.28.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "com.google.code.gson:gson:jar:sources:2.8.6", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" + ], + "directDependencies": [ + "com.google.android:annotations:jar:sources:4.1.1.4", + "io.grpc:grpc-api:jar:sources:1.28.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "com.google.code.gson:gson:jar:sources:2.8.6", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar" + ], + "sha256": "6943ae4fbef30cd9192213fd220a62a60f751048ee11c78cce277f95d3a36101", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-core/1.28.0/grpc-core-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-okhttp:jar:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.android:annotations:4.1.1.4", + "com.google.code.gson:gson:2.8.6", + "io.grpc:grpc-core:1.28.0", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:2.6.0", + "io.grpc:grpc-api:1.28.0", + "io.perfmark:perfmark-api:0.19.0" + ], + "directDependencies": [ + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:2.6.0", + "io.grpc:grpc-core:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar" + ], + "sha256": "6e7a080c064b2f9b3639b576d0bdfb4c5180616ce88df7d4211cbf952691e28c", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-okhttp:jar:sources:1.28.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "com.google.android:annotations:jar:sources:4.1.1.4", + "io.grpc:grpc-api:jar:sources:1.28.0", + "io.perfmark:perfmark-api:jar:sources:0.19.0", + "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "com.google.code.gson:gson:jar:sources:2.8.6", + "com.squareup.okio:okio:jar:sources:2.6.0", + "io.grpc:grpc-core:jar:sources:1.28.0", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0" + ], + "directDependencies": [ + "com.squareup.okhttp:okhttp:jar:sources:2.7.5", + "com.squareup.okio:okio:jar:sources:2.6.0", + "io.grpc:grpc-core:jar:sources:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar" + ], + "sha256": "c37f1317dbc93092e38d5ad6627f80fa595be3daed4484d9c8c71de0d6dce800", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-okhttp/1.28.0/grpc-okhttp-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-protobuf-lite:jar:1.28.0", + "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.google.protobuf:protobuf-javalite:3.17.3", + "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.google.guava:failureaccess:1.0.1", + "io.grpc:grpc-api:1.28.0", + "org.checkerframework:checker-compat-qual:2.5.5" + ], + "directDependencies": [ + "com.google.guava:guava:30.1.1-android", + "com.google.protobuf:protobuf-javalite:3.17.3", + "io.grpc:grpc-api:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar" + ], + "sha256": "5dbcf11cec631fa1b99b3aa338b8f306dbf660f127126f29efc4218166c44857", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-protobuf-lite:jar:sources:1.28.0", + "dependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "io.grpc:grpc-api:jar:sources:1.28.0", + "com.google.j2objc:j2objc-annotations:jar:sources:1.3", + "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", + "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", + "com.google.guava:failureaccess:jar:sources:1.0.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0", + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3" + ], + "directDependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3", + "io.grpc:grpc-api:jar:sources:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar" + ], + "sha256": "844585c241a3a021a5f2e9f75881d8da118f842672f03a654d5abb7d1c24cf9f", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-protobuf-lite/1.28.0/grpc-protobuf-lite-1.28.0-sources.jar" + }, + { + "coord": "io.grpc:grpc-stub:jar:1.28.0", + "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "com.google.j2objc:j2objc-annotations:1.3", + "com.google.code.findbugs:jsr305:3.0.2", + "io.grpc:grpc-context:1.28.0", + "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "com.google.guava:failureaccess:1.0.1", + "io.grpc:grpc-api:1.28.0", + "org.checkerframework:checker-compat-qual:2.5.5" + ], + "directDependencies": [ + "io.grpc:grpc-api:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar", + "https://maven.fabric.io/public/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar", + "https://maven.google.com/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar" + ], + "sha256": "f10b2f46cb5142f18135dcfb163e4db7b12aab47504746a00c4a2800a791dc01", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0.jar" + }, + { + "coord": "io.grpc:grpc-stub:jar:sources:1.28.0", + "dependencies": [ + "com.google.guava:guava:jar:sources:30.1.1-android", + "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "com.google.code.findbugs:jsr305:jar:sources:3.0.2", + "io.grpc:grpc-api:jar:sources:1.28.0", + "com.google.j2objc:j2objc-annotations:jar:sources:1.3", + "org.checkerframework:checker-compat-qual:jar:sources:2.5.5", + "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", + "com.google.guava:failureaccess:jar:sources:1.0.1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "io.grpc:grpc-context:jar:sources:1.28.0" + ], + "directDependencies": [ + "io.grpc:grpc-api:jar:sources:1.28.0" + ], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar", + "https://maven.fabric.io/public/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar", + "https://maven.google.com/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar", + "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar" + ], + "sha256": "eb0ca640f9147ea9c3d94626c55d8a73696401d6e9f37cda7182a2300e8be214", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-stub/1.28.0/grpc-stub-1.28.0-sources.jar" + }, + { + "coord": "io.perfmark:perfmark-api:0.19.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:3.0.2" + ], + "directDependencies": [ + "com.google.code.findbugs:jsr305:3.0.2" + ], + "exclusions": [ + "com.google.errorprone:error_prone_annotations" + ], + "file": "v1/https/repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar", + "mirror_urls": [ + "https://maven.google.com/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar", + "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar", + "https://maven.fabric.io/public/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar", + "https://maven.google.com/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar", + "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar" + ], + "sha256": "b734ba2149712409a44eabdb799f64768578fee0defe1418bb108fe32ea43e1a", + "url": "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0.jar" + }, + { + "coord": "io.perfmark:perfmark-api:jar:sources:0.19.0", + "dependencies": [ + "com.google.code.findbugs:jsr305:jar:sources:3.0.2" + ], + "directDependencies": [ + "com.google.code.findbugs:jsr305:jar:sources:3.0.2" + ], + "exclusions": [ + "com.google.errorprone:error_prone_annotations" + ], + "file": "v1/https/repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar", + "mirror_urls": [ + "https://maven.google.com/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar", + "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar", + "https://maven.fabric.io/public/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar", + "https://maven.google.com/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar", + "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar" + ], + "sha256": "05cfbdd34e6fc1f10181c755cec67cf1ee517dfee615e25d1007a8aabd569dba", + "url": "https://repo1.maven.org/maven2/io/perfmark/perfmark-api/0.19.0/perfmark-api-0.19.0-sources.jar" + }, { "coord": "io.xlate:yaml-json:0.1.0", "dependencies": [], @@ -7780,34 +8743,34 @@ "url": "https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3-sources.jar" }, { - "coord": "org.bouncycastle:bcprov-jdk15on:1.65", + "coord": "org.bouncycastle:bcprov-jdk15on:1.68", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar", + "file": "v1/https/repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar", "mirror_urls": [ - "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar", - "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar", - "https://maven.fabric.io/public/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar", - "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar", - "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar" + "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar", + "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar", + "https://maven.fabric.io/public/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar", + "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar", + "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar" ], - "sha256": "e78f96eb59066c94c94fb2d6b5eb80f52feac6f5f9776898634f8addec6e2137", - "url": "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.jar" + "sha256": "f732a46c8de7e2232f2007c682a21d1f4cc8a8a0149b6b7bd6aa1afdc65a0f8d", + "url": "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68.jar" }, { - "coord": "org.bouncycastle:bcprov-jdk15on:jar:sources:1.65", + "coord": "org.bouncycastle:bcprov-jdk15on:jar:sources:1.68", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar", - "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar", - "https://maven.fabric.io/public/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar", - "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar", - "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar" + "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar", + "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar", + "https://maven.fabric.io/public/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar", + "https://maven.google.com/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar", + "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar" ], - "sha256": "12f179dee8bb7113f3d187319b260f3210d1ca7fbf403cd70385d339eacaeb4b", - "url": "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65-sources.jar" + "sha256": "d9bb57dd73ae7ae3a3b37fcbee6e91ca87156343123d6d3079712928088fb370", + "url": "https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk15on/1.68/bcprov-jdk15on-1.68-sources.jar" }, { "coord": "org.checkerframework:checker-compat-qual:2.5.5", @@ -7869,6 +8832,36 @@ "sha256": "52fd5b908ed38b2c543fac371c2192ff2896fec0f3ddea29f23b5db117a7ea6e", "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-qual/3.13.0/checker-qual-3.13.0-sources.jar" }, + { + "coord": "org.codehaus.mojo:animal-sniffer-annotations:1.18", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar", + "mirror_urls": [ + "https://maven.google.com/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar", + "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar", + "https://maven.fabric.io/public/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar", + "https://maven.google.com/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar", + "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar" + ], + "sha256": "47f05852b48ee9baefef80fa3d8cea60efa4753c0013121dd7fe5eef2e5c729d", + "url": "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar" + }, + { + "coord": "org.codehaus.mojo:animal-sniffer-annotations:jar:sources:1.18", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar", + "mirror_urls": [ + "https://maven.google.com/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar", + "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar", + "https://maven.fabric.io/public/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar", + "https://maven.google.com/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar", + "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar" + ], + "sha256": "ee078a91bf7136ee1961abd612b54d1cd9877352b960a7e1e7e3e4c17ceafcf1", + "url": "https://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18-sources.jar" + }, { "coord": "org.eclipse.parsson:parsson:1.1.2", "dependencies": [ @@ -8882,888 +9875,966 @@ "url": "https://repo1.maven.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2-sources.jar" }, { - "coord": "org.ow2.asm:asm-analysis:9.0", + "coord": "org.ow2.asm:asm-analysis:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-tree:9.2" ], "directDependencies": [ - "org.ow2.asm:asm-tree:9.0" + "org.ow2.asm:asm-tree:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar", - "https://maven.google.com/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar" + "https://maven.google.com/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", + "https://maven.google.com/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar" ], - "sha256": "2d46de6df856a4daac9aa534459ab7287eb80584e9109850405e5b302dc9c2a6", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar" + "sha256": "878fbe521731c072d14d2d65b983b1beae6ad06fda0007b6a8bae81f73f433c4", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar" }, { - "coord": "org.ow2.asm:asm-analysis:jar:sources:9.0", + "coord": "org.ow2.asm:asm-analysis:jar:sources:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.ow2.asm:asm:jar:sources:9.1" + "org.ow2.asm:asm-tree:jar:sources:9.2", + "org.ow2.asm:asm:jar:sources:9.2" ], "directDependencies": [ - "org.ow2.asm:asm-tree:jar:sources:9.0" + "org.ow2.asm:asm-tree:jar:sources:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar", - "https://maven.google.com/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar" + "https://maven.google.com/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar", + "https://maven.google.com/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar" ], - "sha256": "a34153ef6bac79a2a0535f62590671fe7c632ade294aa74938ee79da14707521", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0-sources.jar" + "sha256": "c5a6764bbcee9e4bcd8ee1ea33808f96b8b587371f329aa75a2f541f2ee1b0d5", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2-sources.jar" }, { - "coord": "org.ow2.asm:asm-commons:9.0", + "coord": "org.ow2.asm:asm-commons:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-analysis:9.0", - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-tree:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:9.1", - "org.ow2.asm:asm-analysis:9.0", - "org.ow2.asm:asm-tree:9.0" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-tree:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar", - "https://maven.google.com/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar" + "https://maven.google.com/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", + "https://maven.google.com/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar" ], - "sha256": "1b9090acb7e67bd4ed2f2cfb002063316d79cecace237bd07cc4f7f1b302092f", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar" + "sha256": "be4ce53138a238bb522cd781cf91f3ba5ce2f6ca93ec62d46a162a127225e0a6", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar" }, { - "coord": "org.ow2.asm:asm-commons:jar:sources:9.0", + "coord": "org.ow2.asm:asm-commons:jar:sources:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm:jar:sources:9.1" + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "org.ow2.asm:asm:jar:sources:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm-tree:jar:sources:9.0" + "org.ow2.asm:asm:jar:sources:9.2", + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar", - "https://maven.google.com/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar" + "https://maven.google.com/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar", + "https://maven.google.com/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar" ], - "sha256": "7ced1227cc5e9d9762a930e19f8708591c5ef458bcdebdebd7e934fbb1b1adf3", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0-sources.jar" + "sha256": "6d98839136be45d5b1ffdca0fd2647eb8eaf92cff576648cbbf96f08afd3ed6d", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2-sources.jar" }, { - "coord": "org.ow2.asm:asm-tree:9.0", + "coord": "org.ow2.asm:asm-tree:9.2", "dependencies": [ - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar", - "https://maven.google.com/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar" + "https://maven.google.com/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", + "https://maven.google.com/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar" ], - "sha256": "e2c25f332eb95861883a8568e45aac5e77d140d0fe961ae8eb9a474ec876e00d", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar" + "sha256": "aabf9bd23091a4ebfc109c1f3ee7cf3e4b89f6ba2d3f51c5243f16b3cffae011", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar" }, { - "coord": "org.ow2.asm:asm-tree:jar:sources:9.0", + "coord": "org.ow2.asm:asm-tree:jar:sources:9.2", "dependencies": [ - "org.ow2.asm:asm:jar:sources:9.1" + "org.ow2.asm:asm:jar:sources:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:jar:sources:9.1" + "org.ow2.asm:asm:jar:sources:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar", - "https://maven.google.com/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar" + "https://maven.google.com/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar", + "https://maven.google.com/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar" ], - "sha256": "e75b132b75a861dcbb8aa75b98783b863310fb2e3e3d28394c22063db5ec7432", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0-sources.jar" + "sha256": "c35bc5b4b6c54bf15abec34ab821cf9d0801a64451f4f6070d93dcb87122aa08", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2-sources.jar" }, { - "coord": "org.ow2.asm:asm-util:9.0", + "coord": "org.ow2.asm:asm-util:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-analysis:9.0", - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-tree:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:9.1", - "org.ow2.asm:asm-analysis:9.0", - "org.ow2.asm:asm-tree:9.0" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-tree:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar", - "https://maven.google.com/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar" + "https://maven.google.com/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", + "https://maven.google.com/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar" ], - "sha256": "2af6e7d01e0862e75193f3c01a06a689b0a245947e29f38eb683633391519bb6", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar" + "sha256": "ff5b3cd331ae8a9a804768280da98f50f424fef23dd3c788bb320e08c94ee598", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2.jar" }, { - "coord": "org.ow2.asm:asm-util:jar:sources:9.0", + "coord": "org.ow2.asm:asm-util:jar:sources:9.2", "dependencies": [ - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm:jar:sources:9.1" + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "org.ow2.asm:asm:jar:sources:9.2" ], "directDependencies": [ - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm-tree:jar:sources:9.0" + "org.ow2.asm:asm:jar:sources:9.2", + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2" ], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar", - "https://maven.google.com/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar" + "https://maven.google.com/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar", + "https://maven.google.com/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar" ], - "sha256": "cdc52c849b9af5d157df3919621d484697ed35c755292c682704227c0e012710", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0-sources.jar" + "sha256": "b631d4561a24e84eaeee2c0495added214e4961ed328b02300f7d9b1f407c853", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.2/asm-util-9.2-sources.jar" }, { - "coord": "org.ow2.asm:asm:9.1", + "coord": "org.ow2.asm:asm:9.2", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm/9.1/asm-9.1.jar", - "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.jar" + "https://maven.google.com/org/ow2/asm/asm/9.2/asm-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm/9.2/asm-9.2.jar", + "https://maven.google.com/org/ow2/asm/asm/9.2/asm-9.2.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar" ], - "sha256": "cda4de455fab48ff0bcb7c48b4639447d4de859a7afc30a094a986f0936beba2", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1.jar" + "sha256": "b9d4fe4d71938df38839f0eca42aaaa64cf8b313d678da036f0cb3ca199b47f5", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar" }, { - "coord": "org.ow2.asm:asm:jar:sources:9.1", + "coord": "org.ow2.asm:asm:jar:sources:9.2", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1-sources.jar", - "https://maven.fabric.io/public/org/ow2/asm/asm/9.1/asm-9.1-sources.jar", - "https://maven.google.com/org/ow2/asm/asm/9.1/asm-9.1-sources.jar", - "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1-sources.jar" + "https://maven.google.com/org/ow2/asm/asm/9.2/asm-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2-sources.jar", + "https://maven.fabric.io/public/org/ow2/asm/asm/9.2/asm-9.2-sources.jar", + "https://maven.google.com/org/ow2/asm/asm/9.2/asm-9.2-sources.jar", + "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2-sources.jar" ], - "sha256": "64a1059b152dee08e203b4e1117b7979fff1578c545573f05329fb6d9090bb41", - "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.1/asm-9.1-sources.jar" + "sha256": "81e807010631f0e8074b0fb85e80afd6efbbd7e4b3694aad19e944c171980fb7", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2-sources.jar" }, { - "coord": "org.robolectric:annotations:4.5", + "coord": "org.robolectric:annotations:4.7", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/annotations/4.5/annotations-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/annotations/4.5/annotations-4.5.jar", - "https://maven.google.com/org/robolectric/annotations/4.5/annotations-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5.jar" + "https://maven.google.com/org/robolectric/annotations/4.7/annotations-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/annotations/4.7/annotations-4.7.jar", + "https://maven.google.com/org/robolectric/annotations/4.7/annotations-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7.jar" ], - "sha256": "76b5bf55bb0d98e3b72fee1e015dea04c3a5a907aff02b9b405cebd50a19e1ab", - "url": "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5.jar" + "sha256": "e6b50343f492e3a6d8a5ddbfd886be685c946459146f1ea2934cd0dacd8f558b", + "url": "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7.jar" }, { - "coord": "org.robolectric:annotations:jar:sources:4.5", + "coord": "org.robolectric:annotations:jar:sources:4.7", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/annotations/4.5/annotations-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/annotations/4.5/annotations-4.5-sources.jar", - "https://maven.google.com/org/robolectric/annotations/4.5/annotations-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5-sources.jar" + "https://maven.google.com/org/robolectric/annotations/4.7/annotations-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/annotations/4.7/annotations-4.7-sources.jar", + "https://maven.google.com/org/robolectric/annotations/4.7/annotations-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7-sources.jar" ], - "sha256": "32eccf8cbb11da68ffbe0fc14278150dc4236f77de26af1d1727e6acd61a086b", - "url": "https://repo1.maven.org/maven2/org/robolectric/annotations/4.5/annotations-4.5-sources.jar" + "sha256": "1b86f73e9267b1642ec131b4d5a2137caab975a0316b88a0a99b3f036e615440", + "url": "https://repo1.maven.org/maven2/org/robolectric/annotations/4.7/annotations-4.7-sources.jar" }, { - "coord": "org.robolectric:junit:4.5", + "coord": "org.robolectric:junit:4.7", "dependencies": [ - "org.ow2.asm:asm-analysis:9.0", - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5", + "org.ow2.asm:asm-tree:9.2", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", + "org.ow2.asm:asm-util:9.2", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-util:9.0", + "org.robolectric:sandbox:4.7", + "org.ow2.asm:asm:9.2", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1", - "org.robolectric:shadowapi:4.5", - "org.robolectric:sandbox:4.5" + "org.robolectric:shadowapi:4.7" ], "directDependencies": [ - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", - "org.robolectric:shadowapi:4.5", - "org.robolectric:sandbox:4.5" + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", + "org.robolectric:sandbox:4.7", + "org.robolectric:pluginapi:4.7", + "org.robolectric:shadowapi:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/junit/4.5/junit-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/junit/4.5/junit-4.5.jar", - "https://maven.google.com/org/robolectric/junit/4.5/junit-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5.jar" + "https://maven.google.com/org/robolectric/junit/4.7/junit-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/junit/4.7/junit-4.7.jar", + "https://maven.google.com/org/robolectric/junit/4.7/junit-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7.jar" ], - "sha256": "c9eec2e87d53fc7a4af3c0c1c4b722963f2dc7d0a01b90568a6c83ca6d751c4a", - "url": "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5.jar" + "sha256": "887adf35c2cfff04a3f40d15eaa1f9b2bdda3290068fb36a851dcba262c9e454", + "url": "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7.jar" }, { - "coord": "org.robolectric:junit:jar:sources:4.5", + "coord": "org.robolectric:junit:jar:sources:4.7", "dependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.robolectric:sandbox:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:shadowapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm-util:jar:sources:9.0", - "org.robolectric:sandbox:jar:sources:4.5", + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:shadowapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "org.robolectric:sandbox:jar:sources:4.5", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.robolectric:sandbox:jar:sources:4.7", + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/junit/4.5/junit-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/junit/4.5/junit-4.5-sources.jar", - "https://maven.google.com/org/robolectric/junit/4.5/junit-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5-sources.jar" + "https://maven.google.com/org/robolectric/junit/4.7/junit-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/junit/4.7/junit-4.7-sources.jar", + "https://maven.google.com/org/robolectric/junit/4.7/junit-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7-sources.jar" ], - "sha256": "6e631445ffcb2ecefb4ba4e170ae31e39f281244a3ce68b444f8d8fe1944782f", - "url": "https://repo1.maven.org/maven2/org/robolectric/junit/4.5/junit-4.5-sources.jar" + "sha256": "3b80163d73fd2ac07af4f9189a95b4e53cd718502ee304b8d3ac10522216c80c", + "url": "https://repo1.maven.org/maven2/org/robolectric/junit/4.7/junit-4.7-sources.jar" }, { - "coord": "org.robolectric:pluginapi:4.5", + "coord": "org.robolectric:nativeruntime:4.7", "dependencies": [ - "org.robolectric:annotations:4.5" + "com.google.guava:guava:30.1.1-android" ], "directDependencies": [ - "org.robolectric:annotations:4.5" + "com.google.guava:guava:30.1.1-android" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar", - "https://maven.google.com/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar" + "https://maven.google.com/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar", + "https://maven.google.com/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar" ], - "sha256": "9292f4a65d546b27b000112f1daeea8228c039ba9eb790d122ee99a4b04d8c43", - "url": "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5.jar" + "sha256": "2a19ea7935855831ccff605e5b07d2539d44fbd9741b767bdfd34b8b3a35d508", + "url": "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7.jar" }, { - "coord": "org.robolectric:pluginapi:jar:sources:4.5", + "coord": "org.robolectric:nativeruntime:jar:sources:4.7", "dependencies": [ - "org.robolectric:annotations:jar:sources:4.5" + "com.google.guava:guava:jar:sources:30.1.1-android" ], "directDependencies": [ - "org.robolectric:annotations:jar:sources:4.5" + "com.google.guava:guava:jar:sources:30.1.1-android" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar", - "https://maven.google.com/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar" + "https://maven.google.com/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar", + "https://maven.google.com/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar" ], - "sha256": "c90002bd085a03daf77b51ed4e0867cff898adaa754023aea21f4bcb84567127", - "url": "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.5/pluginapi-4.5-sources.jar" + "sha256": "46d85199dafff6224e1d450f252c0b2974eac8fd6f98bb3fe060d1ead63bbb39", + "url": "https://repo1.maven.org/maven2/org/robolectric/nativeruntime/4.7/nativeruntime-4.7-sources.jar" }, { - "coord": "org.robolectric:plugins-maven-dependency-resolver:4.5", + "coord": "org.robolectric:pluginapi:4.7", "dependencies": [ - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5", + "org.robolectric:annotations:4.7" + ], + "directDependencies": [ + "org.robolectric:annotations:4.7" + ], + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar", + "mirror_urls": [ + "https://maven.google.com/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar", + "https://maven.google.com/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar" + ], + "sha256": "101dbd8b6a920a9bf21f6ca06ff68eb8e6dd7a887091c6d51488faa7ffea9b71", + "url": "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7.jar" + }, + { + "coord": "org.robolectric:pluginapi:jar:sources:4.7", + "dependencies": [ + "org.robolectric:annotations:jar:sources:4.7" + ], + "directDependencies": [ + "org.robolectric:annotations:jar:sources:4.7" + ], + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar", + "mirror_urls": [ + "https://maven.google.com/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar", + "https://maven.google.com/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar" + ], + "sha256": "3f8124589ec2bdcd644ba3d43b24bfaf696df4f4ff8ca91bf79033d55465a7f7", + "url": "https://repo1.maven.org/maven2/org/robolectric/pluginapi/4.7/pluginapi-4.7-sources.jar" + }, + { + "coord": "org.robolectric:plugins-maven-dependency-resolver:4.7", + "dependencies": [ + "org.robolectric:annotations:4.7", "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:annotations:4.5", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1" ], "directDependencies": [ "com.google.guava:guava:30.1.1-android", - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5" + "org.robolectric:pluginapi:4.7", + "org.robolectric:utils:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar", - "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar" + "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar", + "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar" ], - "sha256": "e6c381016e2da09c3f3a7859075042d3457d0dc0a6ba088b8d969b9d3a525cfa", - "url": "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5.jar" + "sha256": "a72c736098cfcbf806fabb8560fca4e518fee0bba3182f55ada86b291128d94c", + "url": "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7.jar" }, { - "coord": "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.5", + "coord": "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.7", "dependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "javax.annotation:javax.annotation-api:jar:sources:1.3.2" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:utils:jar:sources:4.5" + "org.robolectric:pluginapi:jar:sources:4.7", + "org.robolectric:utils:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar", - "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar" + "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar", + "https://maven.google.com/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar" ], - "sha256": "628689f56c37d669a60d5aa669e59acb0d64001f6b2533174ed5ddee4871d7bb", - "url": "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.5/plugins-maven-dependency-resolver-4.5-sources.jar" + "sha256": "cb681a34d6a1acc22cad99483c5adf2f168871b5faca652a390f2559b4a9bdf6", + "url": "https://repo1.maven.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.7/plugins-maven-dependency-resolver-4.7-sources.jar" }, { - "coord": "org.robolectric:resources:4.5", + "coord": "org.robolectric:resources:4.7", "dependencies": [ - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5", + "org.robolectric:annotations:4.7", "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:annotations:4.5", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1" ], "directDependencies": [ "com.google.guava:guava:30.1.1-android", - "org.robolectric:annotations:4.5", - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5" + "org.robolectric:annotations:4.7", + "org.robolectric:pluginapi:4.7", + "org.robolectric:utils:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/resources/4.5/resources-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/resources/4.5/resources-4.5.jar", - "https://maven.google.com/org/robolectric/resources/4.5/resources-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5.jar" + "https://maven.google.com/org/robolectric/resources/4.7/resources-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/resources/4.7/resources-4.7.jar", + "https://maven.google.com/org/robolectric/resources/4.7/resources-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7.jar" ], - "sha256": "21b60d114670827bf80b7815faa16da02eeda2fcd01cba088dfb630fa9721eb3", - "url": "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5.jar" + "sha256": "bfca8d227eafc738f9c4fcab08cc6251d1e876330d6cfd6b994bcfdf65894bba", + "url": "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7.jar" }, { - "coord": "org.robolectric:resources:jar:sources:4.5", + "coord": "org.robolectric:resources:jar:sources:4.7", "dependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "javax.annotation:javax.annotation-api:jar:sources:1.3.2" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", - "org.robolectric:annotations:jar:sources:4.5", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:utils:jar:sources:4.5" + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7", + "org.robolectric:utils:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/resources/4.5/resources-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/resources/4.5/resources-4.5-sources.jar", - "https://maven.google.com/org/robolectric/resources/4.5/resources-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5-sources.jar" + "https://maven.google.com/org/robolectric/resources/4.7/resources-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/resources/4.7/resources-4.7-sources.jar", + "https://maven.google.com/org/robolectric/resources/4.7/resources-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7-sources.jar" ], - "sha256": "d5baa25e556e4fc67d3dc6bdf0bf32d29df4439856fc054112f81596a1fe1574", - "url": "https://repo1.maven.org/maven2/org/robolectric/resources/4.5/resources-4.5-sources.jar" + "sha256": "f40a32c9af6ac056c94606956d842b6d9db130bfae6f3006c171a4309b9fbc87", + "url": "https://repo1.maven.org/maven2/org/robolectric/resources/4.7/resources-4.7-sources.jar" }, { - "coord": "org.robolectric:robolectric:4.5", + "coord": "org.robolectric:robolectric:4.7", "dependencies": [ - "org.robolectric:shadows-framework:4.5", - "org.ow2.asm:asm-analysis:9.0", + "org.robolectric:nativeruntime:4.7", + "org.ow2.asm:asm-tree:9.2", "androidx.annotation:annotation:1.1.0", - "org.robolectric:pluginapi:4.5", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", "androidx.test:monitor:1.4.0", - "org.robolectric:plugins-maven-dependency-resolver:4.5", - "org.robolectric:resources:4.5", - "org.robolectric:junit:4.5", - "org.robolectric:utils:4.5", + "org.ow2.asm:asm-util:9.2", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", + "org.robolectric:sandbox:4.7", "androidx.test:monitor:aar:1.4.0", + "org.bouncycastle:bcprov-jdk15on:1.68", + "org.ow2.asm:asm:9.2", "com.google.auto.value:auto-value-annotations:1.8.1", "com.almworks.sqlite4java:sqlite4java:1.0.392", - "org.ow2.asm:asm-tree:9.0", - "org.bouncycastle:bcprov-jdk15on:1.65", - "org.ow2.asm:asm-util:9.0", + "org.robolectric:shadows-framework:4.7", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:plugins-maven-dependency-resolver:4.7", + "org.robolectric:resources:4.7", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:junit:4.7", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1", "com.ibm.icu:icu4j:53.1", - "org.robolectric:shadowapi:4.5", - "org.robolectric:sandbox:4.5" + "org.robolectric:shadowapi:4.7" ], "directDependencies": [ - "org.robolectric:shadows-framework:4.5", - "org.robolectric:pluginapi:4.5", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", "androidx.test:monitor:1.4.0", - "org.robolectric:plugins-maven-dependency-resolver:4.5", - "org.robolectric:resources:4.5", - "org.robolectric:junit:4.5", - "org.robolectric:utils:4.5", - "org.bouncycastle:bcprov-jdk15on:1.65", + "org.robolectric:sandbox:4.7", + "org.bouncycastle:bcprov-jdk15on:1.68", + "org.robolectric:shadows-framework:4.7", + "org.robolectric:plugins-maven-dependency-resolver:4.7", + "org.robolectric:resources:4.7", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", - "javax.inject:javax.inject:1", - "org.robolectric:sandbox:4.5" + "org.robolectric:junit:4.7", + "org.robolectric:utils:4.7", + "javax.inject:javax.inject:1" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/robolectric/4.5/robolectric-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/robolectric/4.5/robolectric-4.5.jar", - "https://maven.google.com/org/robolectric/robolectric/4.5/robolectric-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5.jar" + "https://maven.google.com/org/robolectric/robolectric/4.7/robolectric-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/robolectric/4.7/robolectric-4.7.jar", + "https://maven.google.com/org/robolectric/robolectric/4.7/robolectric-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7.jar" ], - "sha256": "ba9f8130c11d5b34dfe61990d2e9adfbcf5a945476309c3dcb48fce547331c27", - "url": "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5.jar" + "sha256": "7b13241ae4af4719499da02bd1be8aacf9ff13e695df93a115d052a61da4d885", + "url": "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7.jar" }, { - "coord": "org.robolectric:robolectric:jar:sources:4.5", + "coord": "org.robolectric:robolectric:jar:sources:4.7", "dependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", "androidx.test:monitor:jar:sources:1.4.0", - "org.robolectric:resources:jar:sources:4.5", - "org.ow2.asm:asm:jar:sources:9.1", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:shadows-framework:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.ow2.asm:asm-analysis:jar:sources:9.2", + "org.robolectric:sandbox:jar:sources:4.7", + "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.7", "androidx.test:monitor:aar:sources:1.4.0", - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:junit:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", "com.almworks.sqlite4java:sqlite4java:jar:sources:1.0.392", - "org.robolectric:shadows-framework:jar:sources:4.5", - "org.robolectric:shadowapi:jar:sources:4.5", + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", "androidx.annotation:annotation:jar:sources:1.1.0", "com.ibm.icu:icu4j:jar:sources:53.1", - "org.bouncycastle:bcprov-jdk15on:jar:sources:1.65", - "org.robolectric:annotations:jar:sources:4.5", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.5", + "org.robolectric:nativeruntime:jar:sources:4.7", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "org.bouncycastle:bcprov-jdk15on:jar:sources:1.68", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:resources:jar:sources:4.7", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", - "org.ow2.asm:asm-util:jar:sources:9.0", - "org.robolectric:sandbox:jar:sources:4.5", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:junit:jar:sources:4.5", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ "androidx.test:monitor:jar:sources:1.4.0", - "org.robolectric:resources:jar:sources:4.5", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:shadows-framework:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.robolectric:sandbox:jar:sources:4.7", + "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.7", + "org.robolectric:junit:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:shadows-framework:jar:sources:4.5", - "org.bouncycastle:bcprov-jdk15on:jar:sources:1.65", - "org.robolectric:annotations:jar:sources:4.5", - "org.robolectric:plugins-maven-dependency-resolver:jar:sources:4.5", - "org.robolectric:sandbox:jar:sources:4.5", + "org.bouncycastle:bcprov-jdk15on:jar:sources:1.68", + "org.robolectric:resources:jar:sources:4.7", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:junit:jar:sources:4.5", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:pluginapi:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar", - "https://maven.google.com/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar" + "https://maven.google.com/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar", + "https://maven.google.com/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar" ], - "sha256": "54293237f2b9f48f1609935bffc37b353b3e981962fb578da64bae1a82c6c25d", - "url": "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.5/robolectric-4.5-sources.jar" + "sha256": "e5e5e2ae2d4a498dd74d08211c6c93d530d9b3b20711d56d554f3b5072a2e8c3", + "url": "https://repo1.maven.org/maven2/org/robolectric/robolectric/4.7/robolectric-4.7-sources.jar" }, { - "coord": "org.robolectric:sandbox:4.5", + "coord": "org.robolectric:sandbox:4.7", "dependencies": [ - "org.ow2.asm:asm-analysis:9.0", - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5", + "org.ow2.asm:asm-tree:9.2", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", + "org.ow2.asm:asm-util:9.2", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-util:9.0", + "org.ow2.asm:asm:9.2", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1", - "org.robolectric:shadowapi:4.5" + "org.robolectric:shadowapi:4.7" ], "directDependencies": [ - "org.robolectric:utils:4.5", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", + "org.ow2.asm:asm:9.2", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1", - "org.robolectric:shadowapi:4.5" + "org.robolectric:shadowapi:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/sandbox/4.5/sandbox-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/sandbox/4.5/sandbox-4.5.jar", - "https://maven.google.com/org/robolectric/sandbox/4.5/sandbox-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5.jar" + "https://maven.google.com/org/robolectric/sandbox/4.7/sandbox-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/sandbox/4.7/sandbox-4.7.jar", + "https://maven.google.com/org/robolectric/sandbox/4.7/sandbox-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7.jar" ], - "sha256": "cf18639f2991893122f88df87bf83eb325b3ca1031c9a730acead5acdc7e275c", - "url": "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5.jar" + "sha256": "a75c6d7ff0b6cd8862fece94a3c47f223f3f3db2d7f35a5ae696a967e76ff747", + "url": "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7.jar" }, { - "coord": "org.robolectric:sandbox:jar:sources:4.5", + "coord": "org.robolectric:sandbox:jar:sources:4.7", "dependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.ow2.asm:asm-analysis:jar:sources:9.2", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:shadowapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm-util:jar:sources:9.0", + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.ow2.asm:asm:jar:sources:9.1", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:shadowapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", + "org.ow2.asm:asm-commons:jar:sources:9.2", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:shadowapi:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar", - "https://maven.google.com/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar" + "https://maven.google.com/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar", + "https://maven.google.com/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar" ], - "sha256": "e9c61c173f65a73f4ae415cc0095c8570ed199d8247b4421032b82cc2aca3571", - "url": "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.5/sandbox-4.5-sources.jar" + "sha256": "7ff8eb25e89130662997e329430fba44f438c2f3bbe3d56b2e921c1d85e9c469", + "url": "https://repo1.maven.org/maven2/org/robolectric/sandbox/4.7/sandbox-4.7-sources.jar" }, { - "coord": "org.robolectric:shadowapi:4.5", + "coord": "org.robolectric:shadowapi:4.7", "dependencies": [ - "org.robolectric:annotations:4.5" + "org.robolectric:annotations:4.7", + "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", + "javax.annotation:javax.annotation-api:1.3.2", + "org.robolectric:utils:4.7", + "javax.inject:javax.inject:1" ], "directDependencies": [ - "org.robolectric:annotations:4.5" + "org.robolectric:annotations:4.7", + "org.robolectric:utils:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar", - "https://maven.google.com/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar" + "https://maven.google.com/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar", + "https://maven.google.com/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar" ], - "sha256": "a158c49d0274a1412fb909d6b2e52a06b230a2b80ad8657c072c7474f0e69c1f", - "url": "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5.jar" + "sha256": "a5b845650d009ae0bc8c220b53a90939be1cb6192831553785ed165875db8e4d", + "url": "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7.jar" }, { - "coord": "org.robolectric:shadowapi:jar:sources:4.5", + "coord": "org.robolectric:shadowapi:jar:sources:4.7", "dependencies": [ - "org.robolectric:annotations:jar:sources:4.5" + "com.google.guava:guava:jar:sources:30.1.1-android", + "org.robolectric:annotations:jar:sources:4.7", + "javax.inject:javax.inject:jar:sources:1", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ - "org.robolectric:annotations:jar:sources:4.5" + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar", - "https://maven.google.com/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar" + "https://maven.google.com/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar", + "https://maven.google.com/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar" ], - "sha256": "4a220cfd840b1aec509512825a6b332dbe8889f988f25d60369ceb599396ac9e", - "url": "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.5/shadowapi-4.5-sources.jar" + "sha256": "2b45b6a2de98163d389aef25f95bac53e901c708dd675c122f1b97d68377c471", + "url": "https://repo1.maven.org/maven2/org/robolectric/shadowapi/4.7/shadowapi-4.7-sources.jar" }, { - "coord": "org.robolectric:shadows-framework:4.5", + "coord": "org.robolectric:shadows-framework:4.7", "dependencies": [ - "org.ow2.asm:asm-analysis:9.0", + "org.robolectric:nativeruntime:4.7", + "org.ow2.asm:asm-tree:9.2", "androidx.annotation:annotation:1.1.0", - "org.robolectric:pluginapi:4.5", - "org.robolectric:resources:4.5", - "org.robolectric:utils:4.5", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", + "org.ow2.asm:asm-util:9.2", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", "androidx.test:monitor:aar:1.4.0", + "org.ow2.asm:asm:9.2", "com.google.auto.value:auto-value-annotations:1.8.1", "com.almworks.sqlite4java:sqlite4java:1.0.392", - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-util:9.0", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:resources:4.7", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:utils:4.7", "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1", "com.ibm.icu:icu4j:53.1", - "org.robolectric:shadowapi:4.5" + "org.robolectric:shadowapi:4.7" ], "directDependencies": [ + "org.robolectric:nativeruntime:4.7", "androidx.annotation:annotation:1.1.0", - "org.robolectric:pluginapi:4.5", - "org.robolectric:resources:4.5", - "org.robolectric:utils:4.5", + "org.robolectric:utils-reflector:4.7", + "org.robolectric:annotations:4.7", "androidx.test:monitor:aar:1.4.0", "com.google.auto.value:auto-value-annotations:1.8.1", "com.almworks.sqlite4java:sqlite4java:1.0.392", - "org.robolectric:utils-reflector:4.5", - "org.robolectric:annotations:4.5", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:resources:4.7", + "org.robolectric:pluginapi:4.7", + "org.robolectric:utils:4.7", "com.ibm.icu:icu4j:53.1", - "org.robolectric:shadowapi:4.5" + "org.robolectric:shadowapi:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar", - "https://maven.google.com/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar" + "https://maven.google.com/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar", + "https://maven.google.com/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar" ], - "sha256": "3be4c7d01ee2fb5cff4cb90a65af26831199baac3e92311dd2d5f42cadb50723", - "url": "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5.jar" + "sha256": "05a07bd6c5407999df9d84b73e1dcf016ae73c36b8f0bb53ca2e8c2bfb6d070d", + "url": "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7.jar" }, { - "coord": "org.robolectric:shadows-framework:jar:sources:4.5", + "coord": "org.robolectric:shadows-framework:jar:sources:4.7", "dependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.robolectric:resources:jar:sources:4.5", - "org.ow2.asm:asm:jar:sources:9.1", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", + "org.ow2.asm:asm-analysis:jar:sources:9.2", "androidx.test:monitor:aar:sources:1.4.0", - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", "com.almworks.sqlite4java:sqlite4java:jar:sources:1.0.392", - "org.robolectric:shadowapi:jar:sources:4.5", + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", "androidx.annotation:annotation:jar:sources:1.1.0", "com.ibm.icu:icu4j:jar:sources:53.1", - "org.robolectric:annotations:jar:sources:4.5", - "org.ow2.asm:asm-analysis:jar:sources:9.0", + "org.robolectric:nativeruntime:jar:sources:4.7", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:resources:jar:sources:4.7", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", - "org.ow2.asm:asm-util:jar:sources:9.0", + "org.robolectric:utils:jar:sources:4.7", "javax.annotation:javax.annotation-api:jar:sources:1.3.2", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ - "org.robolectric:resources:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.robolectric:utils-reflector:jar:sources:4.7", "androidx.test:monitor:aar:sources:1.4.0", - "org.robolectric:utils:jar:sources:4.5", - "org.robolectric:pluginapi:jar:sources:4.5", "com.almworks.sqlite4java:sqlite4java:jar:sources:1.0.392", - "org.robolectric:shadowapi:jar:sources:4.5", "androidx.annotation:annotation:jar:sources:1.1.0", "com.ibm.icu:icu4j:jar:sources:53.1", - "org.robolectric:annotations:jar:sources:4.5", + "org.robolectric:nativeruntime:jar:sources:4.7", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:resources:jar:sources:4.7", "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", - "org.robolectric:utils-reflector:jar:sources:4.5" + "org.robolectric:utils:jar:sources:4.7", + "org.robolectric:shadowapi:jar:sources:4.7", + "org.robolectric:pluginapi:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar", - "https://maven.google.com/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar" + "https://maven.google.com/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar", + "https://maven.google.com/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar" ], - "sha256": "879288cd58699b4a75ebda38bb0905f359a258575f18ff0e7b861d18a8595231", - "url": "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.5/shadows-framework-4.5-sources.jar" + "sha256": "166a1ce45d8410d86fa4d7e0376b1bdf2ad26d3fbaeb1ffec51f63ca226d413f", + "url": "https://repo1.maven.org/maven2/org/robolectric/shadows-framework/4.7/shadows-framework-4.7-sources.jar" }, { - "coord": "org.robolectric:utils-reflector:4.5", + "coord": "org.robolectric:utils-reflector:4.7", "dependencies": [ - "org.ow2.asm:asm-analysis:9.0", - "org.robolectric:pluginapi:4.5", - "org.robolectric:utils:4.5", + "org.ow2.asm:asm-tree:9.2", + "org.robolectric:annotations:4.7", + "org.ow2.asm:asm-util:9.2", "com.google.guava:guava:30.1.1-android", - "org.ow2.asm:asm-commons:9.0", - "org.ow2.asm:asm-tree:9.0", - "org.ow2.asm:asm-util:9.0", + "org.ow2.asm:asm:9.2", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:annotations:4.5", - "javax.inject:javax.inject:1", - "org.ow2.asm:asm:9.1" + "org.ow2.asm:asm-analysis:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.robolectric:utils:4.7", + "javax.inject:javax.inject:1" ], "directDependencies": [ - "org.ow2.asm:asm:9.1", - "org.ow2.asm:asm-commons:9.0", - "org.ow2.asm:asm-util:9.0", - "org.robolectric:utils:4.5" + "org.ow2.asm:asm:9.2", + "org.ow2.asm:asm-commons:9.2", + "org.ow2.asm:asm-util:9.2", + "org.robolectric:utils:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar", - "https://maven.google.com/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar" + "https://maven.google.com/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar", + "https://maven.google.com/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar" ], - "sha256": "91f9e5f9eacd6a2f308473b39d473f3edd205365fe3c4188f8c4c11191c6d914", - "url": "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5.jar" + "sha256": "a18155366b0d8977f3a23b83c9d0150180c5d6a981f6df92ac9ea3018151eb3e", + "url": "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7.jar" }, { - "coord": "org.robolectric:utils-reflector:jar:sources:4.5", + "coord": "org.robolectric:utils-reflector:jar:sources:4.7", "dependencies": [ - "org.ow2.asm:asm-commons:jar:sources:9.0", + "org.ow2.asm:asm:jar:sources:9.2", "com.google.guava:guava:jar:sources:30.1.1-android", - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-tree:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5", + "org.robolectric:annotations:jar:sources:4.7", + "org.ow2.asm:asm-analysis:jar:sources:9.2", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "org.ow2.asm:asm-analysis:jar:sources:9.0", - "org.ow2.asm:asm-util:jar:sources:9.0", - "javax.annotation:javax.annotation-api:jar:sources:1.3.2" + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", + "org.ow2.asm:asm-tree:jar:sources:9.2", + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "org.robolectric:utils:jar:sources:4.7", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ - "org.ow2.asm:asm:jar:sources:9.1", - "org.ow2.asm:asm-commons:jar:sources:9.0", - "org.ow2.asm:asm-util:jar:sources:9.0", - "org.robolectric:utils:jar:sources:4.5" + "org.ow2.asm:asm:jar:sources:9.2", + "org.ow2.asm:asm-commons:jar:sources:9.2", + "org.ow2.asm:asm-util:jar:sources:9.2", + "org.robolectric:utils:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar", - "https://maven.google.com/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar" + "https://maven.google.com/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar", + "https://maven.google.com/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar" ], - "sha256": "a8f9c774036f4ed79a1c08cd876a4ec0e8eac311875c0a3e9df7de8ab0e5e003", - "url": "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.5/utils-reflector-4.5-sources.jar" + "sha256": "4c95ac25e3d51e16632933120e6e92468791bee03314a84bb03390aa11a22241", + "url": "https://repo1.maven.org/maven2/org/robolectric/utils-reflector/4.7/utils-reflector-4.7-sources.jar" }, { - "coord": "org.robolectric:utils:4.5", + "coord": "org.robolectric:utils:4.7", "dependencies": [ - "org.robolectric:pluginapi:4.5", + "org.robolectric:annotations:4.7", "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:annotations:4.5", "javax.inject:javax.inject:1" ], "directDependencies": [ - "org.robolectric:pluginapi:4.5", + "org.robolectric:annotations:4.7", "com.google.guava:guava:30.1.1-android", + "com.google.errorprone:error_prone_annotations:2.9.0", + "org.robolectric:pluginapi:4.7", "javax.annotation:javax.annotation-api:1.3.2", - "org.robolectric:annotations:4.5", "javax.inject:javax.inject:1" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/utils/4.5/utils-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5.jar", - "https://maven.fabric.io/public/org/robolectric/utils/4.5/utils-4.5.jar", - "https://maven.google.com/org/robolectric/utils/4.5/utils-4.5.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5.jar" + "https://maven.google.com/org/robolectric/utils/4.7/utils-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7.jar", + "https://maven.fabric.io/public/org/robolectric/utils/4.7/utils-4.7.jar", + "https://maven.google.com/org/robolectric/utils/4.7/utils-4.7.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7.jar" ], - "sha256": "b0982a413c4bd874a8099b97a22cdcd4826cf62178f17dbca67d814627124de1", - "url": "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5.jar" + "sha256": "a3bf567dcf05ee9ebdba79cf6f9b9043460958b354d815e49394e00ad536fd99", + "url": "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7.jar" }, { - "coord": "org.robolectric:utils:jar:sources:4.5", + "coord": "org.robolectric:utils:jar:sources:4.7", "dependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", + "org.robolectric:annotations:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "javax.annotation:javax.annotation-api:jar:sources:1.3.2" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], "directDependencies": [ "com.google.guava:guava:jar:sources:30.1.1-android", + "org.robolectric:annotations:jar:sources:4.7", "javax.inject:javax.inject:jar:sources:1", - "org.robolectric:pluginapi:jar:sources:4.5", - "org.robolectric:annotations:jar:sources:4.5", - "javax.annotation:javax.annotation-api:jar:sources:1.3.2" + "com.google.errorprone:error_prone_annotations:jar:sources:2.9.0", + "javax.annotation:javax.annotation-api:jar:sources:1.3.2", + "org.robolectric:pluginapi:jar:sources:4.7" ], - "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5-sources.jar", + "file": "v1/https/repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7-sources.jar", "mirror_urls": [ - "https://maven.google.com/org/robolectric/utils/4.5/utils-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5-sources.jar", - "https://maven.fabric.io/public/org/robolectric/utils/4.5/utils-4.5-sources.jar", - "https://maven.google.com/org/robolectric/utils/4.5/utils-4.5-sources.jar", - "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5-sources.jar" + "https://maven.google.com/org/robolectric/utils/4.7/utils-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7-sources.jar", + "https://maven.fabric.io/public/org/robolectric/utils/4.7/utils-4.7-sources.jar", + "https://maven.google.com/org/robolectric/utils/4.7/utils-4.7-sources.jar", + "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7-sources.jar" ], - "sha256": "f8b7e1a3ed9916c1d2529ede178af4bd6dc3b2f41fc9be57c22476f3e91ffdb4", - "url": "https://repo1.maven.org/maven2/org/robolectric/utils/4.5/utils-4.5-sources.jar" + "sha256": "b43454dd1c3e65c6fb7c5ee6d831aa9c18cc37c666248db8603c50c6f4a4e32e", + "url": "https://repo1.maven.org/maven2/org/robolectric/utils/4.7/utils-4.7-sources.jar" }, { "coord": "org.snakeyaml:snakeyaml-engine:2.6", @@ -9943,7 +11014,7 @@ "file": null }, { - "coord": "com.google.android.gms:play-services-base:aar:sources:17.0.0", + "coord": "com.google.android.gms:play-services-base:aar:sources:17.1.0", "dependencies": [ "androidx.core:core:aar:sources:1.3.1", "androidx.fragment:fragment:aar:sources:1.2.0", @@ -10220,6 +11291,103 @@ ], "file": null }, + { + "coord": "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "dependencies": [ + "androidx.core:core:aar:sources:1.3.1", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "directDependencies": [ + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0" + ], + "file": null + }, + { + "coord": "com.google.firebase:firebase-auth-ktx:jar:sources:19.3.1", + "dependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "androidx.core:core:aar:sources:1.3.1", + "com.google.firebase:firebase-common-ktx:aar:sources:19.3.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", + "androidx.fragment:fragment:aar:sources:1.2.0", + "com.google.firebase:firebase-auth:aar:sources:19.3.1", + "androidx.collection:collection:jar:sources:1.1.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "androidx.annotation:annotation:jar:sources:1.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "directDependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "com.google.firebase:firebase-common-ktx:aar:sources:19.3.0", + "com.google.firebase:firebase-auth:aar:sources:19.3.1", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", + "com.google.firebase:firebase-common:aar:sources:19.3.0" + ], + "file": null + }, + { + "coord": "com.google.firebase:firebase-auth:aar:sources:19.3.1", + "dependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "androidx.core:core:aar:sources:1.3.1", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "androidx.annotation:annotation:jar:sources:1.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "directDependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "com.google.firebase:firebase-auth-interop:aar:sources:19.0.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "file": null + }, + { + "coord": "com.google.firebase:firebase-common-ktx:aar:sources:19.3.0", + "dependencies": [ + "com.google.firebase:firebase-components:aar:sources:16.0.0", + "androidx.core:core:aar:sources:1.3.1", + "androidx.fragment:fragment:aar:sources:1.2.0", + "androidx.collection:collection:jar:sources:1.1.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10", + "androidx.annotation:annotation:jar:sources:1.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.auto.value:auto-value-annotations:jar:sources:1.8.1", + "com.google.android.gms:play-services-basement:aar:sources:17.0.0" + ], + "directDependencies": [ + "androidx.annotation:annotation:jar:sources:1.1.0", + "com.google.firebase:firebase-common:aar:sources:19.3.0", + "org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:sources:1.4.10" + ], + "file": null + }, { "coord": "com.google.firebase:firebase-crashlytics:jar:sources:17.1.1", "dependencies": [ @@ -10228,7 +11396,6 @@ "com.squareup.okhttp3:okhttp:jar:sources:4.7.2", "com.google.firebase:firebase-components:aar:sources:16.0.0", "androidx.print:print:aar:sources:1.0.0", - "com.google.android.gms:play-services-base:aar:sources:17.0.0", "androidx.lifecycle:lifecycle-viewmodel:aar:sources:2.2.0", "androidx.core:core:aar:sources:1.3.1", "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", @@ -10239,6 +11406,7 @@ "androidx.collection:collection:jar:sources:1.1.0", "com.google.dagger:dagger:jar:sources:2.28.1", "androidx.lifecycle:lifecycle-livedata:aar:sources:2.2.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", "com.google.android.datatransport:transport-api:aar:sources:2.2.0", "com.google.android.datatransport:transport-backend-cct:aar:sources:2.3.0", "com.google.firebase:firebase-encoders-json:aar:sources:16.1.0", @@ -10271,15 +11439,14 @@ { "coord": "com.google.firebase:firebase-iid-interop:aar:sources:17.0.0", "dependencies": [ - "com.google.android.gms:play-services-base:aar:sources:17.0.0", "androidx.core:core:aar:sources:1.3.1", "androidx.fragment:fragment:aar:sources:1.2.0", "androidx.collection:collection:jar:sources:1.1.0", - "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", "com.google.android.gms:play-services-basement:aar:sources:17.0.0" ], "directDependencies": [ - "com.google.android.gms:play-services-base:aar:sources:17.0.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", "com.google.android.gms:play-services-basement:aar:sources:17.0.0" ], "file": null @@ -10290,7 +11457,6 @@ "androidx.documentfile:documentfile:aar:sources:1.0.0", "com.google.firebase:firebase-components:aar:sources:16.0.0", "androidx.print:print:aar:sources:1.0.0", - "com.google.android.gms:play-services-base:aar:sources:17.0.0", "androidx.lifecycle:lifecycle-viewmodel:aar:sources:2.2.0", "androidx.core:core:aar:sources:1.3.1", "androidx.localbroadcastmanager:localbroadcastmanager:aar:sources:1.0.0", @@ -10298,6 +11464,7 @@ "androidx.fragment:fragment:aar:sources:1.2.0", "androidx.collection:collection:jar:sources:1.1.0", "androidx.lifecycle:lifecycle-livedata:aar:sources:2.2.0", + "com.google.android.gms:play-services-base:aar:sources:17.1.0", "androidx.annotation:annotation:jar:sources:1.1.0", "com.google.firebase:firebase-common:aar:sources:19.3.0", "com.google.android.gms:play-services-tasks:aar:sources:17.0.0", @@ -10373,6 +11540,16 @@ ], "file": null }, + { + "coord": "com.google.firebase:protolite-well-known-types:aar:sources:17.1.0", + "dependencies": [ + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3" + ], + "directDependencies": [ + "com.google.protobuf:protobuf-javalite:jar:sources:3.17.3" + ], + "file": null + }, { "coord": "com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava", "dependencies": [], diff --git a/third_party/versions.bzl b/third_party/versions.bzl index b51f0c4b457..7cc87b04721 100644 --- a/third_party/versions.bzl +++ b/third_party/versions.bzl @@ -55,8 +55,10 @@ MAVEN_PRODUCTION_DEPENDENCY_VERSIONS = { "com.google.android.flexbox:flexbox": "3.0.0", "com.google.android.material:material": "1.3.0", "com.google.firebase:firebase-analytics": "17.5.0", + "com.google.firebase:firebase-auth-ktx": "19.3.1", "com.google.firebase:firebase-common": "19.3.0", "com.google.firebase:firebase-crashlytics": "17.1.1", + "com.google.firebase:firebase-firestore-ktx": "21.5.0", "com.google.gms:google-services": "4.3.3", "com.google.guava:guava": "28.1-android", "com.google.protobuf:protobuf-javalite": "3.17.3", @@ -84,7 +86,7 @@ MAVEN_TEST_DEPENDENCY_VERSIONS = { "androidx.arch.core:core-testing": "2.1.0", "androidx.test.espresso:espresso-accessibility": "3.1.0", "androidx.test.espresso:espresso-contrib": "3.1.0", - "androidx.test.espresso:espresso-core": "3.2.0", + "androidx.test.espresso:espresso-core": "3.1.0", "androidx.test.espresso:espresso-intents": "3.1.0", "androidx.test.ext:junit": "1.1.1", "androidx.test.ext:truth": "1.4.0", @@ -108,8 +110,8 @@ MAVEN_TEST_DEPENDENCY_VERSIONS = { "org.jetbrains.kotlinx:kotlinx-coroutines-test": "1.2.2", "org.mockito.kotlin:mockito-kotlin": "3.2.0", "org.mockito:mockito-core": "2.19.0", - "org.robolectric:annotations": "4.5", - "org.robolectric:robolectric": "4.5", + "org.robolectric:annotations": "4.7", + "org.robolectric:robolectric": "4.7", "org.snakeyaml:snakeyaml-engine": "2.6", } diff --git a/utility/build.gradle b/utility/build.gradle index 52164f42b34..0dca6e27763 100644 --- a/utility/build.gradle +++ b/utility/build.gradle @@ -89,6 +89,7 @@ dependencies { 'com.google.firebase:firebase-analytics-ktx:17.5.0', 'com.google.firebase:firebase-core:17.5.0', 'com.google.firebase:firebase-crashlytics:17.0.0', + 'com.google.firebase:firebase-firestore-ktx:21.5.0', 'com.google.protobuf:protobuf-javalite:3.17.3', "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version", 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1', @@ -108,7 +109,7 @@ dependencies { "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version", 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.2.2', 'org.mockito:mockito-core:2.19.0', - 'org.robolectric:robolectric:4.5', + 'org.robolectric:robolectric:4.7', project(":data"), project(":testing"), ) diff --git a/utility/src/main/java/org/oppia/android/util/logging/LogUploader.kt b/utility/src/main/java/org/oppia/android/util/logging/LogUploader.kt index 9104e66a24f..0c337ca71a6 100644 --- a/utility/src/main/java/org/oppia/android/util/logging/LogUploader.kt +++ b/utility/src/main/java/org/oppia/android/util/logging/LogUploader.kt @@ -17,4 +17,10 @@ interface LogUploader { workManager: WorkManager, workRequest: PeriodicWorkRequest ) + + /** Enqueues a [workRequest] using the [workManager] for uploading event logs that are meant for Firestore. */ + fun enqueueWorkRequestForFirestore( + workManager: WorkManager, + workRequest: PeriodicWorkRequest + ) } diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/BUILD.bazel b/utility/src/main/java/org/oppia/android/util/logging/firebase/BUILD.bazel index be07e37c2d8..5ba9929318c 100644 --- a/utility/src/main/java/org/oppia/android/util/logging/firebase/BUILD.bazel +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/BUILD.bazel @@ -48,6 +48,7 @@ kt_android_library( deps = [ ":dagger", ":firebase_exception_logger", + ":firestore_logger_impl", ":prod_impl", "//third_party:com_google_firebase_firebase-analytics", "//third_party:com_google_firebase_firebase-crashlytics", @@ -82,8 +83,49 @@ kt_android_library( deps = [ ":dagger", ":debug_event_logger", + ":debug_firestore_logger", ":firebase_exception_logger", ], ) +kt_android_library( + name = "firestore_logger_impl", + srcs = [ + "FirestoreEventLoggerProdImpl.kt", + ], + visibility = ["//:oppia_api_visibility"], + deps = [ + ":firestore_logger", + "//third_party:androidx_work_work-runtime", + "//third_party:androidx_work_work-runtime-ktx", + "//third_party:com_google_firebase_firebase-firestore-ktx", + "//utility/src/main/java/org/oppia/android/util/logging:console_logger", + ], +) + +kt_android_library( + name = "firestore_logger", + srcs = [ + "FirestoreEventLogger.kt", + ], + visibility = ["//:oppia_api_visibility"], + deps = [ + "//model/src/main/proto:event_logger_java_proto_lite", + ], +) + +kt_android_library( + name = "debug_firestore_logger", + srcs = [ + "DebugFirestoreEventLogger.kt", + ], + visibility = [ + "//app:__pkg__", + ], + deps = [ + ":firestore_logger_impl", + "//third_party:javax_inject_javax_inject", + ], +) + dagger_rules() diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugFirestoreEventLogger.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugFirestoreEventLogger.kt new file mode 100644 index 00000000000..fd745c0f9a8 --- /dev/null +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugFirestoreEventLogger.kt @@ -0,0 +1,31 @@ +package org.oppia.android.util.logging.firebase + +import org.oppia.android.app.model.EventLog +import java.util.concurrent.CopyOnWriteArrayList +import javax.inject.Inject +import javax.inject.Singleton + +/** + * A debug implementation of [FirestoreEventLogger] used in developer-only builds of the event. + * + * It forwards events to a production [FirestoreEventLogger] for real logging, but it also records logged + * events for later retrieval (e.g. via [getEventList]). + */ +@Singleton +class DebugFirestoreEventLogger @Inject constructor( + factory: FirestoreEventLoggerProdImpl.Factory +) : FirestoreEventLogger { + private val realEventLogger by lazy { factory.createFirestoreEventLogger() } + private val eventList = CopyOnWriteArrayList() + + override fun uploadEvent(eventLog: EventLog) { + eventList.add(eventLog) + realEventLogger.uploadEvent(eventLog) + } + + /** Returns the list of all [EventLog]s logged since the app opened. */ + fun getEventList(): List = eventList + + /** Returns the most recently logged event. */ + fun getMostRecentEvent(): EventLog = getEventList().last() +} diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugLogReportingModule.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugLogReportingModule.kt index 1f897833e89..4770adb56f8 100644 --- a/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugLogReportingModule.kt +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/DebugLogReportingModule.kt @@ -27,4 +27,9 @@ class DebugLogReportingModule { factory: FirebaseAnalyticsEventLogger.Factory ): PerformanceMetricsEventLogger = factory.createPerformanceMetricEventLogger() + + @Provides + @Singleton + fun provideDebugFirestoreLogger(debugFirestoreEventLogger: DebugFirestoreEventLogger): + FirestoreEventLogger = debugFirestoreEventLogger } diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploader.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploader.kt index 067c7c4c815..40316ac0397 100644 --- a/utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploader.kt +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseLogUploader.kt @@ -9,6 +9,7 @@ import javax.inject.Inject private const val OPPIA_EVENT_WORK = "OPPIA_EVENT_WORK_REQUEST" private const val OPPIA_EXCEPTION_WORK = "OPPIA_EXCEPTION_WORK_REQUEST" private const val OPPIA_PERFORMANCE_METRICS_WORK = "OPPIA_PERFORMANCE_METRICS_WORK" +private const val OPPIA_FIRESTORE_WORK = "OPPIA_FIRESTORE_WORK_REQUEST" /** Enqueues work requests for uploading stored event/exception logs to the remote service. */ class FirebaseLogUploader @Inject constructor() : @@ -46,4 +47,15 @@ class FirebaseLogUploader @Inject constructor() : workRequest ) } + + override fun enqueueWorkRequestForFirestore( + workManager: WorkManager, + workRequest: PeriodicWorkRequest + ) { + workManager.enqueueUniquePeriodicWork( + OPPIA_FIRESTORE_WORK, + ExistingPeriodicWorkPolicy.KEEP, + workRequest + ) + } } diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLogger.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLogger.kt new file mode 100644 index 00000000000..0cd1787de42 --- /dev/null +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLogger.kt @@ -0,0 +1,13 @@ +package org.oppia.android.util.logging.firebase + +import org.oppia.android.app.model.EventLog + +/** Logger for uploading data bundles to Firestore. */ +interface FirestoreEventLogger { + /** + * Converts eventLogs to Firestore documents and uploads or save them on disk. + * + * @param eventLog which contains all the relevant data to be reported. + */ + fun uploadEvent(eventLog: EventLog) +} diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLoggerProdImpl.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLoggerProdImpl.kt new file mode 100644 index 00000000000..09b829e8bbe --- /dev/null +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/FirestoreEventLoggerProdImpl.kt @@ -0,0 +1,46 @@ +package org.oppia.android.util.logging.firebase + +import com.google.firebase.firestore.FirebaseFirestore +import org.oppia.android.app.model.EventLog +import org.oppia.android.util.logging.ConsoleLogger +import javax.inject.Inject + +/** Logger for uploading to Firestore. */ +class FirestoreEventLoggerProdImpl private constructor( + private val firebaseFirestore: FirebaseFirestore, + private val consoleLogger: ConsoleLogger +) : FirestoreEventLogger { + /** Converts an event to a document and uploads it to Firebase Firestore. */ + override fun uploadEvent(eventLog: EventLog) { + uploadOptionalResponseDocument(eventLog) + } + + private fun uploadOptionalResponseDocument(eventLog: EventLog) { + val eventContext = eventLog.context.optionalResponse + val document = hashMapOf( + "survey_id" to eventContext.surveyDetails.surveyId, + "open_feedback_answer" to eventContext.feedbackAnswer, + "time_submitted" to eventLog.timestamp + ) + + firebaseFirestore.collection("nps_survey_open_feedback") + .add(document) + .addOnSuccessListener { + consoleLogger.i("FirestoreEventLoggerProdImpl", "Upload to Firestore was successful") + } + .addOnFailureListener { e -> + consoleLogger.e("FirestoreEventLoggerProdImpl", e.toString(), e) + } + } + + /** Application-scoped injectable factory for creating a new [FirestoreEventLoggerProdImpl]. */ + class Factory @Inject constructor( + private val consoleLogger: ConsoleLogger + ) { + private val firestoreDatabase by lazy { FirebaseFirestore.getInstance() } + + /** Returns a new [FirestoreEventLoggerProdImpl] for the current application context. */ + fun createFirestoreEventLogger(): FirestoreEventLoggerProdImpl = + FirestoreEventLoggerProdImpl(firestoreDatabase, consoleLogger) + } +} diff --git a/utility/src/main/java/org/oppia/android/util/logging/firebase/LogReportingModule.kt b/utility/src/main/java/org/oppia/android/util/logging/firebase/LogReportingModule.kt index c822eb02f2d..8cd3009e8a5 100644 --- a/utility/src/main/java/org/oppia/android/util/logging/firebase/LogReportingModule.kt +++ b/utility/src/main/java/org/oppia/android/util/logging/firebase/LogReportingModule.kt @@ -27,4 +27,9 @@ class LogReportingModule { factory: FirebaseAnalyticsEventLogger.Factory ): PerformanceMetricsEventLogger = factory.createPerformanceMetricEventLogger() + + @Provides + @Singleton + fun provideFirestoreLogger(factory: FirestoreEventLoggerProdImpl.Factory): + FirestoreEventLogger = factory.createFirestoreEventLogger() }