VaultSettingsDefaultsTest.kt

2.7 KB · raw

1package com.peachpasswords.vault23import org.junit.Assert.assertEquals4import org.junit.Assert.assertFalse5import org.junit.Assert.assertTrue6import org.junit.Test78/**9 * Gate for the new-install default. The Credential Manager provider is on by10 * default for fresh installs so users get passkey sign-in without having to11 * dig into Settings. Existing users who explicitly disabled it must stay12 * off — the stored value is preserved over the default (see [VaultStore]13 * which falls back to [VaultSettings] only when nothing is on disk).14 */15class VaultSettingsDefaultsTest {1617    @Test fun new_install_default_has_passkey_enabled() {18        assertTrue(19            "first-launch default must enable passkey provider — user said 'q2 is correct'",20            VaultSettings().passkeyProviderEnabled,21        )22    }2324    @Test fun plaintext_settings_do_not_contain_duress_configuration() {25        val encoded = VaultCodec.encodeSettings(VaultSettings())2627        assertFalse(encoded.contains("duressConfigured"))28    }2930    @Test fun legacy_duress_setting_is_ignored_before_unlock() {31        val decoded = VaultCodec.decodeSettings("{\"duressConfigured\":true}")3233        assertEquals(VaultSettings(), decoded)34        assertFalse(decoded!!.toString().contains("duressConfigured"))35    }3637    @Test fun explicitly_disabled_setting_round_trips_through_codec() {38        val original = VaultSettings(passkeyProviderEnabled = false)39        val encoded = VaultCodec.encodeSettings(original)40        val decoded = VaultCodec.decodeSettings(encoded)41        assertEquals(original, decoded)42        assertFalse("explicit off must not be auto-flipped to on by load", decoded!!.passkeyProviderEnabled)43    }4445    @Test fun explicitly_enabled_setting_round_trips_through_codec() {46        val original = VaultSettings(passkeyProviderEnabled = true)47        val encoded = VaultCodec.encodeSettings(original)48        val decoded = VaultCodec.decodeSettings(encoded)49        assertEquals(original, decoded)50    }5152    @Test fun legacy_enabled_favicons_doNotGainConsentByUpgrade() {53        val legacy = VaultCodec.decodeSettings("{\"faviconsEnabled\":true}")!!5455        assertEquals(0, legacy.faviconConsentVersion)56        assertFalse(faviconsAllowed(legacy))57    }5859    @Test fun currentExplicitConsentAllowsEnabledFavicons() {60        val consented = grantCurrentFaviconConsent(VaultSettings())6162        assertTrue(consented.faviconsEnabled)63        assertEquals(CURRENT_FAVICON_CONSENT_VERSION, consented.faviconConsentVersion)64        assertTrue(faviconsAllowed(consented))65    }6667    @Test fun disabledFaviconsStayOffAfterPriorConsent() {68        val disabled = grantCurrentFaviconConsent(VaultSettings()).copy(faviconsEnabled = false)6970        assertFalse(faviconsAllowed(disabled))71    }72}