diff --git a/app/server/tests/test_config.py b/app/server/tests/test_config.py index 2ba3a27d..8cace2e6 100644 --- a/app/server/tests/test_config.py +++ b/app/server/tests/test_config.py @@ -24,11 +24,20 @@ class TestDatabaseUrl(TestCase): with setenv('DATABASE_URL', 'pgsql://u:p@h/d?sslmode=require'): self._assert_sslmode_is('require') + def test_database_url_with_complex_user(self): + with setenv('DATABASE_URL', 'pgsql://user%40host:p@h/d'): + self._assert_user_is('user@host') + def _assert_sslmode_is(self, expected): reload(settings) actual = settings.DATABASES['default'].get('OPTIONS', {}).get('sslmode') self.assertEqual(actual, expected) + def _assert_user_is(self, expected): + reload(settings) + actual = settings.DATABASES['default'].get('USER', '') + self.assertEqual(actual, expected) + @contextmanager def setenv(key, value): diff --git a/azuredeploy.json b/azuredeploy.json index e9067d50..17d8ace7 100644 --- a/azuredeploy.json +++ b/azuredeploy.json @@ -97,7 +97,7 @@ "databaseSkuTier": "GeneralPurpose", "databaseSkuFamily": "Gen5", "databaseSkuName": "[concat('GP_', variables('databaseSkuFamily'), '_', parameters('databaseCores'))]", - "databaseConnectionString": "[concat('pgsql://', parameters('adminUserName'), '@', variables('databaseServerName'), ':', parameters('adminPassword'), '@', variables('databaseServerName'), '.postgres.database.azure.com:5432/', parameters('databaseName'))]", + "databaseConnectionString": "[concat('pgsql://', parameters('adminUserName'), '%40', variables('databaseServerName'), ':', parameters('adminPassword'), '@', variables('databaseServerName'), '.postgres.database.azure.com:5432/', parameters('databaseName'))]", "databaseVersion": "9.6", "databaseServerName": "[concat(parameters('appName'),'-state')]", "setupScriptName": "[concat(parameters('appName'),'-setup')]",