summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2024-06-07 18:51:56 +0200
committerAlbin <albin@mullvad.net>2024-06-10 10:36:18 +0200
commitf937ea54f41f947de8ddd606f6071f191fb1cdfb (patch)
treeab5be555271de269a199dcfae85d6050610415b3 /android
parent561c4d8262fde4d70c13fb1de0642bee521fbbe3 (diff)
downloadmullvadvpn-f937ea54f41f947de8ddd606f6071f191fb1cdfb.tar.xz
mullvadvpn-f937ea54f41f947de8ddd606f6071f191fb1cdfb.zip
Unify account number naming
Use variations of "account number" rather than "account token" throughout the kotlin code base.
Diffstat (limited to 'android')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreenTest.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt8
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt24
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt)12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt16
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/NewDeviceUseNotificationCaseTest.kt4
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt8
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt24
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt6
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt26
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt4
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountNumber.kt (renamed from android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt)2
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt6
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt2
-rw-r--r--android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt14
-rw-r--r--android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt10
-rwxr-xr-xandroid/scripts/run-instrumented-tests.sh16
-rw-r--r--android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt14
-rw-r--r--android/test/e2e/README.md16
-rw-r--r--android/test/e2e/build.gradle.kts4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt8
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/MullvadAccountInteractor.kt4
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountTestRule.kt8
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt8
-rw-r--r--android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt10
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt12
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt6
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt4
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt2
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt18
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt6
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt12
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt6
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt4
40 files changed, 177 insertions, 177 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreenTest.kt
index d60a7b100b..41c2c73d6a 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreenTest.kt
@@ -13,7 +13,7 @@ import net.mullvad.mullvadvpn.compose.setContentWithTheme
import net.mullvad.mullvadvpn.compose.state.PaymentState
import net.mullvad.mullvadvpn.compose.state.WelcomeUiState
import net.mullvad.mullvadvpn.compose.test.PLAY_PAYMENT_INFO_ICON_TEST_TAG
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.payment.model.PaymentProduct
import net.mullvad.mullvadvpn.lib.payment.model.PaymentStatus
import net.mullvad.mullvadvpn.lib.payment.model.ProductId
@@ -83,7 +83,7 @@ class WelcomeScreenTest {
fun testShowAccountNumber() =
composeExtension.use {
// Arrange
- val rawAccountNumber = AccountToken("1111222233334444")
+ val rawAccountNumber = AccountNumber("1111222233334444")
val expectedAccountNumber = "1111 2222 3333 4444"
setContentWithTheme {
WelcomeScreen(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt
index e781c12de9..64414b38c0 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt
@@ -54,7 +54,7 @@ import net.mullvad.mullvadvpn.compose.state.DeviceListUiState
import net.mullvad.mullvadvpn.compose.transitions.DefaultTransition
import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle
import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
import net.mullvad.mullvadvpn.lib.model.GetDeviceListError
@@ -105,13 +105,13 @@ private fun PreviewDeviceListError() {
@Composable
fun DeviceList(
navigator: DestinationsNavigator,
- accountToken: String,
+ accountNumber: String,
confirmRemoveResultRecipient:
ResultRecipient<RemoveDeviceConfirmationDialogDestination, DeviceId>
) {
val viewModel =
koinViewModel<DeviceListViewModel>(
- parameters = { parametersOf(AccountToken(accountToken)) }
+ parameters = { parametersOf(AccountNumber(accountNumber)) }
)
val state by viewModel.uiState.collectAsStateWithLifecycle()
@@ -148,7 +148,7 @@ fun DeviceList(
snackbarHostState = snackbarHostState,
onBackClick = navigator::navigateUp,
onContinueWithLogin = {
- navigator.navigate(LoginDestination(accountToken)) {
+ navigator.navigate(LoginDestination(accountNumber)) {
launchSingleTop = true
popUpTo(LoginDestination) { inclusive = true }
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
index f4f617ec93..9e5515649d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
@@ -76,7 +76,7 @@ import net.mullvad.mullvadvpn.compose.test.LOGIN_TITLE_TEST_TAG
import net.mullvad.mullvadvpn.compose.textfield.mullvadWhiteTextFieldColors
import net.mullvad.mullvadvpn.compose.transitions.LoginTransition
import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle
-import net.mullvad.mullvadvpn.compose.util.accountTokenVisualTransformation
+import net.mullvad.mullvadvpn.compose.util.accountNumberVisualTransformation
import net.mullvad.mullvadvpn.lib.theme.AppTheme
import net.mullvad.mullvadvpn.lib.theme.Dimens
import net.mullvad.mullvadvpn.lib.theme.color.AlphaTopBar
@@ -118,16 +118,16 @@ private fun PreviewLoginSuccess() {
@Composable
fun Login(
navigator: DestinationsNavigator,
- accountToken: String? = null,
+ accountNumber: String? = null,
vm: LoginViewModel = koinViewModel()
) {
val state by vm.uiState.collectAsStateWithLifecycle()
// Login with argument, e.g when user comes from Too Many Devices screen
- LaunchedEffect(accountToken) {
- if (accountToken != null) {
- vm.onAccountNumberChange(accountToken)
- vm.login(accountToken)
+ LaunchedEffect(accountNumber) {
+ if (accountNumber != null) {
+ vm.onAccountNumberChange(accountNumber)
+ vm.login(accountNumber)
}
}
@@ -144,7 +144,7 @@ fun Login(
popUpTo(NavGraphs.root) { inclusive = true }
}
is LoginUiSideEffect.TooManyDevices ->
- navigator.navigate(DeviceListDestination(it.accountToken.value)) {
+ navigator.navigate(DeviceListDestination(it.accountNumber.value)) {
launchSingleTop = true
}
LoginUiSideEffect.NavigateToOutOfTime ->
@@ -291,7 +291,7 @@ private fun ColumnScope.LoginInput(
onValueChange = onAccountNumberChange,
singleLine = true,
maxLines = 1,
- visualTransformation = accountTokenVisualTransformation(),
+ visualTransformation = accountNumberVisualTransformation(),
enabled = state.loginState is Idle,
colors = mullvadWhiteTextFieldColors(),
isError = state.loginState.isError(),
@@ -299,13 +299,13 @@ private fun ColumnScope.LoginInput(
AnimatedVisibility(visible = state.lastUsedAccount != null && expandedDropdown) {
val token = state.lastUsedAccount?.value.orEmpty()
- val accountTransformation = remember { accountTokenVisualTransformation() }
+ val accountTransformation = remember { accountNumberVisualTransformation() }
val transformedText =
remember(token) { accountTransformation.filter(AnnotatedString(token)).text }
AccountDropDownItem(
modifier = Modifier.onFocusChanged { ddFocusState = it },
- accountToken = transformedText.toString(),
+ accountNumber = transformedText.toString(),
onClick = {
state.lastUsedAccount?.let {
onAccountNumberChange(it.value)
@@ -379,7 +379,7 @@ private fun LoginState.supportingText(): String? {
@Composable
private fun AccountDropDownItem(
modifier: Modifier = Modifier,
- accountToken: String,
+ accountNumber: String,
onClick: () -> Unit,
onDeleteClick: () -> Unit
) {
@@ -404,7 +404,7 @@ private fun AccountDropDownItem(
.padding(horizontal = Dimens.mediumPadding, vertical = Dimens.smallPadding),
contentAlignment = Alignment.CenterStart
) {
- Text(text = accountToken, overflow = TextOverflow.Clip)
+ Text(text = accountNumber, overflow = TextOverflow.Clip)
}
IconButton(onClick = onDeleteClick) {
Icon(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt
index 29bc0c3306..342f115943 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt
@@ -54,7 +54,7 @@ import net.mullvad.mullvadvpn.compose.transitions.HomeTransition
import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle
import net.mullvad.mullvadvpn.compose.util.createCopyToClipboardHandle
import net.mullvad.mullvadvpn.lib.common.util.groupWithSpaces
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.payment.model.PaymentProduct
import net.mullvad.mullvadvpn.lib.payment.model.ProductId
import net.mullvad.mullvadvpn.lib.payment.model.ProductPrice
@@ -72,7 +72,7 @@ private fun PreviewWelcomeScreen() {
WelcomeScreen(
state =
WelcomeUiState(
- accountNumber = AccountToken("4444555566667777"),
+ accountNumber = AccountNumber("4444555566667777"),
deviceName = "Happy Mole",
billingPaymentState =
PaymentState.PaymentAvailable(
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt
index 0babd243da..6b2f0e7d04 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt
@@ -1,12 +1,12 @@
package net.mullvad.mullvadvpn.compose.state
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
const val MIN_ACCOUNT_LOGIN_LENGTH = 8
data class LoginUiState(
val accountNumberInput: String = "",
- val lastUsedAccount: AccountToken? = null,
+ val lastUsedAccount: AccountNumber? = null,
val loginState: LoginState = LoginState.Idle(null)
) {
val loginButtonEnabled =
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt
index 02e8217172..dd9a57626c 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt
@@ -1,11 +1,11 @@
package net.mullvad.mullvadvpn.compose.state
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.TunnelState
data class WelcomeUiState(
val tunnelState: TunnelState = TunnelState.Disconnected(),
- val accountNumber: AccountToken? = null,
+ val accountNumber: AccountNumber? = null,
val deviceName: String? = null,
val showSitePayment: Boolean = false,
val billingPaymentState: PaymentState? = null,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt
index 3160ff9ac1..56426af6f4 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt
@@ -5,22 +5,22 @@ import androidx.compose.ui.text.input.OffsetMapping
import androidx.compose.ui.text.input.TransformedText
import androidx.compose.ui.text.input.VisualTransformation
-const val ACCOUNT_TOKEN_SEPARATOR = " "
-const val ACCOUNT_TOKEN_CHUNK_SIZE = 4
+const val ACCOUNT_NUMBER_SEPARATOR = " "
+const val ACCOUNT_NUMBER_CHUNK_SIZE = 4
-fun accountTokenVisualTransformation() = VisualTransformation {
+fun accountNumberVisualTransformation() = VisualTransformation {
val transformedString =
- it.chunked(ACCOUNT_TOKEN_CHUNK_SIZE).joinToString(ACCOUNT_TOKEN_SEPARATOR)
+ it.chunked(ACCOUNT_NUMBER_CHUNK_SIZE).joinToString(ACCOUNT_NUMBER_SEPARATOR)
val transformedAnnotatedString = AnnotatedString(transformedString)
TransformedText(
transformedAnnotatedString,
object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int =
- offset + (offset - 1) / ACCOUNT_TOKEN_CHUNK_SIZE
+ offset + (offset - 1) / ACCOUNT_NUMBER_CHUNK_SIZE
override fun transformedToOriginal(offset: Int): Int =
- offset - (offset - 1) / (ACCOUNT_TOKEN_CHUNK_SIZE + 1)
+ offset - (offset - 1) / (ACCOUNT_NUMBER_CHUNK_SIZE + 1)
}
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt
index c4d5eec0a1..2c97f20314 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt
@@ -23,16 +23,16 @@ fun vouchersVisualTransformation() = VisualTransformation { text ->
AnnotatedString(out),
object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int {
- val res = offset + offset / ACCOUNT_TOKEN_CHUNK_SIZE
+ val res = offset + offset / ACCOUNT_NUMBER_CHUNK_SIZE
// Limit max input to 19 characters (16 voucher - 3 dividers)
return min(
res,
- MAX_VOUCHER_LENGTH + MAX_VOUCHER_LENGTH / ACCOUNT_TOKEN_CHUNK_SIZE - 1
+ MAX_VOUCHER_LENGTH + MAX_VOUCHER_LENGTH / ACCOUNT_NUMBER_CHUNK_SIZE - 1
)
}
override fun transformedToOriginal(offset: Int): Int =
- offset - offset / (ACCOUNT_TOKEN_CHUNK_SIZE + 1)
+ offset - offset / (ACCOUNT_NUMBER_CHUNK_SIZE + 1)
}
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt
index d2c8780606..b1c5736988 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt
@@ -17,7 +17,7 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.compose.state.DeviceItemUiState
import net.mullvad.mullvadvpn.compose.state.DeviceListUiState
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
import net.mullvad.mullvadvpn.lib.model.GetDeviceListError
@@ -25,7 +25,7 @@ import net.mullvad.mullvadvpn.lib.shared.DeviceRepository
class DeviceListViewModel(
private val deviceRepository: DeviceRepository,
- private val token: AccountToken,
+ private val token: AccountNumber,
private val dispatcher: CoroutineDispatcher = Dispatchers.Default,
) : ViewModel() {
private val loadingDevices = MutableStateFlow<Set<DeviceId>>(emptySet())
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
index e568021177..fc2f5e86f9 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt
@@ -24,7 +24,7 @@ import net.mullvad.mullvadvpn.compose.state.LoginState.Idle
import net.mullvad.mullvadvpn.compose.state.LoginState.Loading
import net.mullvad.mullvadvpn.compose.state.LoginState.Success
import net.mullvad.mullvadvpn.compose.state.LoginUiState
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.LoginAccountError
import net.mullvad.mullvadvpn.lib.shared.AccountRepository
import net.mullvad.mullvadvpn.usecase.ConnectivityUseCase
@@ -40,7 +40,7 @@ sealed interface LoginUiSideEffect {
data object NavigateToOutOfTime : LoginUiSideEffect
- data class TooManyDevices(val accountToken: AccountToken) : LoginUiSideEffect
+ data class TooManyDevices(val accountNumber: AccountNumber) : LoginUiSideEffect
}
class LoginViewModel(
@@ -55,15 +55,15 @@ class LoginViewModel(
private val _uiSideEffect = Channel<LoginUiSideEffect>()
val uiSideEffect = _uiSideEffect.receiveAsFlow()
- private val _mutableAccountHistory: MutableStateFlow<AccountToken?> = MutableStateFlow(null)
+ private val _mutableAccountHistory: MutableStateFlow<AccountNumber?> = MutableStateFlow(null)
private val _uiState =
combine(
_loginInput,
_mutableAccountHistory,
_loginState,
- ) { loginInput, historyAccountToken, loginState ->
- LoginUiState(loginInput, historyAccountToken, loginState)
+ ) { loginInput, historyAccountNumber, loginState ->
+ LoginUiState(loginInput, historyAccountNumber, loginState)
}
val uiState: StateFlow<LoginUiState> =
@@ -94,7 +94,7 @@ class LoginViewModel(
}
}
- fun login(accountToken: String) {
+ fun login(accountNumber: String) {
if (!isInternetAvailable()) {
_loginState.value = Idle(LoginError.NoInternetConnection)
return
@@ -103,7 +103,7 @@ class LoginViewModel(
viewModelScope.launch(dispatcher) {
// Ensure we always take at least MINIMUM_LOADING_SPINNER_TIME_MILLIS to show the
// loading indicator
- val result = async { accountRepository.login(AccountToken(accountToken)) }
+ val result = async { accountRepository.login(AccountNumber(accountNumber)) }
delay(MINIMUM_LOADING_SPINNER_TIME_MILLIS)
@@ -155,7 +155,7 @@ class LoginViewModel(
when (this) {
LoginAccountError.InvalidAccount -> Idle(LoginError.InvalidCredentials)
is LoginAccountError.MaxDevicesReached ->
- Idle().also { _uiSideEffect.send(LoginUiSideEffect.TooManyDevices(accountToken)) }
+ Idle().also { _uiSideEffect.send(LoginUiSideEffect.TooManyDevices(accountNumber)) }
LoginAccountError.RpcError,
is LoginAccountError.Unknown -> Idle(LoginError.Unknown(this.toString()))
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/NewDeviceUseNotificationCaseTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/NewDeviceUseNotificationCaseTest.kt
index b55da83f51..b139853471 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/NewDeviceUseNotificationCaseTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/usecase/NewDeviceUseNotificationCaseTest.kt
@@ -10,7 +10,7 @@ import kotlin.test.assertTrue
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runTest
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
import net.mullvad.mullvadvpn.lib.model.DeviceState
@@ -29,7 +29,7 @@ class NewDeviceUseNotificationCaseTest {
private val deviceState =
MutableStateFlow<DeviceState?>(
DeviceState.LoggedIn(
- AccountToken("1234123412341234"),
+ AccountNumber("1234123412341234"),
Device(
id = DeviceId.fromString(UUID),
name = deviceName,
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
index 362fc457f5..fd1a363e11 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
@@ -15,7 +15,7 @@ import kotlinx.coroutines.test.runTest
import net.mullvad.mullvadvpn.compose.state.PaymentState
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
import net.mullvad.mullvadvpn.lib.common.test.assertLists
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
import net.mullvad.mullvadvpn.lib.model.DeviceState
@@ -46,8 +46,8 @@ class AccountViewModelTest {
private val dummyDevice =
Device(id = DeviceId.fromString(UUID), name = "fake_name", creationDate = DateTime.now())
- private val dummyAccountToken: AccountToken =
- AccountToken(
+ private val dummyAccountNumber: AccountNumber =
+ AccountNumber(
DUMMY_DEVICE_NAME,
)
@@ -82,7 +82,7 @@ class AccountViewModelTest {
viewModel.uiState.test {
awaitItem() // Default state
deviceState.value =
- DeviceState.LoggedIn(accountToken = dummyAccountToken, device = dummyDevice)
+ DeviceState.LoggedIn(accountNumber = dummyAccountNumber, device = dummyDevice)
val result = awaitItem()
assertEquals(DUMMY_DEVICE_NAME, result.accountNumber)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
index d6eee6d941..1717ae6cc4 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModelTest.kt
@@ -24,7 +24,7 @@ import net.mullvad.mullvadvpn.compose.state.LoginState.Success
import net.mullvad.mullvadvpn.compose.state.LoginUiState
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
import net.mullvad.mullvadvpn.lib.model.AccountData
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.LoginAccountError
import net.mullvad.mullvadvpn.lib.shared.AccountRepository
import net.mullvad.mullvadvpn.usecase.ConnectivityUseCase
@@ -93,7 +93,7 @@ class LoginViewModelTest {
// Arrange
val uiStates = loginViewModel.uiState.testIn(backgroundScope)
val sideEffects = loginViewModel.uiSideEffect.testIn(backgroundScope)
- coEvery { mockedAccountRepository.createAccount() } returns DUMMY_ACCOUNT_TOKEN.right()
+ coEvery { mockedAccountRepository.createAccount() } returns DUMMY_ACCOUNT_NUMBER.right()
// Act, Assert
uiStates.skipDefaultItem()
@@ -115,7 +115,7 @@ class LoginViewModelTest {
// Act, Assert
uiStates.skipDefaultItem()
- loginViewModel.login(DUMMY_ACCOUNT_TOKEN.value)
+ loginViewModel.login(DUMMY_ACCOUNT_NUMBER.value)
assertEquals(Loading.LoggingIn, uiStates.awaitItem().loginState)
assertEquals(Success, uiStates.awaitItem().loginState)
assertEquals(LoginUiSideEffect.NavigateToConnect, sideEffects.awaitItem())
@@ -131,7 +131,7 @@ class LoginViewModelTest {
// Act, Assert
skipDefaultItem()
- loginViewModel.login(DUMMY_ACCOUNT_TOKEN.value)
+ loginViewModel.login(DUMMY_ACCOUNT_NUMBER.value)
assertEquals(Loading.LoggingIn, awaitItem().loginState)
assertEquals(Idle(loginError = LoginError.InvalidCredentials), awaitItem().loginState)
}
@@ -145,14 +145,14 @@ class LoginViewModelTest {
val uiStates = loginViewModel.uiState.testIn(backgroundScope)
val sideEffects = loginViewModel.uiSideEffect.testIn(backgroundScope)
coEvery { mockedAccountRepository.login(any()) } returns
- LoginAccountError.MaxDevicesReached(DUMMY_ACCOUNT_TOKEN).left()
+ LoginAccountError.MaxDevicesReached(DUMMY_ACCOUNT_NUMBER).left()
// Act, Assert
uiStates.skipDefaultItem()
- loginViewModel.login(DUMMY_ACCOUNT_TOKEN.value)
+ loginViewModel.login(DUMMY_ACCOUNT_NUMBER.value)
assertEquals(Loading.LoggingIn, uiStates.awaitItem().loginState)
assertEquals(
- LoginUiSideEffect.TooManyDevices(DUMMY_ACCOUNT_TOKEN),
+ LoginUiSideEffect.TooManyDevices(DUMMY_ACCOUNT_NUMBER),
sideEffects.awaitItem()
)
}
@@ -167,7 +167,7 @@ class LoginViewModelTest {
// Act, Assert
skipDefaultItem()
- loginViewModel.login(DUMMY_ACCOUNT_TOKEN.value)
+ loginViewModel.login(DUMMY_ACCOUNT_NUMBER.value)
assertEquals(Loading.LoggingIn, awaitItem().loginState)
assertEquals(
Idle(LoginError.Unknown(EXPECTED_RPC_ERROR_MESSAGE)),
@@ -185,7 +185,7 @@ class LoginViewModelTest {
// Act, Assert
skipDefaultItem()
- loginViewModel.login(DUMMY_ACCOUNT_TOKEN.value)
+ loginViewModel.login(DUMMY_ACCOUNT_NUMBER.value)
assertEquals(Loading.LoggingIn, awaitItem().loginState)
val loginState = awaitItem().loginState
assertIs<Idle>(loginState)
@@ -197,12 +197,12 @@ class LoginViewModelTest {
fun `on new accountHistory emission uiState should include lastUsedAccount matching accountHistory`() =
runTest {
// Arrange
- coEvery { mockedAccountRepository.fetchAccountHistory() } returns DUMMY_ACCOUNT_TOKEN
+ coEvery { mockedAccountRepository.fetchAccountHistory() } returns DUMMY_ACCOUNT_NUMBER
// Act, Assert
loginViewModel.uiState.test {
assertEquals(
- LoginUiState.INITIAL.copy(lastUsedAccount = DUMMY_ACCOUNT_TOKEN),
+ LoginUiState.INITIAL.copy(lastUsedAccount = DUMMY_ACCOUNT_NUMBER),
awaitItem()
)
}
@@ -220,7 +220,7 @@ class LoginViewModelTest {
}
companion object {
- private val DUMMY_ACCOUNT_TOKEN = AccountToken("DUMMY")
+ private val DUMMY_ACCOUNT_NUMBER = AccountNumber("DUMMY")
private const val EXPECTED_RPC_ERROR_MESSAGE = "RpcError"
}
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
index 3113450276..4aaa000047 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
@@ -16,7 +16,7 @@ import net.mullvad.mullvadvpn.compose.state.PaymentState
import net.mullvad.mullvadvpn.lib.common.test.TestCoroutineRule
import net.mullvad.mullvadvpn.lib.common.test.assertLists
import net.mullvad.mullvadvpn.lib.model.AccountData
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceState
import net.mullvad.mullvadvpn.lib.model.TunnelState
@@ -126,7 +126,7 @@ class WelcomeViewModelTest {
fun `when DeviceRepository returns LoggedIn uiState should include new accountNumber`() =
runTest {
// Arrange
- val expectedAccountNumber = AccountToken("4444555566667777")
+ val expectedAccountNumber = AccountNumber("4444555566667777")
val device: Device = mockk()
every { device.displayName() } returns ""
@@ -136,7 +136,7 @@ class WelcomeViewModelTest {
awaitItem()
paymentAvailabilityFlow.value = null
deviceStateFlow.value =
- DeviceState.LoggedIn(accountToken = expectedAccountNumber, device = device)
+ DeviceState.LoggedIn(accountNumber = expectedAccountNumber, device = device)
assertEquals(expectedAccountNumber, awaitItem().accountNumber)
}
}
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
index 2200fa2ce2..6cc6d25c36 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
@@ -41,7 +41,7 @@ import net.mullvad.mullvadvpn.lib.daemon.grpc.mapper.toDomain
import net.mullvad.mullvadvpn.lib.daemon.grpc.util.LogInterceptor
import net.mullvad.mullvadvpn.lib.daemon.grpc.util.connectivityFlow
import net.mullvad.mullvadvpn.lib.model.AccountData
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.AddSplitTunnelingAppError
import net.mullvad.mullvadvpn.lib.model.AppId
import net.mullvad.mullvadvpn.lib.model.AppVersionInfo as ModelAppVersionInfo
@@ -210,13 +210,13 @@ class ManagementService(
.map { it.toDomain() }
.mapLeft { GetDeviceStateError.Unknown(it) }
- suspend fun getDeviceList(token: AccountToken): Either<GetDeviceListError, List<Device>> =
+ suspend fun getDeviceList(token: AccountNumber): Either<GetDeviceListError, List<Device>> =
Either.catch { grpc.listDevices(StringValue.of(token.value)) }
.map { it.devicesList.map(ManagementInterface.Device::toDomain) }
.mapLeft { GetDeviceListError.Unknown(it) }
suspend fun removeDevice(
- token: AccountToken,
+ token: AccountNumber,
deviceId: DeviceId
): Either<DeleteDeviceError, Unit> =
Either.catch {
@@ -257,13 +257,13 @@ class ManagementService(
grpc.logoutAccount(Empty.getDefaultInstance())
}
- suspend fun loginAccount(accountToken: AccountToken): Either<LoginAccountError, Unit> =
- Either.catch { grpc.loginAccount(StringValue.of(accountToken.value)) }
+ suspend fun loginAccount(accountNumber: AccountNumber): Either<LoginAccountError, Unit> =
+ Either.catch { grpc.loginAccount(StringValue.of(accountNumber.value)) }
.mapLeftStatus {
when (it.status.code) {
Status.Code.UNAUTHENTICATED -> LoginAccountError.InvalidAccount
Status.Code.RESOURCE_EXHAUSTED ->
- LoginAccountError.MaxDevicesReached(accountToken)
+ LoginAccountError.MaxDevicesReached(accountNumber)
Status.Code.UNAVAILABLE -> LoginAccountError.RpcError
else -> LoginAccountError.Unknown(it)
}
@@ -274,11 +274,11 @@ class ManagementService(
grpc.clearAccountHistory(Empty.getDefaultInstance())
}
- suspend fun getAccountHistory(): Either<GetAccountHistoryError, AccountToken?> =
+ suspend fun getAccountHistory(): Either<GetAccountHistoryError, AccountNumber?> =
Either.catch {
val history = grpc.getAccountHistory(Empty.getDefaultInstance())
if (history.hasToken()) {
- AccountToken(history.token.value)
+ AccountNumber(history.token.value)
} else {
null
}
@@ -298,15 +298,15 @@ class ManagementService(
}
suspend fun getAccountData(
- accountToken: AccountToken
+ accountNumber: AccountNumber
): Either<GetAccountDataError, AccountData> =
- Either.catch { grpc.getAccountData(StringValue.of(accountToken.value)).toDomain() }
+ Either.catch { grpc.getAccountData(StringValue.of(accountNumber.value)).toDomain() }
.mapLeft(GetAccountDataError::Unknown)
- suspend fun createAccount(): Either<CreateAccountError, AccountToken> =
+ suspend fun createAccount(): Either<CreateAccountError, AccountNumber> =
Either.catch {
- val accountTokenStringValue = grpc.createNewAccount(Empty.getDefaultInstance())
- AccountToken(accountTokenStringValue.value)
+ val accountNumberStringValue = grpc.createNewAccount(Empty.getDefaultInstance())
+ AccountNumber(accountNumberStringValue.value)
}
.mapLeft(CreateAccountError::Unknown)
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
index 0fe64e09f2..59a94f62dc 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
@@ -11,7 +11,7 @@ import net.mullvad.mullvadvpn.lib.daemon.grpc.GrpcConnectivityState
import net.mullvad.mullvadvpn.lib.daemon.grpc.RelayNameComparator
import net.mullvad.mullvadvpn.lib.model.AccountData
import net.mullvad.mullvadvpn.lib.model.AccountId
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.ActionAfterDisconnect
import net.mullvad.mullvadvpn.lib.model.AppId
import net.mullvad.mullvadvpn.lib.model.AppVersionInfo
@@ -491,7 +491,7 @@ internal fun ManagementInterface.Device.toDomain(): Device =
internal fun ManagementInterface.DeviceState.toDomain(): DeviceState =
when (state) {
ManagementInterface.DeviceState.State.LOGGED_IN ->
- DeviceState.LoggedIn(AccountToken(device.accountToken), device.device.toDomain())
+ DeviceState.LoggedIn(AccountNumber(device.accountToken), device.device.toDomain())
ManagementInterface.DeviceState.State.LOGGED_OUT -> DeviceState.LoggedOut
ManagementInterface.DeviceState.State.REVOKED -> DeviceState.Revoked
ManagementInterface.DeviceState.State.UNRECOGNIZED ->
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountNumber.kt
index d03a0d6721..995e3550f7 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountToken.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/AccountNumber.kt
@@ -3,4 +3,4 @@ package net.mullvad.mullvadvpn.lib.model
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
-@JvmInline @Parcelize value class AccountToken(val value: String) : Parcelable
+@JvmInline @Parcelize value class AccountNumber(val value: String) : Parcelable
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt
index 4546cd46b3..ccec166a47 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/DeviceState.kt
@@ -5,7 +5,7 @@ import kotlinx.parcelize.Parcelize
sealed class DeviceState : Parcelable {
@Parcelize
- data class LoggedIn(val accountToken: AccountToken, val device: Device) : DeviceState()
+ data class LoggedIn(val accountNumber: AccountNumber, val device: Device) : DeviceState()
@Parcelize data object LoggedOut : DeviceState()
@@ -15,7 +15,7 @@ sealed class DeviceState : Parcelable {
return (this as? LoggedIn)?.device?.displayName()
}
- fun token(): AccountToken? {
- return (this as? LoggedIn)?.accountToken
+ fun token(): AccountNumber? {
+ return (this as? LoggedIn)?.accountNumber
}
}
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt
index 1c58f80bee..99c36bc9d2 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/LoginAccountError.kt
@@ -7,7 +7,7 @@ import kotlinx.parcelize.Parcelize
sealed class LoginAccountError : Parcelable {
data object InvalidAccount : LoginAccountError()
- data class MaxDevicesReached(val accountToken: AccountToken) : LoginAccountError()
+ data class MaxDevicesReached(val accountNumber: AccountNumber) : LoginAccountError()
data object RpcError : LoginAccountError()
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt
index 432d113fba..a71dbe8efb 100644
--- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt
+++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt
@@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService
import net.mullvad.mullvadvpn.lib.model.AccountData
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.CreateAccountError
import net.mullvad.mullvadvpn.lib.model.DeviceState
import net.mullvad.mullvadvpn.lib.model.LoginAccountError
@@ -37,7 +37,7 @@ class AccountRepository(
managementService.deviceState.filterNotNull().map { deviceState ->
when (deviceState) {
is DeviceState.LoggedIn -> {
- managementService.getAccountData(deviceState.accountToken).getOrNull()
+ managementService.getAccountData(deviceState.accountNumber).getOrNull()
}
DeviceState.LoggedOut,
DeviceState.Revoked -> null
@@ -48,18 +48,18 @@ class AccountRepository(
.distinctUntilChanged()
.stateIn(scope = scope, SharingStarted.Eagerly, null)
- suspend fun createAccount(): Either<CreateAccountError, AccountToken> =
+ suspend fun createAccount(): Either<CreateAccountError, AccountNumber> =
managementService.createAccount().onRight { _isNewAccount.update { true } }
- suspend fun login(accountToken: AccountToken): Either<LoginAccountError, Unit> =
- managementService.loginAccount(accountToken)
+ suspend fun login(accountNumber: AccountNumber): Either<LoginAccountError, Unit> =
+ managementService.loginAccount(accountNumber)
suspend fun logout() {
managementService.logoutAccount()
_isNewAccount.update { false }
}
- suspend fun fetchAccountHistory(): AccountToken? =
+ suspend fun fetchAccountHistory(): AccountNumber? =
managementService.getAccountHistory().getOrNull()
suspend fun clearAccountHistory() = managementService.clearAccountHistory()
@@ -68,7 +68,7 @@ class AccountRepository(
val deviceState = ensureNotNull(deviceRepository.deviceState.value as? DeviceState.LoggedIn)
val accountData =
- managementService.getAccountData(deviceState.accountToken).getOrNull().bind()
+ managementService.getAccountData(deviceState.accountNumber).getOrNull().bind()
// Update stateflow cache
_mutableAccountDataCache.emit(accountData)
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt
index b1b8f4fa41..f518dc02d1 100644
--- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt
+++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt
@@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.stateIn
import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService
-import net.mullvad.mullvadvpn.lib.model.AccountToken
+import net.mullvad.mullvadvpn.lib.model.AccountNumber
import net.mullvad.mullvadvpn.lib.model.DeleteDeviceError
import net.mullvad.mullvadvpn.lib.model.Device
import net.mullvad.mullvadvpn.lib.model.DeviceId
@@ -27,10 +27,10 @@ class DeviceRepository(
)
suspend fun removeDevice(
- accountToken: AccountToken,
+ accountNumber: AccountNumber,
deviceId: DeviceId
- ): Either<DeleteDeviceError, Unit> = managementService.removeDevice(accountToken, deviceId)
+ ): Either<DeleteDeviceError, Unit> = managementService.removeDevice(accountNumber, deviceId)
- suspend fun deviceList(accountToken: AccountToken): Either<GetDeviceListError, List<Device>> =
- managementService.getDeviceList(accountToken)
+ suspend fun deviceList(accountNumber: AccountNumber): Either<GetDeviceListError, List<Device>> =
+ managementService.getDeviceList(accountNumber)
}
diff --git a/android/scripts/run-instrumented-tests.sh b/android/scripts/run-instrumented-tests.sh
index e0c2a6239a..77e29e48fe 100755
--- a/android/scripts/run-instrumented-tests.sh
+++ b/android/scripts/run-instrumented-tests.sh
@@ -14,8 +14,8 @@ ORCHESTRATOR_URL=https://dl.google.com/android/maven2/androidx/test/orchestrator
TEST_SERVICES_URL=https://dl.google.com/android/maven2/androidx/test/services/test-services/1.4.2/test-services-1.4.2.apk
PARTNER_AUTH="${PARTNER_AUTH:-}"
-VALID_TEST_ACCOUNT_TOKEN="${VALID_TEST_ACCOUNT_TOKEN:-}"
-INVALID_TEST_ACCOUNT_TOKEN="${INVALID_TEST_ACCOUNT_TOKEN:-}"
+VALID_TEST_ACCOUNT_NUMBER="${VALID_TEST_ACCOUNT_NUMBER:-}"
+INVALID_TEST_ACCOUNT_NUMBER="${INVALID_TEST_ACCOUNT_NUMBER:-}"
REPORT_DIR="${REPORT_DIR:-}"
while [[ "$#" -gt 0 ]]; do
@@ -113,21 +113,21 @@ case "$TEST_TYPE" in
exit 1
fi
OPTIONAL_TEST_ARGUMENTS=""
- if [[ -n ${INVALID_TEST_ACCOUNT_TOKEN-} ]]; then
- OPTIONAL_TEST_ARGUMENTS+=" -e invalid_test_account_token $INVALID_TEST_ACCOUNT_TOKEN"
+ if [[ -n ${INVALID_TEST_ACCOUNT_NUMBER-} ]]; then
+ OPTIONAL_TEST_ARGUMENTS+=" -e invalid_test_account_number $INVALID_TEST_ACCOUNT_NUMBER"
else
- echo "Error: The variable INVALID_TEST_ACCOUNT_TOKEN must be set."
+ echo "Error: The variable INVALID_TEST_ACCOUNT_NUMBER must be set."
exit 1
fi
if [[ -n ${PARTNER_AUTH} ]]; then
echo "Test account used for e2e test (provided/partner): partner"
OPTIONAL_TEST_ARGUMENTS+=" -e partner_auth $PARTNER_AUTH"
- elif [[ -n ${VALID_TEST_ACCOUNT_TOKEN} ]]; then
+ elif [[ -n ${VALID_TEST_ACCOUNT_NUMBER} ]]; then
echo "Test account used for e2e test (provided/partner): provided"
- OPTIONAL_TEST_ARGUMENTS+=" -e valid_test_account_token $VALID_TEST_ACCOUNT_TOKEN"
+ OPTIONAL_TEST_ARGUMENTS+=" -e valid_test_account_number $VALID_TEST_ACCOUNT_NUMBER"
else
echo ""
- echo "Error: The variable PARTNER_AUTH or VALID_TEST_ACCOUNT_TOKEN must be set."
+ echo "Error: The variable PARTNER_AUTH or VALID_TEST_ACCOUNT_NUMBER must be set."
exit 1
fi
USE_ORCHESTRATOR="true"
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
index 0727d41dd3..07ea1aeca1 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/interactor/AppInteractor.kt
@@ -43,12 +43,12 @@ class AppInteractor(
device.wait(Until.hasObject(By.pkg(targetPackageName).depth(0)), APP_LAUNCH_TIMEOUT)
}
- fun launchAndEnsureLoggedIn(accountToken: String) {
+ fun launchAndEnsureLoggedIn(accountNumber: String) {
launch()
device.clickAgreeOnPrivacyDisclaimer()
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
waitForLoginPrompt()
- attemptLogin(accountToken)
+ attemptLogin(accountNumber)
ensureLoggedIn()
}
@@ -61,10 +61,10 @@ class AppInteractor(
ensureAccountCreated()
}
- fun attemptLogin(accountToken: String) {
+ fun attemptLogin(accountNumber: String) {
val loginObject =
device.findObjectWithTimeout(By.clazz("android.widget.EditText")).apply {
- text = accountToken
+ text = accountNumber
}
loginObject.parent.findObject(By.clazz(Button::class.java)).click()
}
@@ -73,10 +73,10 @@ class AppInteractor(
device.findObjectWithTimeout(By.text("Create account")).click()
}
- fun ensureAccountCreated(accountToken: String? = null) {
+ fun ensureAccountCreated(accountNumber: String? = null) {
device.findObjectWithTimeout(By.text("Congrats!"), LOGIN_TIMEOUT)
- accountToken?.let {
- device.findObjectWithTimeout(By.text(accountToken), DEFAULT_INTERACTION_TIMEOUT)
+ accountNumber?.let {
+ device.findObjectWithTimeout(By.text(accountNumber), DEFAULT_INTERACTION_TIMEOUT)
}
}
diff --git a/android/test/e2e/README.md b/android/test/e2e/README.md
index 7c1271ad97..be41a83341 100644
--- a/android/test/e2e/README.md
+++ b/android/test/e2e/README.md
@@ -7,14 +7,14 @@ The tests in this module are end-to-end tests that rely on the publicly accessib
Set tokens in the below command and then execute the command in the `android` directory to run the tests on a local device:
```
./gradlew :test:e2e:connectedDebugAndroidTest \
- -Pvalid_test_account_token=XXXX \
- -Pinvalid_test_account_token=XXXX
+ -Pvalid_test_account_number=XXXX \
+ -Pinvalid_test_account_number=XXXX
```
For convenience, the tokens can also be set in `<REPO-ROOT>/android/local.properties` in the following way:
```
-valid_test_account_token=XXXX
-invalid_test_account_token=XXXX
+valid_test_account_number=XXXX
+invalid_test_account_number=XXXX
```
It's also possible to provide the tokens to the test runner during test execution. However note that this requires [the APKs to be installed manually](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#architecture).
@@ -22,8 +22,8 @@ It's also possible to provide the tokens to the test runner during test executio
adb shell 'CLASSPATH=$(pm path androidx.test.services) app_process / \
androidx.test.services.shellexecutor.ShellMain am instrument -w \
-e clearPackageData true \
- -e valid_test_account_token XXXX \
- -e invalid_test_account_token XXXX \
+ -e valid_test_account_number XXXX \
+ -e invalid_test_account_number XXXX \
-e targetInstrumentation net.mullvad.mullvadvpn.test.e2e/androidx.test.runner.AndroidJUnitRunner \
androidx.test.orchestrator/.AndroidTestOrchestrator'
```
@@ -41,7 +41,7 @@ gcloud firebase test android run \
--test ./android/test/e2e/build/outputs/apk/debug/e2e-debug.apk \
--device model=redfin,version=30,locale=en,orientation=portrait \
--use-orchestrator \
- --environment-variables clearPackageData=true,valid_test_account_token=XXXX,invalid_test_account_token=XXXX
+ --environment-variables clearPackageData=true,valid_test_account_number=XXXX,invalid_test_account_number=XXXX
```
If using gcloud via the docker image, the following can be executed in the `android` directory to run the tests (on a Pixel 5e):
@@ -52,5 +52,5 @@ docker run --rm --volumes-from gcloud-config -v ${PWD}:/android gcr.io/google.co
--test ./android/test/e2e/build/outputs/apk/debug/e2e-debug.apk \
--device model=redfin,version=30,locale=en,orientation=portrait \
--use-orchestrator \
- --environment-variables clearPackageData=true,valid_test_account_token=XXXX,invalid_test_account_token=XXXX
+ --environment-variables clearPackageData=true,valid_test_account_number=XXXX,invalid_test_account_number=XXXX
```
diff --git a/android/test/e2e/build.gradle.kts b/android/test/e2e/build.gradle.kts
index 161e73b510..ce80697240 100644
--- a/android/test/e2e/build.gradle.kts
+++ b/android/test/e2e/build.gradle.kts
@@ -43,8 +43,8 @@ android {
testInstrumentationRunnerArguments +=
mutableMapOf<String, String>().apply {
put("clearPackageData", "true")
- addOptionalPropertyAsArgument("valid_test_account_token")
- addOptionalPropertyAsArgument("invalid_test_account_token")
+ addOptionalPropertyAsArgument("valid_test_account_number")
+ addOptionalPropertyAsArgument("invalid_test_account_number")
}
}
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt
index 9380589709..2efb299246 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/LoginTest.kt
@@ -17,10 +17,10 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@Test
fun testLoginWithValidCredentials() {
// Given
- val validTestAccountToken = accountTestRule.validAccountNumber
+ val validTestAccountNumber = accountTestRule.validAccountNumber
// When
- app.launchAndEnsureLoggedIn(validTestAccountToken)
+ app.launchAndEnsureLoggedIn(validTestAccountNumber)
// Then
app.ensureLoggedIn()
@@ -30,14 +30,14 @@ class LoginTest : EndToEndTest(BuildConfig.FLAVOR_infrastructure) {
@Disabled("Disabled to avoid getting rate-limited.")
fun testLoginWithInvalidCredentials() {
// Given
- val invalidDummyAccountToken = accountTestRule.invalidAccountNumber
+ val invalidDummyAccountNumber = accountTestRule.invalidAccountNumber
// When
app.launch()
device.clickAgreeOnPrivacyDisclaimer()
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
app.waitForLoginPrompt()
- app.attemptLogin(invalidDummyAccountToken)
+ app.attemptLogin(invalidDummyAccountNumber)
// Then
device.findObjectWithTimeout(By.text("Invalid account number"), LOGIN_FAILURE_TIMEOUT)
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt
index dec8f1e07f..baf3dcae3d 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/constant/Constants.kt
@@ -2,5 +2,5 @@ package net.mullvad.mullvadvpn.test.e2e.constant
const val LOG_TAG = "mullvad-e2e"
const val PARTNER_AUTH = "partner_auth"
-const val VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY = "valid_test_account_token"
-const val INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY = "invalid_test_account_token"
+const val VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "valid_test_account_number"
+const val INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY = "invalid_test_account_number"
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/MullvadAccountInteractor.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/MullvadAccountInteractor.kt
index 8f3f55166f..59c9b49b91 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/MullvadAccountInteractor.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/interactor/MullvadAccountInteractor.kt
@@ -4,9 +4,9 @@ import net.mullvad.mullvadvpn.test.e2e.misc.SimpleMullvadHttpClient
class MullvadAccountInteractor(
private val httpClient: SimpleMullvadHttpClient,
- private val testAccountToken: String
+ private val testAccountNumber: String
) {
fun cleanupAccount() {
- httpClient.removeAllDevices(testAccountToken)
+ httpClient.removeAllDevices(testAccountNumber)
}
}
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountTestRule.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountTestRule.kt
index bbd59eba9b..333f4cde88 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountTestRule.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/AccountTestRule.kt
@@ -1,9 +1,9 @@
package net.mullvad.mullvadvpn.test.e2e.misc
import androidx.test.platform.app.InstrumentationRegistry
-import net.mullvad.mullvadvpn.test.e2e.constant.INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
+import net.mullvad.mullvadvpn.test.e2e.constant.INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.constant.PARTNER_AUTH
-import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
+import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
import org.junit.jupiter.api.extension.BeforeEachCallback
import org.junit.jupiter.api.extension.ExtensionContext
@@ -30,12 +30,12 @@ class AccountTestRule : BeforeEachCallback {
)
} else {
validAccountNumber =
- bundle.getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY)
+ bundle.getRequiredArgument(VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY)
client.removeAllDevices(validAccountNumber)
}
invalidAccountNumber =
- bundle.getRequiredArgument(INVALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY)
+ bundle.getRequiredArgument(INVALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY)
}
}
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
index ba42862397..f79f78e03b 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/CleanupAccountTestRule.kt
@@ -3,7 +3,7 @@ package net.mullvad.mullvadvpn.test.e2e.misc
import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
import net.mullvad.mullvadvpn.test.e2e.constant.LOG_TAG
-import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY
+import net.mullvad.mullvadvpn.test.e2e.constant.VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY
import net.mullvad.mullvadvpn.test.e2e.extension.getRequiredArgument
import net.mullvad.mullvadvpn.test.e2e.interactor.MullvadAccountInteractor
import org.junit.jupiter.api.extension.BeforeEachCallback
@@ -14,10 +14,10 @@ class CleanupAccountTestRule : BeforeEachCallback {
override fun beforeEach(context: ExtensionContext) {
Log.d(LOG_TAG, "Cleaning up account before test: ${context.requiredTestMethod.name}")
val targetContext = InstrumentationRegistry.getInstrumentation().targetContext
- val validTestAccountToken =
+ val validTestAccountNumber =
InstrumentationRegistry.getArguments()
- .getRequiredArgument(VALID_TEST_ACCOUNT_TOKEN_ARGUMENT_KEY)
- MullvadAccountInteractor(SimpleMullvadHttpClient(targetContext), validTestAccountToken)
+ .getRequiredArgument(VALID_TEST_ACCOUNT_NUMBER_ARGUMENT_KEY)
+ MullvadAccountInteractor(SimpleMullvadHttpClient(targetContext), validTestAccountNumber)
.cleanupAccount()
}
}
diff --git a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
index dff31b6049..78f5e967e0 100644
--- a/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
+++ b/android/test/e2e/src/main/kotlin/net/mullvad/mullvadvpn/test/e2e/misc/SimpleMullvadHttpClient.kt
@@ -22,17 +22,17 @@ class SimpleMullvadHttpClient(context: Context) {
private val queue = Volley.newRequestQueue(context)
- fun removeAllDevices(accountToken: String) {
+ fun removeAllDevices(accountNumber: String) {
Log.v(LOG_TAG, "Remove all devices")
- val token = login(accountToken)
+ val token = login(accountNumber)
val devices = getDeviceList(token)
devices.forEach { removeDevice(token, it) }
Log.v(LOG_TAG, "All devices removed")
}
- fun login(accountToken: String): String {
- Log.v(LOG_TAG, "Attempt login with account token: $accountToken")
- val json = JSONObject().apply { put("account_number", accountToken) }
+ fun login(accountNumber: String): String {
+ Log.v(LOG_TAG, "Attempt login with account token: $accountNumber")
+ val json = JSONObject().apply { put("account_number", accountNumber) }
return sendSimpleSynchronousRequest(Request.Method.POST, AUTH_URL, json)!!.let { response ->
response.getString("access_token").also { accessToken ->
Log.v(LOG_TAG, "Successfully logged in and received access token: $accessToken")
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
index b2699a2c73..c8b6bcd169 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountExpiryMockApiTest.kt
@@ -17,10 +17,10 @@ class AccountExpiryMockApiTest : MockApiTest() {
@Test
fun testAccountExpiryDateUpdated() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1)
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = oldAccountExpiry
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -32,7 +32,7 @@ class AccountExpiryMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert logged in
app.ensureLoggedIn()
@@ -51,10 +51,10 @@ class AccountExpiryMockApiTest : MockApiTest() {
@Test
fun testAccountTimeExpiredWhileUsingTheAppShouldShowOutOfTimeScreen() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
val oldAccountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1)
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = oldAccountExpiry
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -66,7 +66,7 @@ class AccountExpiryMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert logged in
app.ensureLoggedIn()
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
index 56416341ef..ff0faed69a 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/AccountHistoryMockApiTest.kt
@@ -18,9 +18,9 @@ class AccountHistoryMockApiTest : MockApiTest() {
@Test
fun testShowAccountHistory() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1)
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -32,7 +32,7 @@ class AccountHistoryMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
app.ensureLoggedIn()
app.clickAccountCog()
app.clickActionButtonByText("Log out")
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
index 538a111096..ce7e84e02e 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/CreateAccountMockApiTest.kt
@@ -11,9 +11,9 @@ class CreateAccountMockApiTest : MockApiTest() {
@Test
fun testCreateAccountSuccessful() {
// Arrange
- val createdAccountToken = "1234123412341234"
+ val createdAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = createdAccountToken
+ expectedAccountNumber = createdAccountNumber
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
}
app.launch(endpoint)
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
index 4626468026..7eb096b499 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/Extensions.kt
@@ -11,7 +11,7 @@ fun MockResponse.addJsonHeader(): MockResponse {
return addHeader("Content-Type", "application/json")
}
-fun Buffer.getAccountToken(): String? {
+fun Buffer.getAccountNumber(): String? {
return try {
JSONObject(readUtf8()).getString("account_number")
} catch (ex: JSONException) {
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
index 6b03a65020..1e55932a30 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LoginMockApiTest.kt
@@ -18,9 +18,9 @@ class LoginMockApiTest : MockApiTest() {
@Test
fun testLoginWithInvalidCredentials() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = null
+ expectedAccountNumber = null
accountExpiry = currentUtcTimeWithOffsetZero().plusDays(1)
}
app.launch(endpoint)
@@ -30,7 +30,7 @@ class LoginMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert
val result =
@@ -44,9 +44,9 @@ class LoginMockApiTest : MockApiTest() {
@Test
fun testLoginWithValidCredentialsToUnexpiredAccount() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = currentUtcTimeWithOffsetZero().plusDays(1)
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -58,7 +58,7 @@ class LoginMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert
app.ensureLoggedIn()
@@ -67,9 +67,9 @@ class LoginMockApiTest : MockApiTest() {
@Test
fun testLoginWithValidCredentialsToExpiredAccount() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = currentUtcTimeWithOffsetZero().minusDays(1)
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -81,7 +81,7 @@ class LoginMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert
app.ensureOutOfTime()
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
index 667515636a..e64bb1b3ad 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/LogoutMockApiTest.kt
@@ -17,9 +17,9 @@ class LogoutMockApiTest : MockApiTest() {
@Test
fun testLoginWithValidCredentialsToUnexpiredAccountAndLogout() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1)
devices = DEFAULT_DEVICE_LIST.toMutableMap()
devicePendingToGetCreated = DUMMY_ID_2 to DUMMY_DEVICE_NAME_2
@@ -31,7 +31,7 @@ class LogoutMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
app.ensureLoggedIn()
app.clickAccountCog()
app.clickActionButtonByText("Log out")
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
index 39818d195c..abb4813a33 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
@@ -23,7 +23,7 @@ import org.json.JSONArray
class MockApiDispatcher : Dispatcher() {
- var expectedAccountToken: String? = null
+ var expectedAccountNumber: String? = null
var accountExpiry: DateTime? = null
var devices: MutableMap<String, String>? = null
private val canAddDevices: Boolean
@@ -75,9 +75,9 @@ class MockApiDispatcher : Dispatcher() {
}
private fun handleLoginRequest(requestBody: Buffer): MockResponse {
- val accountToken = requestBody.getAccountToken()
+ val accountNumber = requestBody.getAccountNumber()
- return if (accountToken != null && accountToken == expectedAccountToken) {
+ return if (accountNumber != null && accountNumber == expectedAccountNumber) {
MockResponse()
.setResponseCode(200)
.addJsonHeader()
@@ -91,7 +91,7 @@ class MockApiDispatcher : Dispatcher() {
} else {
Log.e(
LOG_TAG,
- "Unexpected account token (expected=$expectedAccountToken was=$accountToken)"
+ "Unexpected account number (expected=$expectedAccountNumber was=$accountNumber)"
)
MockResponse().setResponseCode(400)
}
@@ -168,7 +168,7 @@ class MockApiDispatcher : Dispatcher() {
}
private fun handleAccountCreationRequest(): MockResponse {
- return expectedAccountToken?.let { expectedAccountToken ->
+ return expectedAccountNumber?.let { expectedAccountNumber ->
MockResponse()
.setResponseCode(201)
.addJsonHeader()
@@ -176,7 +176,7 @@ class MockApiDispatcher : Dispatcher() {
accountCreationJson(
id = DUMMY_ID_1,
expiry = DateTime(),
- accountToken = expectedAccountToken
+ accountNumber = expectedAccountNumber
)
.toString()
)
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
index 83354dd347..c652bd403a 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/TooManyDevicesMockApiTest.kt
@@ -24,9 +24,9 @@ class TooManyDevicesMockApiTest : MockApiTest() {
@Test
fun testRemoveDeviceSuccessfulAndLogin() {
// Arrange
- val validAccountToken = "1234123412341234"
+ val validAccountNumber = "1234123412341234"
apiDispatcher.apply {
- expectedAccountToken = validAccountToken
+ expectedAccountNumber = validAccountNumber
accountExpiry = currentUtcTimeWithOffsetZero().plusMonths(1)
devices =
mutableMapOf(
@@ -45,7 +45,7 @@ class TooManyDevicesMockApiTest : MockApiTest() {
device.clickAllowOnNotificationPermissionPromptIfApiLevel33AndAbove()
device.dismissChangelogDialogIfShown()
app.waitForLoginPrompt()
- app.attemptLogin(validAccountToken)
+ app.attemptLogin(validAccountNumber)
// Assert that we have too many devices
device.findObjectWithTimeout(By.text("Too many devices"))
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt
index a258d5daf8..2de385c7f8 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/util/JsonUtils.kt
@@ -11,8 +11,8 @@ fun accountInfoJson(id: String, expiry: DateTime) =
put("can_add_devices", true)
}
-fun accountCreationJson(id: String, accountToken: String, expiry: DateTime) =
- accountInfoJson(id, expiry).apply { put("number", accountToken) }
+fun accountCreationJson(id: String, accountNumber: String, expiry: DateTime) =
+ accountInfoJson(id, expiry).apply { put("number", accountNumber) }
fun deviceJson(id: String, name: String, publicKey: String, creationDate: DateTime) =
JSONObject().apply {