Compare commits
No commits in common. "71a05d631c32f95b80cb141e45dbe5f434ebb73e" and "2bb0b0db3a31f21159c32769427d3efbb55870ef" have entirely different histories.
71a05d631c
...
2bb0b0db3a
26 changed files with 8 additions and 285 deletions
|
|
@ -1,9 +1,3 @@
|
||||||
## 0.1.0a16 (2025-04-04)
|
|
||||||
|
|
||||||
### Fix
|
|
||||||
|
|
||||||
- with ROUGAIL_BITWARDEN_MOCK_ENABLE variable, unix_user and password are different
|
|
||||||
|
|
||||||
## 0.1.0a15 (2025-03-19)
|
## 0.1.0a15 (2025-03-19)
|
||||||
|
|
||||||
### Fix
|
### Fix
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "rougail.user_data_bitwarden"
|
name = "rougail.user_data_bitwarden"
|
||||||
version = "0.1.0a16"
|
version = "0.1.0a15"
|
||||||
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
|
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
description = "Rougail user_data Bitwarden"
|
description = "Rougail user_data Bitwarden"
|
||||||
|
|
|
||||||
|
|
@ -185,13 +185,9 @@ class RougailUserDataBitwarden:
|
||||||
self.errors.append(_('the default value for "{0}" must be the Bitwarden item name').format(path))
|
self.errors.append(_('the default value for "{0}" must be the Bitwarden item name').format(path))
|
||||||
return None, None
|
return None, None
|
||||||
if 'ROUGAIL_BITWARDEN_MOCK_ENABLE' in environ:
|
if 'ROUGAIL_BITWARDEN_MOCK_ENABLE' in environ:
|
||||||
if type_ == 'secret':
|
|
||||||
value = 'Ex4mpL3_P4ssw0rD'
|
|
||||||
else:
|
|
||||||
value = 'example_login'
|
|
||||||
if allow_multiple:
|
if allow_multiple:
|
||||||
return [key_bitwarden], [value]
|
return ['example_login'], ['Ex4mpL3_P4ssw0rD']
|
||||||
return key_bitwarden, value
|
return 'example_login', 'Ex4mpL3_P4ssw0rD'
|
||||||
try:
|
try:
|
||||||
data = self.get_key_from_commandline(key_bitwarden, allow_multiple)
|
data = self.get_key_from_commandline(key_bitwarden, allow_multiple)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.username": "example_login",
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.username": "example_login",
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.username": "example_login",
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.username": "example_login",
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.leader.username": [
|
|
||||||
{
|
|
||||||
"rougail.leader.username": "example_login",
|
|
||||||
"rougail.leader.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.leader.username": [
|
|
||||||
{
|
|
||||||
"rougail.leader.username": "example_login",
|
|
||||||
"rougail.leader.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
"errors": [],
|
|
||||||
"warnings": []
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"rougail.host": "test",
|
|
||||||
"rougail.project": "5_secret_calc",
|
|
||||||
"rougail.environment": "environment",
|
|
||||||
"rougail.service": "service",
|
|
||||||
"rougail.user": "user_1",
|
|
||||||
"rougail.secret": "Ex4mpL3_P4ssw0rD",
|
|
||||||
"rougail.dyn_user_1.secret": "Ex4mpL3_P4ssw0rD",
|
|
||||||
"rougail.dyn_user_2.secret": "Ex4mpL3_P4ssw0rD"
|
|
||||||
}
|
|
||||||
|
|
@ -7,7 +7,6 @@ from rougail.user_data_bitwarden import RougailUserDataBitwarden as RougailUserD
|
||||||
from json import load, dump
|
from json import load, dump
|
||||||
#########################
|
#########################
|
||||||
from pytest import raises
|
from pytest import raises
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
|
|
||||||
from rougail_tests.utils import config_to_dict
|
from rougail_tests.utils import config_to_dict
|
||||||
|
|
@ -16,7 +15,7 @@ from rougail_tests.utils import config_to_dict
|
||||||
test_dir = Path(__file__).parent / 'structures'
|
test_dir = Path(__file__).parent / 'structures'
|
||||||
|
|
||||||
|
|
||||||
def _test_dictionaries(test_dir, command, env=False):
|
def _test_dictionaries(test_dir, command):
|
||||||
rougailconfig = RougailConfig.copy()
|
rougailconfig = RougailConfig.copy()
|
||||||
rougailconfig['main_dictionaries'] = [str(test_dir)]
|
rougailconfig['main_dictionaries'] = [str(test_dir)]
|
||||||
# rougailconfig['tiramisu_cache'] = "cache.py"
|
# rougailconfig['tiramisu_cache'] = "cache.py"
|
||||||
|
|
@ -28,22 +27,18 @@ def _test_dictionaries(test_dir, command, env=False):
|
||||||
errors = RougailUserData(config, rougailconfig=rougailconfig).run()
|
errors = RougailUserData(config, rougailconfig=rougailconfig).run()
|
||||||
#expected output
|
#expected output
|
||||||
config_dict = dict(config_to_dict(config.forcepermissive.value.get()))
|
config_dict = dict(config_to_dict(config.forcepermissive.value.get()))
|
||||||
if not env:
|
ok_file = Path('tests') / 'results' / test_dir.name / 'makedict' / ('bitwarden.json.' + command)
|
||||||
base_filename = 'bitwarden.json'
|
|
||||||
else:
|
|
||||||
base_filename = 'bitwarden_env.json'
|
|
||||||
ok_file = Path('tests') / 'results' / test_dir.name / 'makedict' / (base_filename + '.' + command)
|
|
||||||
if not ok_file.is_file():
|
if not ok_file.is_file():
|
||||||
ok_file = Path('tests') / 'results' / test_dir.name / 'makedict' / base_filename
|
ok_file = Path('tests') / 'results' / test_dir.name / 'makedict' / 'bitwarden.json'
|
||||||
if not ok_file.is_file():
|
if not ok_file.is_file():
|
||||||
ok_file.parent.mkdir(parents=True, exist_ok=True)
|
ok_file.parent.mkdir(parents=True, exist_ok=True)
|
||||||
with open(ok_file, 'a') as json_file:
|
with open(ok_file, 'a') as json_file:
|
||||||
dump(config_dict, json_file, indent=4)
|
dump(config_dict, json_file, indent=4)
|
||||||
with open(ok_file) as json_file:
|
with open(ok_file) as json_file:
|
||||||
expected = load(json_file)
|
expected = load(json_file)
|
||||||
errors_file = Path('tests') / 'results' / test_dir.name / 'errors' / (base_filename + '.' + command)
|
errors_file = Path('tests') / 'results' / test_dir.name / 'errors' / ('bitwarden.json.' + command)
|
||||||
if not errors_file.is_file():
|
if not errors_file.is_file():
|
||||||
errors_file = Path('tests') / 'results' / test_dir.name / 'errors' / base_filename
|
errors_file = Path('tests') / 'results' / test_dir.name / 'errors' / 'bitwarden.json'
|
||||||
if not errors_file.is_file():
|
if not errors_file.is_file():
|
||||||
errors_file.parent.mkdir(parents=True, exist_ok=True)
|
errors_file.parent.mkdir(parents=True, exist_ok=True)
|
||||||
with open(errors_file, 'a') as json_file:
|
with open(errors_file, 'a') as json_file:
|
||||||
|
|
@ -195,167 +190,3 @@ def test_dictionaries_9_unknown_type_bw():
|
||||||
with raises(DictConsistencyError) as err:
|
with raises(DictConsistencyError) as err:
|
||||||
_test_dictionaries(test_dir / '9_unknown_type', 'bw')
|
_test_dictionaries(test_dir / '9_unknown_type', 'bw')
|
||||||
assert err.value.errno == 56
|
assert err.value.errno == 56
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_1_secret_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '1_secret', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_1_secret_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '1_secret', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_1_secret_unknown_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '1_secret_unknown', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_1_secret_unknown_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '1_secret_unknown', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_upper_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_upper', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_upper_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_upper', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_invalid_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_invalid', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_invalid_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_invalid', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_hidden_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_hidden', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_2_username_secret_hidden_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '2_username_secret_hidden', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_3_leadership_secret_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '3_leadership_secret', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_3_leadership_secret_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '3_leadership_secret', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_3_leadership_secret_several_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '3_leadership_secret_several', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_3_leadership_secret_several_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '3_leadership_secret_several', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_4_several_secrets_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '4_several_secrets', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_4_several_secrets_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '4_several_secrets', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_4_several_secrets_upper_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '4_several_secrets_upper', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_4_several_secrets_upper_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '4_several_secrets_upper', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_5_secret_calc_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '5_secret_calc', 'rbw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_5_secret_calc_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
_test_dictionaries(test_dir / '5_secret_calc', 'bw', True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_8_multi_variable_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
with raises(DictConsistencyError) as err:
|
|
||||||
_test_dictionaries(test_dir / '8_multi_variable', 'rbw', True)
|
|
||||||
assert err.value.errno == 57
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_8_multi_variable_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
with raises(DictConsistencyError) as err:
|
|
||||||
_test_dictionaries(test_dir / '8_multi_variable', 'bw', True)
|
|
||||||
assert err.value.errno == 57
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_9_unknown_type_rbw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
with raises(DictConsistencyError) as err:
|
|
||||||
_test_dictionaries(test_dir / '9_unknown_type', 'rbw', True)
|
|
||||||
assert err.value.errno == 56
|
|
||||||
|
|
||||||
|
|
||||||
def test_dictionaries_env_9_unknown_type_bw():
|
|
||||||
"tests the output"
|
|
||||||
with mock.patch.dict(os.environ, {'ROUGAIL_BITWARDEN_MOCK_ENABLE': '1'}):
|
|
||||||
with raises(DictConsistencyError) as err:
|
|
||||||
_test_dictionaries(test_dir / '9_unknown_type', 'bw', True)
|
|
||||||
assert err.value.errno == 56
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue