diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt index 8e988a443a943dfe829b7becab2dd2e66bd40d5e..01ace732dbcdb82e04f1abaf9034819350121509 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt @@ -4,6 +4,17 @@ import java.util.Hashtable class Settings : Hashtable<String, String>() { + override fun put(key: String, value: String?): String? { + return if (value == null) super.put(key, "") + else super.put(key, value) + } + + override fun get(key: String): String? { + val value = super.get(key) + return if (value.isNullOrEmpty()) null + else value + } + fun getBoolean(key: String, defaultValue: Boolean): Boolean { val s = get(key) ?: return defaultValue if ("true" == s) return true diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt index 611dccf6772b0093776015d4cf365f3852262cf9..37e4f518148de33390e4de313ce118cf40f8a31b 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt @@ -57,38 +57,22 @@ class SetupManager @Inject constructor( @Throws(DbException::class) internal fun setToken(setupToken: String?, ownerToken: String?) { val settings = Settings() - if (setupToken == null) { - settings[SETTINGS_SETUP_TOKEN] = "" - } else { - randomIdManager.assertIsRandomId(setupToken) - settings[SETTINGS_SETUP_TOKEN] = setupToken - } - if (ownerToken == null) { - settings[SETTINGS_OWNER_TOKEN] = "" - } else { - randomIdManager.assertIsRandomId(ownerToken) - settings[SETTINGS_OWNER_TOKEN] = ownerToken - } + if (setupToken != null) randomIdManager.assertIsRandomId(setupToken) + settings[SETTINGS_SETUP_TOKEN] = setupToken + if (ownerToken != null) randomIdManager.assertIsRandomId(ownerToken) + settings[SETTINGS_OWNER_TOKEN] = ownerToken settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE_OWNER) } fun getSetupToken(txn: Transaction): String? { val settings = settingsManager.getSettings(txn, SETTINGS_NAMESPACE_OWNER) - return settings[SETTINGS_SETUP_TOKEN].nullify() + return settings[SETTINGS_SETUP_TOKEN] } @Throws(DbException::class) fun getOwnerToken(txn: Transaction): String? { val settings = settingsManager.getSettings(txn, SETTINGS_NAMESPACE_OWNER) - return settings[SETTINGS_OWNER_TOKEN].nullify() - } - - /** - * @return the same string or null if it is empty - */ - private fun String?.nullify(): String? { - return if (isNullOrEmpty()) null - else this + return settings[SETTINGS_OWNER_TOKEN] } } diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt index 167cd18bb7da2957e4796cdf6b1de2532eb191a0..9ee9c88e122bfa60e57210e25dcb1f64074e3888 100644 --- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt +++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt @@ -97,4 +97,13 @@ class SetupManagerTest : IntegrationTest() { } } + @Test + fun `authentication doesn't work with empty string`() = runBlocking { + // use it for setup PUT request + val response: HttpResponse = httpClient.put("$baseUrl/setup") { + authenticateWithToken("") + } + assertEquals(HttpStatusCode.Unauthorized, response.status) + } + }