Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

server_environment: running_env default to test (fix #44) #45

Merged
merged 3 commits into from
Apr 10, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ install:
${HOME}/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
# Requirements to test server_environment modules
- printf '[options]\n\nrunning_env = dev\n' > ${HOME}/.openerp_serverrc
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉


script:
- travis_run_tests
Expand Down
2 changes: 2 additions & 0 deletions server_environment/readme/CONFIGURE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 18 additions & 11 deletions server_environment/server_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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"]
simahawk marked this conversation as resolved.
Show resolved Hide resolved
# Only show passwords in development
ModelClass.show_passwords = ModelClass.running_env in ("dev",)
ModelClass._arch = None
ModelClass._build_osv()
return ModelClass
Expand All @@ -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_", " | ")
Expand Down
10 changes: 0 additions & 10 deletions server_environment/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 11 additions & 0 deletions server_environment/tests/test_environment_variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
18 changes: 16 additions & 2 deletions server_environment/tests/test_server_environment.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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([])
Expand All @@ -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()
Expand Down