Skip to content

Commit 07fe6e5

Browse files
PM-17845 PM-17718 - Enable Remote Configuration for the import flow & Rename Authenticator Sync Feature Flag Name (#4666)
1 parent f004e10 commit 07fe6e5

File tree

2 files changed

+126
-64
lines changed
  • app/src
    • main/java/com/x8bit/bitwarden/data/platform/manager/model
    • test/java/com/x8bit/bitwarden/data/platform/manager

2 files changed

+126
-64
lines changed

app/src/main/java/com/x8bit/bitwarden/data/platform/manager/model/FlagKey.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ sealed class FlagKey<out T : Any> {
5050
* Data object holding the key for syncing with the Bitwarden Authenticator app.
5151
*/
5252
data object AuthenticatorSync : FlagKey<Boolean>() {
53-
override val keyName: String = "enable-authenticator-sync-android"
53+
override val keyName: String = "enable-pm-bwa-sync"
5454
override val defaultValue: Boolean = false
5555
override val isRemotelyConfigured: Boolean = true
5656
}
@@ -88,7 +88,7 @@ sealed class FlagKey<out T : Any> {
8888
data object ImportLoginsFlow : FlagKey<Boolean>() {
8989
override val keyName: String = "import-logins-flow"
9090
override val defaultValue: Boolean = false
91-
override val isRemotelyConfigured: Boolean = false
91+
override val isRemotelyConfigured: Boolean = true
9292
}
9393

9494
/**
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,141 @@
11
package com.x8bit.bitwarden.data.platform.manager
22

33
import com.x8bit.bitwarden.data.platform.manager.model.FlagKey
4-
import org.junit.jupiter.api.Assertions.assertFalse
4+
import org.junit.jupiter.api.Assertions.assertEquals
55
import org.junit.jupiter.api.Assertions.assertTrue
66
import org.junit.jupiter.api.Test
77

88
class FlagKeyTest {
99

1010
@Test
11-
fun `AuthenticatorSync default value should be false`() {
12-
assertFalse(FlagKey.AuthenticatorSync.defaultValue)
11+
fun `Feature flags have the correct key name set`() {
12+
assertEquals(
13+
FlagKey.AuthenticatorSync.keyName,
14+
"enable-pm-bwa-sync",
15+
)
16+
assertEquals(
17+
FlagKey.EmailVerification.keyName,
18+
"email-verification",
19+
)
20+
assertEquals(
21+
FlagKey.OnboardingCarousel.keyName,
22+
"native-carousel-flow",
23+
)
24+
assertEquals(
25+
FlagKey.OnboardingFlow.keyName,
26+
"native-create-account-flow",
27+
)
28+
assertEquals(
29+
FlagKey.ImportLoginsFlow.keyName,
30+
"import-logins-flow",
31+
)
32+
assertEquals(
33+
FlagKey.SshKeyCipherItems.keyName,
34+
"ssh-key-vault-item",
35+
)
36+
assertEquals(
37+
FlagKey.VerifiedSsoDomainEndpoint.keyName,
38+
"pm-12337-refactor-sso-details-endpoint",
39+
)
40+
assertEquals(
41+
FlagKey.CredentialExchangeProtocolImport.keyName,
42+
"cxp-import-mobile",
43+
)
44+
assertEquals(
45+
FlagKey.CredentialExchangeProtocolExport.keyName,
46+
"cxp-export-mobile",
47+
)
48+
assertEquals(
49+
FlagKey.AppReviewPrompt.keyName,
50+
"app-review-prompt",
51+
)
52+
assertEquals(
53+
FlagKey.CipherKeyEncryption.keyName,
54+
"cipher-key-encryption",
55+
)
56+
assertEquals(
57+
FlagKey.NewDeviceTemporaryDismiss.keyName,
58+
"new-device-temporary-dismiss",
59+
)
60+
assertEquals(
61+
FlagKey.NewDevicePermanentDismiss.keyName,
62+
"new-device-permanent-dismiss",
63+
)
64+
assertEquals(
65+
FlagKey.SingleTapPasskeyCreation.keyName,
66+
"single-tap-passkey-creation",
67+
)
68+
assertEquals(
69+
FlagKey.SingleTapPasskeyAuthentication.keyName,
70+
"single-tap-passkey-authentication",
71+
)
72+
assertEquals(
73+
FlagKey.IgnoreEnvironmentCheck.keyName,
74+
"ignore-environment-check",
75+
)
76+
assertEquals(
77+
FlagKey.MutualTls.keyName,
78+
"mutual-tls",
79+
)
1380
}
1481

1582
@Test
16-
fun `AuthenticatorSync is remotely configured value should be true`() {
17-
assertTrue(FlagKey.AuthenticatorSync.isRemotelyConfigured)
83+
fun `All feature flags have the correct default value set`() {
84+
assertTrue(
85+
listOf(
86+
FlagKey.AuthenticatorSync,
87+
FlagKey.EmailVerification,
88+
FlagKey.OnboardingCarousel,
89+
FlagKey.OnboardingFlow,
90+
FlagKey.ImportLoginsFlow,
91+
FlagKey.SshKeyCipherItems,
92+
FlagKey.VerifiedSsoDomainEndpoint,
93+
FlagKey.CredentialExchangeProtocolImport,
94+
FlagKey.CredentialExchangeProtocolExport,
95+
FlagKey.AppReviewPrompt,
96+
FlagKey.NewDeviceTemporaryDismiss,
97+
FlagKey.NewDevicePermanentDismiss,
98+
FlagKey.SingleTapPasskeyCreation,
99+
FlagKey.SingleTapPasskeyAuthentication,
100+
).all {
101+
!it.defaultValue
102+
},
103+
)
104+
105+
assertTrue(FlagKey.CipherKeyEncryption.defaultValue)
18106
}
19107

20108
@Test
21-
fun `EmailVerification default value should be false`() {
22-
assertFalse(FlagKey.EmailVerification.defaultValue)
23-
}
24-
25-
@Test
26-
fun `OnboardingCarousel default value should be false`() {
27-
assertFalse(FlagKey.OnboardingCarousel.defaultValue)
28-
}
29-
30-
@Test
31-
fun `OnboardingFlow default value should be false`() {
32-
assertFalse(FlagKey.OnboardingFlow.defaultValue)
33-
}
34-
35-
@Test
36-
fun `ImportLoginsFlow default value should be false`() {
37-
assertFalse(FlagKey.ImportLoginsFlow.defaultValue)
38-
}
39-
40-
@Test
41-
fun `SshKeyCipherItems default value should be false`() {
42-
assertFalse(FlagKey.SshKeyCipherItems.defaultValue)
43-
}
44-
45-
@Test
46-
fun `AppReviewPrompt default value should be false`() {
47-
assertFalse(FlagKey.AppReviewPrompt.defaultValue)
48-
}
49-
50-
@Test
51-
fun `NewDevicePermanentDismiss default value should be false`() {
52-
assertFalse(FlagKey.NewDevicePermanentDismiss.defaultValue)
53-
}
54-
55-
@Test
56-
fun `NewDevicePermanentDismiss is remotely configured value should be true`() {
57-
assertTrue(FlagKey.NewDevicePermanentDismiss.isRemotelyConfigured)
58-
}
59-
60-
@Test
61-
fun `NewDeviceTemporaryDismiss default value should be false`() {
62-
assertFalse(FlagKey.NewDeviceTemporaryDismiss.defaultValue)
63-
}
64-
65-
@Test
66-
fun `NewDeviceTemporaryDismiss is remotely configured value should be true`() {
67-
assertTrue(FlagKey.NewDeviceTemporaryDismiss.isRemotelyConfigured)
68-
}
69-
70-
@Test
71-
fun `IgnoreEnvironmentCheck default value should be false`() {
72-
assertFalse(FlagKey.IgnoreEnvironmentCheck.defaultValue)
73-
}
74-
75-
@Test
76-
fun `IgnoreEnvironmentCheck is remotely configured value should be false`() {
77-
assertFalse(FlagKey.IgnoreEnvironmentCheck.isRemotelyConfigured)
109+
fun `All feature flags are correctly set to be remotely configured`() {
110+
assertTrue(
111+
listOf(
112+
FlagKey.AuthenticatorSync,
113+
FlagKey.EmailVerification,
114+
FlagKey.OnboardingCarousel,
115+
FlagKey.OnboardingFlow,
116+
FlagKey.ImportLoginsFlow,
117+
FlagKey.SshKeyCipherItems,
118+
FlagKey.VerifiedSsoDomainEndpoint,
119+
FlagKey.CredentialExchangeProtocolImport,
120+
FlagKey.CredentialExchangeProtocolExport,
121+
FlagKey.AppReviewPrompt,
122+
FlagKey.CipherKeyEncryption,
123+
FlagKey.NewDeviceTemporaryDismiss,
124+
FlagKey.NewDevicePermanentDismiss,
125+
FlagKey.SingleTapPasskeyCreation,
126+
FlagKey.SingleTapPasskeyAuthentication,
127+
).all {
128+
it.isRemotelyConfigured
129+
},
130+
)
131+
132+
assertTrue(
133+
listOf(
134+
FlagKey.IgnoreEnvironmentCheck,
135+
FlagKey.MutualTls,
136+
).all {
137+
!it.isRemotelyConfigured
138+
},
139+
)
78140
}
79141
}

0 commit comments

Comments
 (0)