diff --git a/face/capture/build.gradle.kts b/face/capture/build.gradle.kts
index 95fc9d955c..eead2c311c 100644
--- a/face/capture/build.gradle.kts
+++ b/face/capture/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
id("simprints.feature")
- id("simprints.testing.android")
id("kotlin-parcelize")
id("simprints.library.kotlinSerialization")
}
diff --git a/face/capture/src/androidTest/AndroidManifest.xml b/face/capture/src/androidTest/AndroidManifest.xml
deleted file mode 100644
index c99d51054c..0000000000
--- a/face/capture/src/androidTest/AndroidManifest.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/face/capture/src/androidTest/java/com/simprints/face/CustomTestRunner.kt b/face/capture/src/androidTest/java/com/simprints/face/CustomTestRunner.kt
deleted file mode 100644
index 4cf6496d0d..0000000000
--- a/face/capture/src/androidTest/java/com/simprints/face/CustomTestRunner.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.simprints.face
-
-import android.app.Application
-import android.content.Context
-import androidx.test.runner.AndroidJUnitRunner
-import dagger.hilt.android.testing.HiltTestApplication
-
-// A custom runner to set up the instrumented application class for tests.
-class CustomTestRunner : AndroidJUnitRunner() {
- override fun newApplication(
- cl: ClassLoader?,
- name: String?,
- context: Context?,
- ): Application = super.newApplication(cl, HiltTestApplication::class.java.name, context)
-}
diff --git a/face/capture/src/androidTest/java/com/simprints/face/capture/confirmation/ConfirmationFragmentTest.kt b/face/capture/src/androidTest/java/com/simprints/face/capture/confirmation/ConfirmationFragmentTest.kt
deleted file mode 100644
index 42aa15e40a..0000000000
--- a/face/capture/src/androidTest/java/com/simprints/face/capture/confirmation/ConfirmationFragmentTest.kt
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.simprints.face.capture.confirmation
-
-import android.graphics.Bitmap
-import androidx.fragment.app.testing.launchFragmentInContainer
-import androidx.navigation.Navigation
-import androidx.navigation.testing.TestNavHostController
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.espresso.Espresso.onView
-import androidx.test.espresso.action.ViewActions.click
-import androidx.test.espresso.assertion.ViewAssertions.matches
-import androidx.test.espresso.matcher.ViewMatchers.*
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
-import com.simprints.core.tools.time.Timestamp
-import com.simprints.face.capture.R
-import com.simprints.face.capture.models.FaceDetection
-import com.simprints.face.capture.screens.FaceCaptureViewModel
-import com.simprints.face.capture.screens.confirmation.ConfirmationFragment
-import dagger.hilt.android.testing.BindValue
-import dagger.hilt.android.testing.HiltAndroidRule
-import dagger.hilt.android.testing.HiltAndroidTest
-import io.mockk.every
-import io.mockk.mockk
-import org.hamcrest.CoreMatchers.allOf
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import com.simprints.infra.resources.R as IDR
-
-@HiltAndroidTest
-@RunWith(AndroidJUnit4::class)
-class ConfirmationFragmentTest {
- @get:Rule
- var hiltRule = HiltAndroidRule(this)
-
- @BindValue
- @JvmField
- internal val faceCaptureViewModel: FaceCaptureViewModel = mockk(relaxed = true) {
- every { getSampleDetection() } returns FaceDetection(
- Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888),
- face = null,
- status = FaceDetection.Status.VALID,
- securedImageRef = null,
- detectionStartTime = Timestamp(0L),
- isFallback = false,
- id = "",
- detectionEndTime = Timestamp(0L),
- )
- }
-
- @Test
- fun onLaunchConfirmationFragmentAssertTextAndNavigation() {
- val navController = TestNavHostController(
- ApplicationProvider.getApplicationContext(),
- )
-
- val confirmationScenario =
- launchFragmentInContainer()
-
- confirmationScenario.onFragment { confirmationFragment ->
- navController.setGraph(R.navigation.graph_face_capture_internal)
- Navigation.setViewNavController(confirmationFragment.requireView(), navController)
- }
-
- onView(
- allOf(
- withId(R.id.face_confirm_title),
- withText(IDR.string.face_capture_confirmation_title),
- ),
- ).check(matches(isDisplayed()))
-
- onView(
- allOf(
- withId(R.id.confirmation_txt),
- withText(IDR.string.face_capture_successfully_title),
- ),
- ).check(matches(isDisplayed()))
-
- onView(
- allOf(
- withId(R.id.recapture_btn),
- withText(IDR.string.face_capture_recapture_button),
- ),
- ).check(matches(isDisplayed()))
-
- onView(
- allOf(
- withId(R.id.confirmation_btn),
- withText(IDR.string.face_capture_finish_button),
- ),
- ).check(matches(isDisplayed()))
-
- onView(withId(R.id.confirmation_btn)).perform(click())
- assertThat(navController.currentDestination?.id).isEqualTo(R.id.facePreparationFragment)
- }
-}
diff --git a/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/LiveFeedbackFragmentTest.kt b/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/LiveFeedbackFragmentTest.kt
deleted file mode 100644
index 269b737cde..0000000000
--- a/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/LiveFeedbackFragmentTest.kt
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.simprints.face.capture.livefeedback
-
-import android.os.Build
-import androidx.fragment.app.testing.launchFragmentInContainer
-import androidx.navigation.NavHostController
-import androidx.navigation.Navigation
-import androidx.navigation.testing.TestNavHostController
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.espresso.Espresso.onView
-import androidx.test.espresso.assertion.ViewAssertions.matches
-import androidx.test.espresso.matcher.ViewMatchers.*
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.uiautomator.UiDevice
-import androidx.test.uiautomator.UiObjectNotFoundException
-import androidx.test.uiautomator.UiSelector
-import com.simprints.face.capture.R
-import com.simprints.face.capture.screens.FaceCaptureViewModel
-import com.simprints.face.capture.screens.livefeedback.LiveFeedbackFragment
-import com.simprints.face.capture.screens.livefeedback.LiveFeedbackFragmentViewModel
-import com.simprints.infra.logging.Simber
-import io.mockk.mockk
-import org.hamcrest.CoreMatchers.allOf
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import com.simprints.infra.resources.R as IDR
-
-@RunWith(AndroidJUnit4::class)
-class LiveFeedbackFragmentTest {
- private lateinit var device: UiDevice
- private val faceCaptureViewModel: FaceCaptureViewModel = mockk(relaxed = true)
- private val liveFeedBackVm: LiveFeedbackFragmentViewModel = mockk(relaxed = true)
-
- @Before
- fun setUp() {
- device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
- }
-
- @Test
- fun openingLiveFeedBackScreenShowsCorrectText() {
- val navController: NavHostController = TestNavHostController(
- ApplicationProvider.getApplicationContext(),
- )
- val liveFeedBackScenario =
- launchFragmentInContainer()
-
- liveFeedBackScenario.onFragment { liveFeedbackFragment ->
- navController.setGraph(R.navigation.graph_face_capture_internal)
- Navigation.setViewNavController(liveFeedbackFragment.requireView(), navController)
- }
- allowPermissionsIfNeeded("Only this time")
- allowPermissionsIfNeeded("Allow")
- // Is this test really useful for the UI??
- onView(
- allOf(
- withId(R.id.capture_feedback_txt_title),
- withText(IDR.string.face_capture_title_previewing),
- ),
- ).check(matches(isDisplayed()))
- }
-
- private fun allowPermissionsIfNeeded(text: String) {
- if (Build.VERSION.SDK_INT >= 23) {
- val allowPermissions = device.findObject(UiSelector().text(text))
- if (allowPermissions.exists()) {
- try {
- allowPermissions.click()
- } catch (e: UiObjectNotFoundException) {
- Simber.e("There is no permissions dialog to interact with.", e)
- }
- }
- }
- }
-}
diff --git a/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/PreparationFragmentTest.kt b/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/PreparationFragmentTest.kt
deleted file mode 100644
index 4476c9c715..0000000000
--- a/face/capture/src/androidTest/java/com/simprints/face/capture/livefeedback/PreparationFragmentTest.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.simprints.face.capture.livefeedback
-
-import androidx.fragment.app.testing.launchFragmentInContainer
-import androidx.navigation.NavHostController
-import androidx.navigation.Navigation
-import androidx.navigation.testing.TestNavHostController
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.espresso.Espresso.onView
-import androidx.test.espresso.action.ViewActions.click
-import androidx.test.espresso.matcher.ViewMatchers.withId
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
-import com.simprints.face.capture.R
-import com.simprints.face.capture.screens.preparation.PreparationFragment
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@RunWith(AndroidJUnit4::class)
-class PreparationFragmentTest {
- @Test
- fun testNavigationFromPreparationToLiveFeedBackFragment() {
- val navController: NavHostController = TestNavHostController(
- ApplicationProvider.getApplicationContext(),
- )
- val prepFragScenario =
- launchFragmentInContainer()
-
- prepFragScenario.onFragment { prepFragment ->
- navController.setGraph(R.navigation.graph_face_capture_internal)
- Navigation.setViewNavController(prepFragment.requireView(), navController)
- }
-
- onView(withId(R.id.detection_onboarding_frame)).perform(click())
- assertThat(navController.currentDestination?.id).isEqualTo(R.id.faceLiveFeedbackFragment)
- }
-}
diff --git a/feature/matcher/build.gradle.kts b/feature/matcher/build.gradle.kts
index 24cdbd4338..57c7e4789d 100644
--- a/feature/matcher/build.gradle.kts
+++ b/feature/matcher/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
id("simprints.feature")
- id("simprints.testing.android")
id("kotlin-parcelize")
}
diff --git a/fingerprint/capture/build.gradle.kts b/fingerprint/capture/build.gradle.kts
index f5e24ee094..1b3f69fe9a 100644
--- a/fingerprint/capture/build.gradle.kts
+++ b/fingerprint/capture/build.gradle.kts
@@ -1,17 +1,11 @@
plugins {
id("simprints.feature")
- id("simprints.testing.android")
id("kotlin-parcelize")
id("simprints.library.kotlinSerialization")
}
android {
namespace = "com.simprints.fingerprint.capture"
-
- defaultConfig {
- testInstrumentationRunner = "com.simprints.fingerprint.CustomTestRunner"
- testInstrumentationRunnerArguments["clearPackageData"] = "true"
- }
}
dependencies {
diff --git a/infra/event-sync/build.gradle.kts b/infra/event-sync/build.gradle.kts
index 59da5d177f..0814d95788 100644
--- a/infra/event-sync/build.gradle.kts
+++ b/infra/event-sync/build.gradle.kts
@@ -1,7 +1,6 @@
plugins {
id("simprints.infra")
id("simprints.library.room")
- id("simprints.testing.android")
id("simprints.library.kotlinSerialization")
id("simprints.library.backendApi")
}
diff --git a/infra/event-sync/src/androidTest/java/com/simprints/infra/eventsync/remote/EventRemoteDataSourceImplAndroidTest.kt b/infra/event-sync/src/androidTest/java/com/simprints/infra/eventsync/remote/EventRemoteDataSourceImplAndroidTest.kt
deleted file mode 100644
index a44eaabf50..0000000000
--- a/infra/event-sync/src/androidTest/java/com/simprints/infra/eventsync/remote/EventRemoteDataSourceImplAndroidTest.kt
+++ /dev/null
@@ -1,701 +0,0 @@
-// TODO fix
-@file:Suppress("ktlint:standard:no-empty-file")
-
-package com.simprints.infra.eventsync.remote
-
-// @RunWith(AndroidJUnit4::class)
-// class EventRemoteDataSourceImplAndroidTest {
-//
-// companion object {
-// const val URL = "https://dev.simprints-apis.com/androidapi/v2/"
-// const val SIGNED_ID_USER = "some_signed_user"
-// const val DEFAULT_TIME = 1000L
-// }
-//
-// private val app = ApplicationProvider.getApplicationContext()
-//
-// private val remoteTestingManager: RemoteTestingManager by lazy {
-// RemoteTestingManager.create(app)
-// }
-//
-// private val facePayloadId = randomUUID()
-// private val fingerPayloadId = randomUUID()
-//
-// @MockK
-// lateinit var timeHelper: TimeHelper
-//
-// private lateinit var testProject: TestProject
-//
-// @get:Rule
-// val testProjectRule = TestProjectRule(app)
-//
-// private lateinit var eventRemoteDataSource: EventRemoteDataSource
-// private lateinit var eventLabels: EventLabels
-//
-// @MockK
-// var loginManager = mockk()
-//
-// @Before
-// fun setUp() {
-// MockKAnnotations.init(this)
-// testProject = testProjectRule.testProject
-// eventLabels = EventLabels(sessionId = GUID1, deviceId = GUID1, projectId = testProject.id)
-//
-// val firebaseTestToken = runTest {
-// remoteTestingManager.generateFirebaseToken(
-// projectId = testProject.id,
-// userId = SIGNED_ID_USER
-// )
-// }
-// coEvery { loginManager.buildClient(any()) } returns SimApiClientImpl(
-// EventRemoteInterface::class,
-// app,
-// URL,
-// "deviceId",
-// "Test",
-// firebaseTestToken.token,
-// )
-// eventRemoteDataSource = EventRemoteDataSourceImpl(
-// loginManager,
-// JsonHelper
-// )
-// every { timeHelper.nowMinus(any(), any()) } returns 100
-// every { timeHelper.now() } returns 100
-// }
-//
-// /**
-// * This test case makes calls to BFSID, and its a way for us to validate that, changes to any of
-// * the [Event] subtypes, is accepted by BFSID. Thus ensuring that at development time, we catch
-// * any issues that might arise as a result of updating the captured events' data structures.
-// */
-// @Test(expected = Test.None::class)
-// fun aSessionWithAllEvents_shouldGetUploaded() {
-// runBlocking {
-// val events = mutableListOf()
-// EventType.values().forEach {
-// events.addEventFor(it)
-// }
-//
-// Simber.d("UPLOAD ALL EVENTS")
-// executeUpload(events)
-// Simber.d("UPLOAD ENROLMENT V1")
-// executeUpload(listOf(createEnrolmentEventV1().apply { labels = eventLabels }))
-// }
-// }
-//
-// private suspend fun executeUpload(events: List) {
-// eventRemoteDataSource.post(
-// projectId = testProject.id,
-// acceptInvalidEvents = false,
-// events = events.toImmutableList()
-// )
-// }
-//
-// private fun MutableList.addAlertScreenEvents() {
-// AlertScreenEvent.AlertScreenPayload.AlertScreenEventType.values()
-// .forEach {
-// add(
-// AlertScreenEvent(
-// createdAt = DEFAULT_TIME,
-// alertType = it,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addArtificialTerminationEvent() {
-// ArtificialTerminationPayload.Reason.values().forEach {
-// add(
-// ArtificialTerminationEvent(
-// createdAt = DEFAULT_TIME,
-// reason = it,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addAuthenticationEvent() {
-// listOf(
-// Result.OFFLINE,
-// Result.OFFLINE,
-// Result.OFFLINE,
-// Result.OFFLINE,
-// Result.TECHNICAL_FAILURE,
-// Result.BACKEND_MAINTENANCE_ERROR,
-// Result.INTEGRITY_SERVICE_ERROR,
-// Result.UNKNOWN
-// ).forEach {
-// add(
-// AuthenticationEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// userInfo = UserInfo("some_project", DEFAULT_USER_ID),
-// result = it,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addAuthorizationEvent() {
-// AuthorizationPayload.AuthorizationResult.values().forEach {
-// add(
-// AuthorizationEvent(
-// createdAt = DEFAULT_TIME,
-// result = it,
-// userInfo = AuthorizationPayload.UserInfo("some_project", DEFAULT_USER_ID),
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addCandidateReadEvent() {
-// CandidateReadPayload.LocalResult.values().forEach { local ->
-// CandidateReadPayload.RemoteResult.values().forEach { remote ->
-// add(
-// CandidateReadEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// candidateId = randomUUID(),
-// localResult = local,
-// remoteResult = remote,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-// }
-//
-// private fun MutableList.addConnectivitySnapshotEvent() {
-// add(
-// ConnectivitySnapshotEvent(
-// createdAt = DEFAULT_TIME,
-// connections = listOf(
-// SimNetworkUtils.Connection(
-// SimNetworkUtils.ConnectionType.MOBILE,
-// SimNetworkUtils.ConnectionState.CONNECTED
-// )
-// ), labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addConsentEvent() {
-// ConsentPayload.Type.values().forEach { type ->
-// ConsentPayload.Result.values().forEach { result ->
-// add(
-// ConsentEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// consentType = type,
-// result = result,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-// }
-//
-// private fun MutableList.addEnrolmentEvent() {
-// add(
-// EnrolmentEventV2(
-// createdAt = DEFAULT_TIME,
-// subjectId = randomUUID(),
-// projectId = testProject.id,
-// moduleId = DEFAULT_MODULE_ID,
-// attendantId = DEFAULT_USER_ID,
-// personCreationEventId = randomUUID(),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addFingerprintCaptureEvent() {
-// FingerprintCaptureEvent.FingerprintCapturePayload.Result.values().forEach { result ->
-// FingerIdentifier.values().forEach { fingerIdentifier ->
-//
-// val fingerprint = FingerprintCaptureEvent.FingerprintCapturePayload.Fingerprint(
-// finger = fingerIdentifier.fromDomainToModuleApi(),
-// quality = 0,
-// format = "ISO_19794_2"
-// )
-//
-// val event = FingerprintCaptureEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// finger = fingerIdentifier.fromDomainToModuleApi(),
-// qualityThreshold = 0,
-// result = result,
-// fingerprint = fingerprint,
-// labels = eventLabels,
-// payloadId = fingerPayloadId
-// )
-//
-// add(event)
-// }
-// }
-// }
-//
-// private fun MutableList.addFingerprintBiometricCaptureEvent() {
-// FingerIdentifier.values().forEach { fingerIdentifier ->
-// val fakeTemplate = EncodingUtilsImpl.byteArrayToBase64(
-// Random.nextBytes(64)
-// )
-//
-// val fingerprint =
-// FingerprintCaptureBiometricsEvent.FingerprintCaptureBiometricsPayload.Fingerprint(
-// finger = fingerIdentifier.fromDomainToModuleApi(),
-// template = fakeTemplate,
-// quality = 1,
-// format = "ISO_19794_2"
-// )
-//
-// val event = FingerprintCaptureBiometricsEvent(
-// createdAt = DEFAULT_TIME,
-// fingerprint = fingerprint,
-// labels = eventLabels,
-// payloadId = fingerPayloadId
-// )
-//
-// add(event)
-// }
-// }
-//
-//
-// private fun MutableList.addFaceCaptureEvent() {
-// FaceCaptureEvent.FaceCapturePayload.Result.values().forEachIndexed { index, result ->
-//
-// val face =
-// FaceCaptureEvent.FaceCapturePayload.Face(
-// yaw = 30f,
-// roll = 40f,
-// quality = 100f,
-// format = RANK_ONE_1_23
-// )
-//
-// val event = FaceCaptureEvent(
-// startTime = DEFAULT_TIME,
-// endTime = DEFAULT_TIME + 100,
-// attemptNb = index + 1,
-// qualityThreshold = 0f,
-// result = result,
-// isFallback = false,
-// face = face,
-// labels = eventLabels,
-// payloadId = facePayloadId
-// )
-//
-// add(event)
-// }
-// }
-//
-// private fun MutableList.addFaceCaptureBiometricCaptureEvent() {
-// val template = EncodingUtilsImpl.byteArrayToBase64(Random.nextBytes(64))
-//
-// val face =
-// FaceCaptureBiometricsEvent.FaceCaptureBiometricsPayload.Face(
-// roll = 0.0f,
-// yaw = 0.0f,
-// template = template,
-// quality = 1.0f,
-// format = RANK_ONE_1_23
-// )
-//
-// val event = FaceCaptureBiometricsEvent(
-// startTime = DEFAULT_TIME,
-// face = face,
-// labels = eventLabels,
-// payloadId = facePayloadId
-// )
-//
-// add(event)
-// }
-//
-// private fun MutableList.addFaceCaptureConfirmationEvent() {
-// FaceCaptureConfirmationPayload.Result.values().forEach { result ->
-// val event = FaceCaptureConfirmationEvent(
-// startTime = DEFAULT_TIME,
-// endTime = DEFAULT_TIME + 100,
-// result = result,
-// labels = eventLabels
-// )
-//
-// add(event)
-// }
-// }
-//
-// private fun MutableList.addFaceFallbackCaptureEvent() {
-// val event = FaceFallbackCaptureEvent(
-// startTime = DEFAULT_TIME,
-// endTime = DEFAULT_TIME + 100,
-// labels = eventLabels
-// )
-// add(event)
-// }
-//
-// private fun MutableList.addFaceOnboardingCompleteEvent() {
-// val event = FaceOnboardingCompleteEvent(
-// startTime = DEFAULT_TIME,
-// endTime = DEFAULT_TIME + 100,
-// labels = eventLabels
-// )
-// add(event)
-// }
-//
-// private fun MutableList.addGuidSelectionEvent() {
-// add(
-// GuidSelectionEvent(
-// createdAt = DEFAULT_TIME,
-// selectedId = randomUUID(),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addIntentParsingEvent() {
-// IntentParsingPayload.IntegrationInfo.values().forEach {
-// add(
-// IntentParsingEvent(
-// createdAt = DEFAULT_TIME,
-// integration = it,
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addInvalidIntentEvent() {
-// add(
-// InvalidIntentEvent(
-// creationTime = DEFAULT_TIME,
-// action = "some_action",
-// extras = mapOf("wrong_field" to "wrong_value"),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addOneToManyMatchEvent() {
-// OneToManyMatchPayload.MatchPoolType.values().forEach {
-// add(
-// OneToManyMatchEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// pool = OneToManyMatchPayload.MatchPool(it, 0),
-// matcher = Matcher.SIM_AFIS,
-// result = emptyList(),
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addOneToOneMatchEvent() {
-// add(
-// OneToOneMatchEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// candidateId = randomUUID(),
-// matcher = Matcher.SIM_AFIS,
-// result = MatchEntry(randomUUID(), 0F),
-// fingerComparisonStrategy = FingerComparisonStrategy.SAME_FINGER,
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addPersonCreationEvent(
-// fingerprintCaptureEvent: FingerprintCaptureEvent?,
-// faceCaptureEvent: FaceCaptureEvent?
-// ) {
-// add(
-// PersonCreationEvent(
-// startTime = DEFAULT_TIME,
-// fingerprintCaptureIds = listOf(
-// fingerprintCaptureEvent?.payload?.id
-// ?: ""
-// ),
-// fingerprintReferenceId = randomUUID(),
-// faceCaptureIds = listOf(faceCaptureEvent?.payload?.id ?: ""),
-// faceReferenceId = randomUUID(),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addRefusalEvent() {
-// RefusalPayload.Answer.values().forEach {
-// add(
-// RefusalEvent(
-// createdAt = DEFAULT_TIME,
-// endTime = DEFAULT_TIME,
-// reason = it,
-// otherText = "other_text",
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addScannerConnectionEvent() {
-// add(
-// ScannerConnectionEvent(
-// createdAt = DEFAULT_TIME,
-// scannerInfo = ScannerConnectionPayload.ScannerInfo(
-// "scanner_id", "macAddress",
-// ScannerGeneration.VERO_2, "hardware"
-// ),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addVero2InfoSnapshotEvents() {
-// add(
-// Vero2InfoSnapshotEvent(
-// createdAt = DEFAULT_TIME,
-// version = Vero2InfoSnapshotEvent.Vero2Version.Vero2NewApiVersion(
-// "E-1", "1.23",
-// "api", "stmApp"
-// ),
-// battery = Vero2InfoSnapshotEvent.BatteryInfo(70, 15, 1, 37),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addScannerFirmwareUpdateEvent() {
-// add(
-// ScannerFirmwareUpdateEvent(
-// createdAt = DEFAULT_TIME, endTime = DEFAULT_TIME, chip = "stm",
-// targetAppVersion = "targetApp", failureReason = "failureReason",
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addSuspiciousIntentEvent() {
-// add(
-// SuspiciousIntentEvent(
-// createdAt = DEFAULT_TIME,
-// unexpectedExtras = mapOf("some_extra_key" to "value"),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCompletionCheckEvent() {
-// add(CompletionCheckEvent(createdAt = DEFAULT_TIME, completed = true, labels = eventLabels))
-// }
-//
-// private fun MutableList.addSessionCaptureEvent() {
-// val deviceArg = Device(
-// androidSdkVersion = VERSION.SDK_INT.toString(),
-// deviceModel = Build.MANUFACTURER + "_" + Build.MODEL,
-// deviceId = GUID1
-// )
-//
-// val event = SessionCaptureEvent(
-// id = randomUUID(),
-// projectId = testProject.id,
-// createdAt = CREATED_AT,
-// modalities = listOf(Modality.FINGERPRINT, Modality.FACE),
-// appVersionName = "appVersionName",
-// libVersionName = "libSimprintsVersionName",
-// language = "EN",
-// device = deviceArg,
-// databaseInfo = DatabaseInfo(sessionCount = 0, recordCount = 2)
-// )
-//
-// event.payload.location = Location(latitude = 0.0, longitude = 0.0)
-// event.payload.uploadedAt = 1
-// event.payload.endedAt = 1
-//
-// add(event)
-// }
-//
-// private fun MutableList.addCallbackErrorEvent() {
-// ErrorCallbackPayload.Reason.values().forEach {
-// add(ErrorCallbackEvent(createdAt = DEFAULT_TIME, reason = it, labels = eventLabels))
-// }
-// }
-//
-// private fun MutableList.addCallbackEnrolmentEvent() {
-// add(
-// EnrolmentCallbackEvent(
-// createdAt = DEFAULT_TIME,
-// guid = randomUUID(),
-// eventLabels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCallbackRefusalEvent() {
-// add(
-// RefusalCallbackEvent(
-// createdAt = DEFAULT_TIME,
-// reason = "reason",
-// extra = "other_text",
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCallbackVerificationEvent() {
-// IAppResponseTier.values().forEach {
-// add(
-// VerificationCallbackEvent(
-// createdAt = DEFAULT_TIME,
-// score = CallbackComparisonScore(randomUUID(), 0, it),
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addCallbackIdentificationEvent() {
-// IAppResponseTier.values().forEach {
-// add(
-// IdentificationCallbackEvent(
-// createdAt = DEFAULT_TIME,
-// sessionId = randomUUID(),
-// scores = listOf(CallbackComparisonScore(randomUUID(), 0, it)),
-// labels = eventLabels
-// )
-// )
-// }
-// }
-//
-// private fun MutableList.addCallbackConfirmationEvent() {
-// add(
-// ConfirmationCallbackEvent(
-// createdAt = DEFAULT_TIME,
-// identificationOutcome = true,
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCalloutEnrolmentEvent() {
-// add(
-// EnrolmentCalloutEvent(
-// createdAt = DEFAULT_TIME,
-// projectId = testProject.id,
-// userId = DEFAULT_USER_ID,
-// moduleId = DEFAULT_MODULE_ID,
-// metadata = "metadata",
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCalloutIdentificationEvent() {
-// add(
-// IdentificationCalloutEvent(
-// createdAt = DEFAULT_TIME,
-// projectId = testProject.id,
-// userId = DEFAULT_USER_ID,
-// moduleId = DEFAULT_MODULE_ID,
-// metadata = "metadata",
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCalloutVerificationEvent() {
-// add(
-// VerificationCalloutEvent(
-// createdAt = DEFAULT_TIME,
-// projectId = testProject.id,
-// userId = DEFAULT_USER_ID,
-// moduleId = DEFAULT_MODULE_ID,
-// verifyGuid = randomUUID(),
-// metadata = "metadata",
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCalloutLastBiomentricsEvent() {
-// add(
-// EnrolmentLastBiometricsCalloutEvent(
-// createdAt = DEFAULT_TIME,
-// projectId = testProject.id,
-// userId = DEFAULT_USER_ID,
-// moduleId = DEFAULT_MODULE_ID,
-// metadata = "metadata",
-// sessionId = randomUUID(),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// private fun MutableList.addCalloutConfirmationCallbackEvent() {
-// add(
-// ConfirmationCalloutEvent(
-// createdAt = DEFAULT_TIME,
-// projectId = testProject.id,
-// selectedGuid = randomUUID(),
-// sessionId = randomUUID(),
-// labels = eventLabels
-// )
-// )
-// }
-//
-// // Never invoked, but used to enforce that the implementation of a test for every event class
-// private fun MutableList.addEventFor(type: EventType) {
-//
-// when (type) {
-// SESSION_CAPTURE -> addSessionCaptureEvent()
-// ARTIFICIAL_TERMINATION -> addArtificialTerminationEvent()
-// AUTHENTICATION -> addAuthenticationEvent()
-// CONSENT -> addConsentEvent()
-// ENROLMENT_V2 -> addEnrolmentEvent()
-// AUTHORIZATION -> addAuthorizationEvent()
-// FINGERPRINT_CAPTURE -> addFingerprintCaptureEvent()
-// FINGERPRINT_CAPTURE_BIOMETRICS -> addFingerprintBiometricCaptureEvent()
-// ONE_TO_ONE_MATCH -> addOneToOneMatchEvent()
-// ONE_TO_MANY_MATCH -> addOneToManyMatchEvent()
-// PERSON_CREATION -> addPersonCreationEvent(
-// this.filterIsInstance().firstOrNull(),
-// this.filterIsInstance().firstOrNull()
-// )
-// ALERT_SCREEN -> addAlertScreenEvents()
-// GUID_SELECTION -> addGuidSelectionEvent()
-// CONNECTIVITY_SNAPSHOT -> addConnectivitySnapshotEvent()
-// REFUSAL -> addRefusalEvent()
-// CANDIDATE_READ -> addCandidateReadEvent()
-// SCANNER_CONNECTION -> addScannerConnectionEvent()
-// VERO_2_INFO_SNAPSHOT -> addVero2InfoSnapshotEvents()
-// SCANNER_FIRMWARE_UPDATE -> addScannerFirmwareUpdateEvent()
-// INVALID_INTENT -> addInvalidIntentEvent()
-// CALLOUT_CONFIRMATION -> addCalloutConfirmationCallbackEvent()
-// CALLOUT_IDENTIFICATION -> addCalloutIdentificationEvent()
-// CALLOUT_ENROLMENT -> addCalloutEnrolmentEvent()
-// CALLOUT_VERIFICATION -> addCalloutVerificationEvent()
-// CALLOUT_LAST_BIOMETRICS -> addCalloutLastBiomentricsEvent()
-// CALLBACK_IDENTIFICATION -> addCallbackIdentificationEvent()
-// CALLBACK_ENROLMENT -> addCallbackEnrolmentEvent()
-// CALLBACK_REFUSAL -> addCallbackRefusalEvent()
-// CALLBACK_VERIFICATION -> addCallbackVerificationEvent()
-// CALLBACK_ERROR -> addCallbackErrorEvent()
-// CALLBACK_CONFIRMATION -> addCallbackConfirmationEvent()
-// SUSPICIOUS_INTENT -> addSuspiciousIntentEvent()
-// INTENT_PARSING -> addIntentParsingEvent()
-// COMPLETION_CHECK -> addCompletionCheckEvent()
-// FACE_ONBOARDING_COMPLETE -> addFaceOnboardingCompleteEvent()
-// FACE_FALLBACK_CAPTURE -> addFaceFallbackCaptureEvent()
-// FACE_CAPTURE -> addFaceCaptureEvent()
-// FACE_CAPTURE_BIOMETRICS -> addFaceCaptureBiometricCaptureEvent()
-// FACE_CAPTURE_CONFIRMATION -> addFaceCaptureConfirmationEvent()
-// ENROLMENT_RECORD_DELETION,
-// ENROLMENT_RECORD_CREATION,
-// ENROLMENT_RECORD_MOVE,
-// ENROLMENT_V1 -> {
-// }
-// }.safeSealedWhens
-// }
-// }
diff --git a/infra/images/build.gradle.kts b/infra/images/build.gradle.kts
index 483429d5be..b5f7340559 100644
--- a/infra/images/build.gradle.kts
+++ b/infra/images/build.gradle.kts
@@ -2,7 +2,6 @@ plugins {
id("simprints.infra")
id("simprints.library.room")
id("kotlin-parcelize")
- id("simprints.testing.android")
id("simprints.library.kotlinSerialization")
id("simprints.library.backendApi")
}
diff --git a/infra/images/src/androidTest/java/com/simprints/infra/images/ImageLocalDataSourceImplTest.kt b/infra/images/src/androidTest/java/com/simprints/infra/images/ImageLocalDataSourceImplTest.kt
deleted file mode 100644
index ff7a3b732d..0000000000
--- a/infra/images/src/androidTest/java/com/simprints/infra/images/ImageLocalDataSourceImplTest.kt
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.simprints.infra.images
-
-import android.app.Application
-import androidx.test.core.app.ApplicationProvider
-import com.google.common.truth.Truth.assertThat
-import com.simprints.infra.images.local.ImageLocalDataSourceImpl
-import com.simprints.infra.images.model.Path
-import com.simprints.infra.images.model.SecuredImageRef
-import io.mockk.mockk
-import kotlinx.coroutines.test.UnconfinedTestDispatcher
-import kotlinx.coroutines.test.runTest
-import org.junit.Before
-import org.junit.Test
-import java.io.File
-import java.util.UUID
-import kotlin.random.Random
-
-class ImageLocalDataSourceImplTest {
- private val app = ApplicationProvider.getApplicationContext()
- private val imagesFolder = "${app.filesDir}/$IMAGES_FOLDER"
- private val path = Path("test/$FILE_NAME")
- private val imageLocalDataSource = ImageLocalDataSourceImpl(app, mockk(), UnconfinedTestDispatcher())
-
- @Before
- fun setUp() {
- File(imagesFolder).deleteRecursively()
- }
-
- @Test
- fun givenAByteArray_storeIt_shouldReturnASecuredImageRef() = runTest {
- val byteArray = Random.Default.nextBytes(SIZE_IMAGE)
- val securedImageRef =
- imageLocalDataSource.encryptAndStoreImage(byteArray, "projectId", path)
- require(securedImageRef != null)
-
- assertThat(securedImageRef.relativePath.compose()).contains(FILE_NAME)
- }
-
- @Test
- fun givenAnEncryptedFile_decryptIt_shouldReturnTheRightContent() = runTest {
- val byteArray = Random.Default.nextBytes(SIZE_IMAGE)
- val securedImageRef =
- imageLocalDataSource.encryptAndStoreImage(byteArray, "projectId", path)
- require(securedImageRef != null)
-
- val encryptedInputStream = imageLocalDataSource.decryptImage(securedImageRef)
- assertThat(encryptedInputStream?.readBytes()).isEqualTo(byteArray)
- }
-
- @Test
- fun encryptThrowsAnException_shouldBeHandled() = runTest {
- val securedImageRef = imageLocalDataSource.encryptAndStoreImage(
- emptyArray().toByteArray(),
- "projectId",
- Path(""),
- )
- assertThat(securedImageRef).isNull()
- }
-
- @Test
- fun shouldListImageFiles() = runTest {
- val expectedFileCount = createImageFiles(10).size
- val actualFileCount = imageLocalDataSource.listImages("projectId").size
-
- assertThat(actualFileCount).isEqualTo(expectedFileCount)
- }
-
- @Test
- fun shouldListImageFilesStoredAtDifferentSubDirs() = runTest {
- val bytes = Random.nextBytes(SIZE_IMAGE)
- with(imageLocalDataSource) {
- encryptAndStoreImage(bytes, "projectId", Path("dir1/$FILE_NAME"))
- encryptAndStoreImage(bytes, "projectId", Path("dir2/$FILE_NAME"))
- }
-
- val images = imageLocalDataSource.listImages("projectId")
- val actualFileCount = images.size
-
- assertThat(actualFileCount).isEqualTo(2)
- }
-
- @Test
- fun shouldDeleteImageFiles() = runTest {
- val files = createImageFiles(3)
-
- val fileToDelete = files.first()
- imageLocalDataSource.deleteImage(fileToDelete)
- val remainingFiles = imageLocalDataSource.listImages("projectId")
-
- assertThat(remainingFiles.none { it.relativePath == fileToDelete.relativePath }).isTrue()
- assertThat(remainingFiles.size).isEqualTo(2)
- }
-
- @Test
- fun shouldHandleDeletionOfNonExistingImageFiles() = runTest {
- val file = SecuredImageRef(Path("non/existing/path/file.txt"))
-
- assertThat(imageLocalDataSource.deleteImage(file)).isFalse()
- }
-
- private suspend fun createImageFiles(count: Int): List {
- val createdFiles = arrayListOf()
-
- for (i in 0 until count) {
- val byteArray = Random.nextBytes(SIZE_IMAGE)
- imageLocalDataSource
- .encryptAndStoreImage(
- byteArray,
- "projectId",
- Path("test/${UUID.randomUUID()}"),
- )?.let(createdFiles::add)
- }
-
- return createdFiles
- }
-
- companion object {
- private const val FILE_NAME = "test.png"
- private const val SIZE_IMAGE = 100 * 1024 // 100kB
- private const val IMAGES_FOLDER = "images"
- }
-}
diff --git a/infra/license/build.gradle.kts b/infra/license/build.gradle.kts
index cc143e84db..a308f37f73 100644
--- a/infra/license/build.gradle.kts
+++ b/infra/license/build.gradle.kts
@@ -1,6 +1,5 @@
plugins {
id("simprints.infra")
- id("simprints.testing.android")
id("simprints.library.kotlinSerialization")
id("simprints.library.backendApi")
}