From 0fc3ba496214275c0402618594f8cfd4e2f7eaa2 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Wed, 3 Nov 2021 08:44:23 -0300 Subject: [PATCH] Move the ability to null Settings strings into Settings --- .../mailbox/core/settings/Settings.kt | 11 ++++++++ .../mailbox/core/setup/SetupManager.kt | 28 ++++--------------- .../mailbox/core/setup/SetupManagerTest.kt | 9 ++++++ 3 files changed, 26 insertions(+), 22 deletions(-) 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 8e988a44..01ace732 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 611dccf6..37e4f518 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 167cd18b..9ee9c88e 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) + } + } -- GitLab