diff --git a/src/rougail/user_data_bitwarden/__init__.py b/src/rougail/user_data_bitwarden/__init__.py index c982884..7c472bb 100644 --- a/src/rougail/user_data_bitwarden/__init__.py +++ b/src/rougail/user_data_bitwarden/__init__.py @@ -1,6 +1,6 @@ """ Silique (https://www.silique.fr) -Copyright (C) 2025 +Copyright (C) 2025-2026 distribued with GPL-2 or later license diff --git a/src/rougail/user_data_bitwarden/annotator.py b/src/rougail/user_data_bitwarden/annotator.py index d401a3c..a22f75d 100644 --- a/src/rougail/user_data_bitwarden/annotator.py +++ b/src/rougail/user_data_bitwarden/annotator.py @@ -1,6 +1,6 @@ """ Silique (https://www.silique.fr) -Copyright (C) 2025 +Copyright (C) 2025-2026 distribued with GPL-2 or later license @@ -44,7 +44,4 @@ class Annotator(Walk): path = variable.path self.objectspace.informations.add(path, "bitwarden", True) self.objectspace.informations.add(path, "default_value_makes_sense", False) - if "force_default_on_freeze" in self.objectspace.properties.get(path): - self.objectspace.properties.remove(path, "force_default_on_freeze") - self.objectspace.properties.add(path, "novalidator", True) variable.default = variable.secret_manager diff --git a/src/rougail/user_data_bitwarden/config.py b/src/rougail/user_data_bitwarden/config.py index 827d3e1..079f29d 100644 --- a/src/rougail/user_data_bitwarden/config.py +++ b/src/rougail/user_data_bitwarden/config.py @@ -1,6 +1,6 @@ """ Silique (https://www.silique.fr) -Copyright (C) 2025 +Copyright (C) 2025-2026 distribued with GPL-2 or later license diff --git a/src/rougail/user_data_bitwarden/data.py b/src/rougail/user_data_bitwarden/data.py index 6fc518c..9f579e2 100644 --- a/src/rougail/user_data_bitwarden/data.py +++ b/src/rougail/user_data_bitwarden/data.py @@ -1,6 +1,6 @@ """ Silique (https://www.silique.fr) -Copyright (C) 2025 +Copyright (C) 2025-2026 distribued with GPL-2 or later license @@ -214,7 +214,7 @@ def set_password(cache, command, *, option): cache[key] = data.copy() if not data: raise ConfigError( - _('item "{0}" in Bitwarden is not found"').format( + _('item "{0}" in Bitwarden is not found').format( key ) ) diff --git a/src/rougail/user_data_bitwarden/i18n.py b/src/rougail/user_data_bitwarden/i18n.py index fb05a74..e1ff9ab 100644 --- a/src/rougail/user_data_bitwarden/i18n.py +++ b/src/rougail/user_data_bitwarden/i18n.py @@ -1,6 +1,6 @@ """ Silique (https://www.silique.fr) -Copyright (C) 2025 +Copyright (C) 2025-2026 This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the diff --git a/tests/results/1_secret_unknown/makedict/bitwarden.json b/tests/results/1_secret_unknown/makedict/bitwarden.json index 4a47530..450404d 100644 --- a/tests/results/1_secret_unknown/makedict/bitwarden.json +++ b/tests/results/1_secret_unknown/makedict/bitwarden.json @@ -1 +1 @@ -"item \"1_secret_unknown - environment - service - user\" in Bitwarden is not found\"" \ No newline at end of file +"item \"1_secret_unknown - environment - service - user\" in Bitwarden is not found" \ No newline at end of file diff --git a/tests/results/3_leadership_secret_hidden/errors/bitwarden.json b/tests/results/3_leadership_secret_hidden/errors/bitwarden.json new file mode 100644 index 0000000..217db0a --- /dev/null +++ b/tests/results/3_leadership_secret_hidden/errors/bitwarden.json @@ -0,0 +1,4 @@ +{ + "errors": [], + "warnings": [] +} \ No newline at end of file diff --git a/tests/results/3_leadership_secret_hidden/errors/bitwarden_env.json b/tests/results/3_leadership_secret_hidden/errors/bitwarden_env.json new file mode 100644 index 0000000..217db0a --- /dev/null +++ b/tests/results/3_leadership_secret_hidden/errors/bitwarden_env.json @@ -0,0 +1,4 @@ +{ + "errors": [], + "warnings": [] +} \ No newline at end of file diff --git a/tests/results/3_leadership_secret_hidden/makedict/bitwarden.json b/tests/results/3_leadership_secret_hidden/makedict/bitwarden.json new file mode 100644 index 0000000..3a72ff2 --- /dev/null +++ b/tests/results/3_leadership_secret_hidden/makedict/bitwarden.json @@ -0,0 +1,12 @@ +{ + "rougail.leader.username": [ + { + "rougail.leader.username": "bitwarden_username", + "rougail.leader.secret": "bitwarden_password" + }, + { + "rougail.leader.username": "bitwarden_username_2", + "rougail.leader.secret": "bitwarden_password_2" + } + ] +} \ No newline at end of file diff --git a/tests/results/3_leadership_secret_hidden/makedict/bitwarden_env.json b/tests/results/3_leadership_secret_hidden/makedict/bitwarden_env.json new file mode 100644 index 0000000..5f5bc6c --- /dev/null +++ b/tests/results/3_leadership_secret_hidden/makedict/bitwarden_env.json @@ -0,0 +1,8 @@ +{ + "rougail.leader.username": [ + { + "rougail.leader.username": "example_login", + "rougail.leader.secret": "Ex4mpL3_P4ssw0rD" + } + ] +} \ No newline at end of file diff --git a/tests/results/3_leadership_unknown/errors/bitwarden.json b/tests/results/3_leadership_unknown/errors/bitwarden.json index 1778963..f483287 100644 --- a/tests/results/3_leadership_unknown/errors/bitwarden.json +++ b/tests/results/3_leadership_unknown/errors/bitwarden.json @@ -3,38 +3,17 @@ "warnings": [ [ [ - "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\", it will be ignored", + "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found, it will be ignored", "rougail.leader.username", null ] ], [ [ - "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\", it will be ignored", + "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found, it will be ignored", "rougail.leader.username", null ] - ], - [ - [ - "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\", it will be ignored when loading from Bitwarden", - "rougail.leader.secret", - null - ] - ], - [ - [ - "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\", it will be ignored when loading from Bitwarden", - "rougail.leader.secret", - null - ] - ], - [ - [ - "item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\", it will be ignored when loading from Bitwarden", - "rougail.leader.secret", - null - ] ] ] } \ No newline at end of file diff --git a/tests/results/3_leadership_unknown/makedict/bitwarden.json b/tests/results/3_leadership_unknown/makedict/bitwarden.json index 0860f8a..d1fc42c 100644 --- a/tests/results/3_leadership_unknown/makedict/bitwarden.json +++ b/tests/results/3_leadership_unknown/makedict/bitwarden.json @@ -1 +1 @@ -"item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found\"" \ No newline at end of file +"item \"3_leadership_secret - environment - service - unknown\" in Bitwarden is not found" \ No newline at end of file diff --git a/tests/results/5_secret_calc_other_user_data/errors/bitwarden.json b/tests/results/5_secret_calc_other_user_data/errors/bitwarden.json index 5bf470f..e3808f3 100644 --- a/tests/results/5_secret_calc_other_user_data/errors/bitwarden.json +++ b/tests/results/5_secret_calc_other_user_data/errors/bitwarden.json @@ -1,6 +1,12 @@ { "errors": [], "warnings": [ - "variable or family \"rougail.modified_variable_single\" does not exist, it will be ignored when loading from By Hand" + [ + [ + "variable or family \"modified_variable_single\" does not exist so cannot load \"rougail.modified_variable_single\", it will be ignored when loading from By Hand", + "rougail", + null + ] + ] ] } \ No newline at end of file diff --git a/tests/results/5_secret_calc_other_user_data2/errors/bitwarden.json b/tests/results/5_secret_calc_other_user_data2/errors/bitwarden.json index d2082d6..3323fb0 100644 --- a/tests/results/5_secret_calc_other_user_data2/errors/bitwarden.json +++ b/tests/results/5_secret_calc_other_user_data2/errors/bitwarden.json @@ -1,6 +1,12 @@ { "errors": [], "warnings": [ - "variable or family \"rougail.modified_variable\" does not exist, it will be ignored when loading from By Hand" + [ + [ + "variable or family \"modified_variable\" does not exist so cannot load \"rougail.modified_variable\", it will be ignored when loading from By Hand", + "rougail", + null + ] + ] ] } \ No newline at end of file diff --git a/tests/results/5_secret_calc_other_user_data3/errors/bitwarden.json b/tests/results/5_secret_calc_other_user_data3/errors/bitwarden.json index d2082d6..3323fb0 100644 --- a/tests/results/5_secret_calc_other_user_data3/errors/bitwarden.json +++ b/tests/results/5_secret_calc_other_user_data3/errors/bitwarden.json @@ -1,6 +1,12 @@ { "errors": [], "warnings": [ - "variable or family \"rougail.modified_variable\" does not exist, it will be ignored when loading from By Hand" + [ + [ + "variable or family \"modified_variable\" does not exist so cannot load \"rougail.modified_variable\", it will be ignored when loading from By Hand", + "rougail", + null + ] + ] ] } \ No newline at end of file diff --git a/tests/structures/3_leadership_secret_hidden/00-base.yml b/tests/structures/3_leadership_secret_hidden/00-base.yml new file mode 100644 index 0000000..dc36791 --- /dev/null +++ b/tests/structures/3_leadership_secret_hidden/00-base.yml @@ -0,0 +1,26 @@ +--- +version: 1.1 + +leader: + type: leadership + + username: + description: the username + type: unix_user + secret_manager: + host: test + project: 3_leadership_secret + environment: environment + service: service + user: user + + secret: + description: the secret + type: secret + secret_manager: + host: test + project: 3_leadership_secret + environment: environment + service: service + user: user + hidden: true diff --git a/tests/test_load.py b/tests/test_load.py index d40071a..bbc13bd 100644 --- a/tests/test_load.py +++ b/tests/test_load.py @@ -33,6 +33,7 @@ def _test_structural_files(test_dir, command, *, env=False, modified=False, mock if modified: generated_user_data.insert(0, {'source': 'By Hand', 'errors': [], 'warnings': [], 'values': {'rougail.modified_variable': ['user_1', 'user_2'], 'rougail.modified_variable_single': 'user_2'}}) errors = rougail.user_data(generated_user_data) + config.property.read_only() #expected output try: config_dict = dict(config_to_dict(config.value.get())) @@ -119,6 +120,16 @@ def test_structural_files_2_username_secret_invalid_bw(): _test_structural_files(test_dir / '2_username_secret_invalid', 'bw') +def test_structural_files_3_leadership_secret_hidden_rbw(): + "tests the output" + _test_structural_files(test_dir / '3_leadership_secret_hidden', 'rbw') + + +def test_structural_files_3_leadership_secret_hidden_bw(): + "tests the output" + _test_structural_files(test_dir / '3_leadership_secret_hidden', 'bw') + + def test_structural_files_3_leadership_secret_rbw(): "tests the output" _test_structural_files(test_dir / '3_leadership_secret', 'rbw')