diff --git a/server_environment/README.rst b/server_environment/README.rst
index e7d66f985..407e2de24 100644
--- a/server_environment/README.rst
+++ b/server_environment/README.rst
@@ -68,6 +68,8 @@ used values are 'dev', 'test', 'production'::
Values associated to keys containing 'passw' are only displayed in the 'dev'
environment.
+If you don't provide any value, `test` is used as a safe default.
+
You have several possibilities to set configuration values:
server_environment_files
diff --git a/server_environment/readme/CONFIGURE.rst b/server_environment/readme/CONFIGURE.rst
index deca37ca9..6610f4493 100644
--- a/server_environment/readme/CONFIGURE.rst
+++ b/server_environment/readme/CONFIGURE.rst
@@ -8,6 +8,8 @@ used values are 'dev', 'test', 'production'::
Values associated to keys containing 'passw' are only displayed in the 'dev'
environment.
+If you don't provide any value, `test` is used as a safe default.
+
You have several possibilities to set configuration values:
server_environment_files
diff --git a/server_environment/server_env.py b/server_environment/server_env.py
index 4d2af55c6..1999d6ced 100644
--- a/server_environment/server_env.py
+++ b/server_environment/server_env.py
@@ -58,14 +58,20 @@
"off": False,
}
-if not system_base_config.get("running_env", False):
- raise Exception(
- "The parameter 'running_env' has not be set neither in base config "
- "file option -c or in openerprc.\n"
- "We strongly recommend against using the rc file but instead use an "
- "explicit config file with this content:\n"
- "[options]\nrunning_env = dev"
- )
+
+def _load_running_env():
+ if not system_base_config.get("running_env"):
+ _logger.warning("`running_env` not found. Using default = `test`.")
+ _logger.warning(
+ "We strongly recommend against using the rc file but instead use an "
+ "explicit config file or env variable."
+ )
+ # safe default
+ system_base_config["running_env"] = "test"
+
+
+_load_running_env()
+
ck_path = None
if _dir:
@@ -184,9 +190,6 @@ def _build_model(cls, pool, cr):
"""
ModelClass = super(ServerConfiguration, cls)._build_model(pool, cr)
ModelClass._add_columns()
- ModelClass.running_env = system_base_config["running_env"]
- # Only show passwords in development
- ModelClass.show_passwords = ModelClass.running_env in ("dev",)
ModelClass._arch = None
ModelClass._build_osv()
return ModelClass
@@ -195,6 +198,10 @@ def _build_model(cls, pool, cr):
def _format_key(cls, section, key):
return "{}_I_{}".format(section, key)
+ @property
+ def show_passwords(self):
+ return system_base_config["running_env"] in ("dev",)
+
@classmethod
def _format_key_display_name(cls, key_name):
return key_name.replace("_I_", " | ")
diff --git a/server_environment/static/description/index.html b/server_environment/static/description/index.html
index 5ec96fc4c..d5348779e 100644
--- a/server_environment/static/description/index.html
+++ b/server_environment/static/description/index.html
@@ -424,6 +424,7 @@
Values associated to keys containing ‘passw’ are only displayed in the ‘dev’
environment.
+If you don’t provide any value, test is used as a safe default.
You have several possibilities to set configuration values:
diff --git a/server_environment/tests/common.py b/server_environment/tests/common.py
index 781ce2561..519706f9b 100644
--- a/server_environment/tests/common.py
+++ b/server_environment/tests/common.py
@@ -6,22 +6,12 @@
from unittest.mock import patch
from odoo.tests import common
-from odoo.tools.config import config
import odoo.addons.server_environment.models.server_env_mixin as server_env_mixin
from odoo.addons.server_environment import server_env
class ServerEnvironmentCase(common.SavepointCase):
- def setUp(self):
- super().setUp()
- self._original_running_env = config.get("running_env")
- config["running_env"] = "testing"
-
- def tearDown(self):
- super().tearDown()
- config["running_env"] = self._original_running_env
-
@contextmanager
def set_config_dir(self, path):
original_dir = server_env._dir
diff --git a/server_environment/tests/test_environment_variable.py b/server_environment/tests/test_environment_variable.py
index 17474067f..5c21677ae 100644
--- a/server_environment/tests/test_environment_variable.py
+++ b/server_environment/tests/test_environment_variable.py
@@ -2,11 +2,22 @@
# License GPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from unittest.mock import patch
+
+from odoo.tools.config import config as odoo_config
+
from odoo.addons.server_environment import server_env
from .common import ServerEnvironmentCase
+class TestRunningEnvDefault(ServerEnvironmentCase):
+ def test_running_env_default(self):
+ """When var is not provided it defaults to `test`."""
+ self.assertEqual(odoo_config["running_env"], "test")
+
+
+@patch.dict(odoo_config.options, {"running_env": "testing"})
class TestEnvironmentVariables(ServerEnvironmentCase):
def test_env_variables(self):
public = "[section]\n" "foo=bar\n" "bar=baz\n"
diff --git a/server_environment/tests/test_server_environment.py b/server_environment/tests/test_server_environment.py
index 48df0cdc5..892e94ab8 100644
--- a/server_environment/tests/test_server_environment.py
+++ b/server_environment/tests/test_server_environment.py
@@ -1,5 +1,9 @@
# Copyright 2018 Camptocamp (https://www.camptocamp.com).
# License GPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from unittest.mock import patch
+
+from odoo.tools.config import config as odoo_config
+
from .. import server_env
from . import common
@@ -10,7 +14,7 @@ def test_view(self):
view = model.fields_view_get()
self.assertTrue(view)
- def test_default(self):
+ def _test_default(self, hidden_pwd=False):
model = self.env["server.config"]
rec = model.create({})
defaults = rec.default_get([])
@@ -19,10 +23,20 @@ def test_default(self):
pass_checked = False
for default in defaults:
if "passw" in default:
- self.assertNotEqual(defaults[default], "**********")
+ check = self.assertEqual if hidden_pwd else self.assertNotEqual
+ check(defaults[default], "**********")
pass_checked = True
self.assertTrue(pass_checked)
+ @patch.dict(odoo_config.options, {"running_env": "dev"})
+ def test_default_dev(self):
+ self._test_default()
+
+ @patch.dict(odoo_config.options, {"running_env": "whatever"})
+ def test_default_non_dev_env(self):
+ self._test_default(hidden_pwd=True)
+
+ @patch.dict(odoo_config.options, {"running_env": "testing"})
def test_value_retrival(self):
with self.set_config_dir("testfiles"):
parser = server_env._load_config()