diff --git a/tests/shared/Android.bp b/tests/shared/Android.bp
index fca24b6..27573e8 100644
--- a/tests/shared/Android.bp
+++ b/tests/shared/Android.bp
@@ -4,6 +4,7 @@
         "src/**/*.kt"
     ],
     libs: [
+        "BiometricsSharedLib",
         "FingerprintManagerInteractor",
     ],
 }
diff --git a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
index 05c3e3c..ad943f2 100644
--- a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
+++ b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
@@ -17,13 +17,13 @@
 package com.android.settings.testutils2
 
 import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
+import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
+import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.flow
 import kotlinx.coroutines.flow.flowOf
@@ -39,7 +39,12 @@
   var pressToAuthEnabled = true
 
   var sensorProp =
-    FingerprintSensorPropertyViewModel(0 /* sensorId */, SensorStrength.Strong, 5, SensorType.SFPS)
+    FingerprintSensor(
+      0 /* sensorId */,
+      SensorStrength.STRONG,
+      5,
+      FingerprintSensorType.POWER_BUTTON
+    )
 
   override suspend fun authenticate(): FingerprintAuthAttemptViewModel {
     return authenticateAttempt
@@ -57,7 +62,7 @@
     emit(enrolledFingerprintsInternal.size < enrollableFingerprints)
   }
 
-  override val sensorPropertiesInternal: Flow<FingerprintSensorPropertyViewModel?> = flow {
+  override val sensorPropertiesInternal: Flow<FingerprintSensor?> = flow {
     emit(sensorProp)
   }
 
@@ -79,7 +84,7 @@
   }
 
   override suspend fun hasSideFps(): Boolean {
-    return sensorProp.sensorType == SensorType.SFPS
+    return sensorProp.sensorType == FingerprintSensorType.POWER_BUTTON
   }
 
   override suspend fun pressToAuthEnabled(): Boolean {
diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
index fb1d05a..d25ced0 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
@@ -18,14 +18,14 @@
 
 import androidx.arch.core.executor.testing.InstantTaskExecutorRule
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
 import com.android.settings.testutils2.FakeFingerprintManagerInteractor
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.collectLatest
@@ -96,11 +96,11 @@
   fun authenticate_DoesNotRun_ifOptical() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.Optical,
+          FingerprintSensorType.UDFPS_OPTICAL,
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -132,11 +132,11 @@
   fun authenticate_DoesNotRun_ifUltrasonic() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.Ultrasonic,
+          FingerprintSensorType.UDFPS_ULTRASONIC,
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -166,11 +166,11 @@
   fun authenticate_DoesRun_ifNotUdfps() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.SFPS
+          FingerprintSensorType.POWER_BUTTON
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -372,11 +372,11 @@
 
   private fun setupAuth(): MutableList<FingerprintViewModel> {
     fakeFingerprintManagerInteractor.sensorProp =
-      FingerprintSensorPropertyViewModel(
+      FingerprintSensor(
         0 /* sensorId */,
-        SensorStrength.Strong,
+        SensorStrength.STRONG,
         5 /* maxEnrollmentsPerUser */,
-        SensorType.SFPS
+        FingerprintSensorType.POWER_BUTTON
       )
     val fingerprints =
       mutableListOf(FingerprintViewModel("a", 1, 3L), FingerprintViewModel("b", 2, 5L))
