From 9dc8fd2a93ba114aa2842888bedcab83db5dc0f1 Mon Sep 17 00:00:00 2001 From: David Nugent Date: Mon, 8 Jan 2024 15:47:36 +1100 Subject: [PATCH 1/3] upgrade actions to contemporary versions --- .github/workflows/poetry-test-and-build.yml | 4 ++-- .github/workflows/release-build-and-publish.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/poetry-test-and-build.yml b/.github/workflows/poetry-test-and-build.yml index 7866f7e..9caf431 100644 --- a/.github/workflows/poetry-test-and-build.yml +++ b/.github/workflows/poetry-test-and-build.yml @@ -17,7 +17,7 @@ jobs: poetry-version: ["1.7.1"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # Fetch all tags fetch-depth: 0 @@ -26,7 +26,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Setup python and poetry - uses: abatilo/actions-poetry@v2.3.0 + uses: abatilo/actions-poetry@v2.4.0 with: poetry-version: ${{ matrix.poetry-version }} diff --git a/.github/workflows/release-build-and-publish.yml b/.github/workflows/release-build-and-publish.yml index 904baee..236dfc5 100644 --- a/.github/workflows/release-build-and-publish.yml +++ b/.github/workflows/release-build-and-publish.yml @@ -14,12 +14,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup python and poetry - uses: abatilo/actions-poetry@v2.3.0 + uses: abatilo/actions-poetry@v2.4.0 with: poetry-version: ${{ matrix.poetry-version }} python-version: ${{ matrix.python-version }} From 598f865d2dd4ff4e6787875a6af687e08db056be Mon Sep 17 00:00:00 2001 From: David Nugent Date: Mon, 8 Jan 2024 15:49:48 +1100 Subject: [PATCH 2/3] test fixes and refactoring & add simple sm sealed status --- envex/lib/hvac_env.py | 9 ++++++++- pyproject.toml | 2 +- tests/lib/test_hvac_env.py | 2 +- tests/test_wrapper.py | 35 +++++++++++++++++++++++------------ 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/envex/lib/hvac_env.py b/envex/lib/hvac_env.py index c92f7a4..5509a8a 100644 --- a/envex/lib/hvac_env.py +++ b/envex/lib/hvac_env.py @@ -72,7 +72,7 @@ def __init__( """ self._mount_point = None if verify in (True, None): - verify = os.getenv("VAULT_åCACERT") or True + verify = os.getenv("VAULT_CACERT") or True if isinstance(verify, str): verify = expand(verify) if cert is None: @@ -124,6 +124,13 @@ def client(self): except Exception as exc: logging.debug(f"{exc.__class__.__name__} Vault client cannot authenticate {exc}") + @property + def sealed(self) -> bool: + if self.client: + response = self.client.seal_status + return response["sealed"] + return None + @property def base_path(self) -> str: return self._base_path diff --git a/pyproject.toml b/pyproject.toml index beada87..b84b67b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "envex" -version = "2.2.1" +version = "2.3.0" description = "Environment interface with .env and hashicorp vault support" authors = ["David Nugent "] readme = "README.md" diff --git a/tests/lib/test_hvac_env.py b/tests/lib/test_hvac_env.py index 1503505..908dbab 100644 --- a/tests/lib/test_hvac_env.py +++ b/tests/lib/test_hvac_env.py @@ -68,7 +68,7 @@ def test_set_secret_in_vault(self, mocker): secrets_manager.set_secret("key", "secret_value") # Assert that the secret is set in the Vault - secrets_manager._client.write.assert_called_once_with("secret/test/key", value="secret_value") + secrets_manager._client.write.assert_called_once_with("test/key", value="secret_value") # Assert that the secret is cached secrets_manager._cache.put.assert_called_once_with("key", "secret_value") diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index a96a6bd..dd5f550 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -111,27 +111,38 @@ def test_env_list(monkeypatch): monkeypatch.setattr(envex.dot_env, "open_env", dotenv) env = envex.Env(readenv=True) - result = env.list("ALISTOFIPS") - assert isinstance(result, list) - assert len(result) == 3 + result = _extracted_from_test_env_list_5(env, "ALISTOFIPS", 3) assert result == ["::1", "127.0.0.1", "mydomain.com"] - result = env("ALISTOFIPS", type=list) - assert isinstance(result, list) - assert len(result) == 3 + result = _extracted_from_test_env_list_10(env, "ALISTOFIPS", 3) assert result == ["::1", "127.0.0.1", "mydomain.com"] - result = env.list("LISTOFQUOTEDVALUES") - assert isinstance(result, list) - assert len(result) == 4 + result = _extracted_from_test_env_list_5(env, "LISTOFQUOTEDVALUES", 4) assert result == ["1", "two", "3", "four"] - result = env("LISTOFQUOTEDVALUES", type=list) - assert isinstance(result, list) - assert len(result) == 4 + result = _extracted_from_test_env_list_10(env, "LISTOFQUOTEDVALUES", 4) assert result == ["1", "two", "3", "four"] +# TODO Rename this here and in `test_env_list` +def _extracted_from_test_env_list_5(env, arg1, arg2): + result = env.list(arg1) + return _extracted_from__extracted_from_test_env_list_10_11(result, arg2) + + +# TODO Rename this here and in `test_env_list` +def _extracted_from__extracted_from_test_env_list_10_11(result, arg2): + assert isinstance(result, list) + assert len(result) == arg2 + return result + + +# TODO Rename this here and in `test_env_list` +def _extracted_from_test_env_list_10(env, arg1, arg2): + result = env(arg1, type=list) + return _extracted_from__extracted_from_test_env_list_10_11(result, arg2) + + def test_env_iter(monkeypatch): monkeypatch.setattr(envex.dot_env, "open_env", dotenv) env = envex.Env(readenv=True, update=False) From 9142ab51b5c5b6682d2eee377828fcafce58e025 Mon Sep 17 00:00:00 2001 From: David Nugent Date: Mon, 8 Jan 2024 15:51:21 +1100 Subject: [PATCH 3/3] test fixes and refactoring & add simple sm sealed status --- tests/test_wrapper.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index dd5f550..74fd919 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -124,20 +124,17 @@ def test_env_list(monkeypatch): assert result == ["1", "two", "3", "four"] -# TODO Rename this here and in `test_env_list` def _extracted_from_test_env_list_5(env, arg1, arg2): result = env.list(arg1) return _extracted_from__extracted_from_test_env_list_10_11(result, arg2) -# TODO Rename this here and in `test_env_list` def _extracted_from__extracted_from_test_env_list_10_11(result, arg2): assert isinstance(result, list) assert len(result) == arg2 return result -# TODO Rename this here and in `test_env_list` def _extracted_from_test_env_list_10(env, arg1, arg2): result = env(arg1, type=list) return _extracted_from__extracted_from_test_env_list_10_11(result, arg2)