0ecb8a91d39b699816e21d6e215878ddc50252e3
Marco Ricci Update copyright notices to...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py   1) # SPDX-FileCopyrightText: 2025 Marco Ricci <software@the13thletter.info>
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py       2) #
Marco Ricci Update copyright notices to...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py   3) # SPDX-License-Identifier: Zlib
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py       4) 
tests/test_derivepassphrase_exporter_cli.py       5) from __future__ import annotations
tests/test_derivepassphrase_exporter_cli.py       6) 
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py       7) import base64
Marco Ricci Refactor code to run under...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py   8) import contextlib
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py       9) import json
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  10) import os
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      11) from typing import TYPE_CHECKING
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      12) 
tests/test_derivepassphrase_exporter_cli.py      13) import click.testing
Marco Ricci Trigger InvalidSignature ex...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py  14) import hypothesis
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      15) import pytest
Marco Ricci Trigger InvalidSignature ex...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py  16) from hypothesis import strategies
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      17) 
tests/test_derivepassphrase_exporter_cli.py      18) import tests
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  19) from derivepassphrase import _types, cli, exporter
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py  20) from derivepassphrase.exporter import storeroom, vault_native
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      21) 
tests/test_derivepassphrase_exporter_cli.py      22) cryptography = pytest.importorskip('cryptography', minversion='38.0')
tests/test_derivepassphrase_exporter_cli.py      23) 
Marco Ricci Add remaining tests to the...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py  24) from cryptography.hazmat.primitives import (  # noqa: E402
tests/test_derivepassphrase_cli_export_vault.py  25)     ciphers,
tests/test_derivepassphrase_cli_export_vault.py  26)     hashes,
tests/test_derivepassphrase_cli_export_vault.py  27)     hmac,
tests/test_derivepassphrase_cli_export_vault.py  28)     padding,
tests/test_derivepassphrase_cli_export_vault.py  29) )
tests/test_derivepassphrase_cli_export_vault.py  30) from cryptography.hazmat.primitives.ciphers import (  # noqa: E402
tests/test_derivepassphrase_cli_export_vault.py  31)     algorithms,
tests/test_derivepassphrase_cli_export_vault.py  32)     modes,
tests/test_derivepassphrase_cli_export_vault.py  33) )
tests/test_derivepassphrase_cli_export_vault.py  34) 
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      35) if TYPE_CHECKING:
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      36)     from collections.abc import Callable
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      37)     from typing import Any
tests/test_derivepassphrase_exporter_cli.py      38) 
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  39)     from typing_extensions import Buffer, Literal
tests/test_derivepassphrase_cli_export_vault.py  40) 
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      41) 
tests/test_derivepassphrase_exporter_cli.py      42) class TestCLI:
tests/test_derivepassphrase_exporter_cli.py      43)     def test_200_path_parameter(self, monkeypatch: pytest.MonkeyPatch) -> None:
tests/test_derivepassphrase_exporter_cli.py      44)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py      45)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py      46)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py      47)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py      48)             vault_config=tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py      49)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py      50)         ):
tests/test_derivepassphrase_exporter_cli.py      51)             monkeypatch.setenv('VAULT_KEY', tests.VAULT_MASTER_KEY)
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  52)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py  53)                 cli.derivepassphrase_export_vault,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      54)                 ['VAULT_PATH'],
tests/test_derivepassphrase_exporter_cli.py      55)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  56)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      57)         assert result.clean_exit(empty_stderr=True), 'expected clean exit'
tests/test_derivepassphrase_exporter_cli.py      58)         assert json.loads(result.output) == tests.VAULT_V03_CONFIG_DATA
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      59) 
tests/test_derivepassphrase_exporter_cli.py      60)     def test_201_key_parameter(self, monkeypatch: pytest.MonkeyPatch) -> None:
tests/test_derivepassphrase_exporter_cli.py      61)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py      62)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py      63)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py      64)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py      65)             vault_config=tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py      66)         ):
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  67)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py  68)                 cli.derivepassphrase_export_vault,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      69)                 ['-k', tests.VAULT_MASTER_KEY, '.vault'],
tests/test_derivepassphrase_exporter_cli.py      70)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py  71)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      72)         assert result.clean_exit(empty_stderr=True), 'expected clean exit'
tests/test_derivepassphrase_exporter_cli.py      73)         assert json.loads(result.output) == tests.VAULT_V03_CONFIG_DATA
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py      74) 
tests/test_derivepassphrase_exporter_cli.py      75)     @pytest.mark.parametrize(
tests/test_derivepassphrase_exporter_cli.py      76)         ['format', 'config', 'config_data'],
tests/test_derivepassphrase_exporter_cli.py      77)         [
tests/test_derivepassphrase_exporter_cli.py      78)             pytest.param(
tests/test_derivepassphrase_exporter_cli.py      79)                 'v0.2',
tests/test_derivepassphrase_exporter_cli.py      80)                 tests.VAULT_V02_CONFIG,
tests/test_derivepassphrase_exporter_cli.py      81)                 tests.VAULT_V02_CONFIG_DATA,
tests/test_derivepassphrase_exporter_cli.py      82)                 id='0.2',
tests/test_derivepassphrase_exporter_cli.py      83)             ),
tests/test_derivepassphrase_exporter_cli.py      84)             pytest.param(
tests/test_derivepassphrase_exporter_cli.py      85)                 'v0.3',
tests/test_derivepassphrase_exporter_cli.py      86)                 tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py      87)                 tests.VAULT_V03_CONFIG_DATA,
tests/test_derivepassphrase_exporter_cli.py      88)                 id='0.3',
tests/test_derivepassphrase_exporter_cli.py      89)             ),
tests/test_derivepassphrase_exporter_cli.py      90)             pytest.param(
tests/test_derivepassphrase_exporter_cli.py      91)                 'storeroom',
tests/test_derivepassphrase_exporter_cli.py      92)                 tests.VAULT_STOREROOM_CONFIG_ZIPPED,
tests/test_derivepassphrase_exporter_cli.py      93)                 tests.VAULT_STOREROOM_CONFIG_DATA,
tests/test_derivepassphrase_exporter_cli.py      94)                 id='storeroom',
tests/test_derivepassphrase_exporter_cli.py      95)             ),
tests/test_derivepassphrase_exporter_cli.py      96)         ],
tests/test_derivepassphrase_exporter_cli.py      97)     )
tests/test_derivepassphrase_exporter_cli.py      98)     def test_210_load_vault_v02_v03_storeroom(
tests/test_derivepassphrase_exporter_cli.py      99)         self,
tests/test_derivepassphrase_exporter_cli.py     100)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_exporter_cli.py     101)         format: str,
tests/test_derivepassphrase_exporter_cli.py     102)         config: str | bytes,
tests/test_derivepassphrase_exporter_cli.py     103)         config_data: dict[str, Any],
tests/test_derivepassphrase_exporter_cli.py     104)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     105)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     106)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     107)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     108)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     109)             vault_config=config,
tests/test_derivepassphrase_exporter_cli.py     110)         ):
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 111)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py 112)                 cli.derivepassphrase_export_vault,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     113)                 ['-f', format, '-k', tests.VAULT_MASTER_KEY, 'VAULT_PATH'],
tests/test_derivepassphrase_exporter_cli.py     114)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 115)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     116)         assert result.clean_exit(empty_stderr=True), 'expected clean exit'
tests/test_derivepassphrase_exporter_cli.py     117)         assert json.loads(result.output) == config_data
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     118) 
tests/test_derivepassphrase_exporter_cli.py     119)     # test_300_invalid_format is found in
tests/test_derivepassphrase_exporter_cli.py     120)     # tests.test_derivepassphrase_export::Test002CLI
tests/test_derivepassphrase_exporter_cli.py     121) 
tests/test_derivepassphrase_exporter_cli.py     122)     def test_301_vault_config_not_found(
tests/test_derivepassphrase_exporter_cli.py     123)         self,
tests/test_derivepassphrase_exporter_cli.py     124)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 125)         caplog: pytest.LogCaptureFixture,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     126)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     127)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     128)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     129)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     130)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     131)             vault_config=tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     132)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     133)         ):
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 134)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py 135)                 cli.derivepassphrase_export_vault,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     136)                 ['does-not-exist.txt'],
tests/test_derivepassphrase_exporter_cli.py     137)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 138)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     139)         assert result.error_exit(
Marco Ricci Replace strings in `derivep...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 140)             error=(
tests/test_derivepassphrase_cli_export_vault.py 141)                 "Cannot parse 'does-not-exist.txt' "
Marco Ricci Format everything with ruff...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 142)                 'as a valid vault-native config'
Marco Ricci Replace strings in `derivep...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 143)             ),
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 144)             record_tuples=caplog.record_tuples,
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     145)         ), 'expected error exit and known error message'
tests/test_derivepassphrase_exporter_cli.py     146)         assert tests.CANNOT_LOAD_CRYPTOGRAPHY not in result.stderr
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     147) 
tests/test_derivepassphrase_exporter_cli.py     148)     def test_302_vault_config_invalid(
tests/test_derivepassphrase_exporter_cli.py     149)         self,
tests/test_derivepassphrase_exporter_cli.py     150)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 151)         caplog: pytest.LogCaptureFixture,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     152)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     153)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     154)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     155)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     156)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     157)             vault_config='',
tests/test_derivepassphrase_exporter_cli.py     158)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     159)         ):
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 160)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py 161)                 cli.derivepassphrase_export_vault,
Marco Ricci Move exporter command-line...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     162)                 ['.vault'],
tests/test_derivepassphrase_exporter_cli.py     163)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 164)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     165)         assert result.error_exit(
Marco Ricci Replace strings in `derivep...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 166)             error="Cannot parse '.vault' as a valid vault-native config",
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 167)             record_tuples=caplog.record_tuples,
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     168)         ), 'expected error exit and known error message'
tests/test_derivepassphrase_exporter_cli.py     169)         assert tests.CANNOT_LOAD_CRYPTOGRAPHY not in result.stderr
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     170) 
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 171)     def test_302a_vault_config_invalid_just_a_directory(
tests/test_derivepassphrase_cli_export_vault.py 172)         self,
tests/test_derivepassphrase_cli_export_vault.py 173)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_cli_export_vault.py 174)         caplog: pytest.LogCaptureFixture,
tests/test_derivepassphrase_cli_export_vault.py 175)     ) -> None:
tests/test_derivepassphrase_cli_export_vault.py 176)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_cli_export_vault.py 177)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_cli_export_vault.py 178)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_cli_export_vault.py 179)             runner=runner,
tests/test_derivepassphrase_cli_export_vault.py 180)             vault_config='',
tests/test_derivepassphrase_cli_export_vault.py 181)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_cli_export_vault.py 182)         ):
tests/test_derivepassphrase_cli_export_vault.py 183)             os.remove('.vault')
tests/test_derivepassphrase_cli_export_vault.py 184)             os.mkdir('.vault')
tests/test_derivepassphrase_cli_export_vault.py 185)             result_ = runner.invoke(
tests/test_derivepassphrase_cli_export_vault.py 186)                 cli.derivepassphrase_export_vault,
tests/test_derivepassphrase_cli_export_vault.py 187)                 ['.vault'],
tests/test_derivepassphrase_cli_export_vault.py 188)             )
tests/test_derivepassphrase_cli_export_vault.py 189)         result = tests.ReadableResult.parse(result_)
tests/test_derivepassphrase_cli_export_vault.py 190)         assert result.error_exit(
tests/test_derivepassphrase_cli_export_vault.py 191)             error="Cannot parse '.vault' as a valid vault-native config",
tests/test_derivepassphrase_cli_export_vault.py 192)             record_tuples=caplog.record_tuples,
tests/test_derivepassphrase_cli_export_vault.py 193)         ), 'expected error exit and known error message'
tests/test_derivepassphrase_cli_export_vault.py 194)         assert tests.CANNOT_LOAD_CRYPTOGRAPHY not in result.stderr
tests/test_derivepassphrase_cli_export_vault.py 195) 
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     196)     def test_403_invalid_vault_config_bad_signature(
tests/test_derivepassphrase_exporter_cli.py     197)         self,
tests/test_derivepassphrase_exporter_cli.py     198)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 199)         caplog: pytest.LogCaptureFixture,
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     200)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     201)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     202)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     203)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     204)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     205)             vault_config=tests.VAULT_V02_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     206)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     207)         ):
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 208)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py 209)                 cli.derivepassphrase_export_vault,
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     210)                 ['-f', 'v0.3', '.vault'],
tests/test_derivepassphrase_exporter_cli.py     211)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 212)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     213)         assert result.error_exit(
Marco Ricci Replace strings in `derivep...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 214)             error="Cannot parse '.vault' as a valid vault-native config",
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 215)             record_tuples=caplog.record_tuples,
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     216)         ), 'expected error exit and known error message'
tests/test_derivepassphrase_exporter_cli.py     217)         assert tests.CANNOT_LOAD_CRYPTOGRAPHY not in result.stderr
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     218) 
tests/test_derivepassphrase_exporter_cli.py     219)     def test_500_vault_config_invalid_internal(
tests/test_derivepassphrase_exporter_cli.py     220)         self,
tests/test_derivepassphrase_exporter_cli.py     221)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 222)         caplog: pytest.LogCaptureFixture,
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     223)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     224)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     225)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     226)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     227)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     228)             vault_config=tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     229)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     230)         ):
tests/test_derivepassphrase_exporter_cli.py     231) 
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 232)             def export_vault_config_data(*_args: Any, **_kwargs: Any) -> None:
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     233)                 return None
tests/test_derivepassphrase_exporter_cli.py     234) 
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 235)             monkeypatch.setattr(
tests/test_derivepassphrase_cli_export_vault.py 236)                 exporter,
tests/test_derivepassphrase_cli_export_vault.py 237)                 'export_vault_config_data',
tests/test_derivepassphrase_cli_export_vault.py 238)                 export_vault_config_data,
tests/test_derivepassphrase_cli_export_vault.py 239)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 240)             result_ = runner.invoke(
Marco Ricci Reintegrate all functionali...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_cli_export_vault.py 241)                 cli.derivepassphrase_export_vault,
Marco Ricci Test exporter data loading...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     242)                 ['.vault'],
tests/test_derivepassphrase_exporter_cli.py     243)             )
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 244)         result = tests.ReadableResult.parse(result_)
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     245)         assert result.error_exit(
Marco Ricci Adapt the test suite to use...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 246)             error='Invalid vault config: ',
tests/test_derivepassphrase_cli_export_vault.py 247)             record_tuples=caplog.record_tuples,
Marco Ricci Clean up testing machinery...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     248)         ), 'expected error exit and known error message'
tests/test_derivepassphrase_exporter_cli.py     249)         assert tests.CANNOT_LOAD_CRYPTOGRAPHY not in result.stderr
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     250) 
tests/test_derivepassphrase_exporter_cli.py     251) 
tests/test_derivepassphrase_exporter_cli.py     252) class TestStoreroom:
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 253)     @pytest.mark.parametrize('path', ['.vault', None])
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     254)     @pytest.mark.parametrize(
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 255)         'key',
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     256)         [
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 257)             None,
tests/test_derivepassphrase_cli_export_vault.py 258)             pytest.param(tests.VAULT_MASTER_KEY, id='str'),
tests/test_derivepassphrase_cli_export_vault.py 259)             pytest.param(tests.VAULT_MASTER_KEY.encode('ascii'), id='bytes'),
tests/test_derivepassphrase_cli_export_vault.py 260)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 261)                 bytearray(tests.VAULT_MASTER_KEY.encode('ascii')),
tests/test_derivepassphrase_cli_export_vault.py 262)                 id='bytearray',
tests/test_derivepassphrase_cli_export_vault.py 263)             ),
tests/test_derivepassphrase_cli_export_vault.py 264)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 265)                 memoryview(tests.VAULT_MASTER_KEY.encode('ascii')),
tests/test_derivepassphrase_cli_export_vault.py 266)                 id='memoryview',
tests/test_derivepassphrase_cli_export_vault.py 267)             ),
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     268)         ],
tests/test_derivepassphrase_exporter_cli.py     269)     )
tests/test_derivepassphrase_exporter_cli.py     270)     def test_200_export_data_path_and_keys_type(
tests/test_derivepassphrase_exporter_cli.py     271)         self,
tests/test_derivepassphrase_exporter_cli.py     272)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_exporter_cli.py     273)         path: str | None,
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 274)         key: str | Buffer | None,
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     275)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     276)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     277)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     278)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     279)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     280)             vault_config=tests.VAULT_STOREROOM_CONFIG_ZIPPED,
tests/test_derivepassphrase_exporter_cli.py     281)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     282)         ):
tests/test_derivepassphrase_exporter_cli.py     283)             assert (
tests/test_derivepassphrase_exporter_cli.py     284)                 storeroom.export_storeroom_data(path, key)
tests/test_derivepassphrase_exporter_cli.py     285)                 == tests.VAULT_STOREROOM_CONFIG_DATA
tests/test_derivepassphrase_exporter_cli.py     286)             )
tests/test_derivepassphrase_exporter_cli.py     287) 
tests/test_derivepassphrase_exporter_cli.py     288)     def test_400_decrypt_bucket_item_unknown_version(self) -> None:
tests/test_derivepassphrase_exporter_cli.py     289)         bucket_item = (
tests/test_derivepassphrase_exporter_cli.py     290)             b'\xff' + bytes(storeroom.ENCRYPTED_KEYPAIR_SIZE) + bytes(3)
tests/test_derivepassphrase_exporter_cli.py     291)         )
tests/test_derivepassphrase_exporter_cli.py     292)         master_keys: storeroom.MasterKeys = {
tests/test_derivepassphrase_exporter_cli.py     293)             'encryption_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     294)             'signing_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     295)             'hashing_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     296)         }
Marco Ricci Apply new ruff ruleset to c...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     297)         with pytest.raises(ValueError, match='Cannot handle version 255'):
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     298)             storeroom.decrypt_bucket_item(bucket_item, master_keys)
tests/test_derivepassphrase_exporter_cli.py     299) 
tests/test_derivepassphrase_exporter_cli.py     300)     @pytest.mark.parametrize('config', ['xxx', 'null', '{"version": 255}'])
tests/test_derivepassphrase_exporter_cli.py     301)     def test_401_decrypt_bucket_file_bad_json_or_version(
tests/test_derivepassphrase_exporter_cli.py     302)         self,
tests/test_derivepassphrase_exporter_cli.py     303)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_exporter_cli.py     304)         config: str,
tests/test_derivepassphrase_exporter_cli.py     305)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     306)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     307)         master_keys: storeroom.MasterKeys = {
tests/test_derivepassphrase_exporter_cli.py     308)             'encryption_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     309)             'signing_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     310)             'hashing_key': bytes(storeroom.KEY_SIZE),
tests/test_derivepassphrase_exporter_cli.py     311)         }
Marco Ricci Refactor code to run under...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 312)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_cli_export_vault.py 313)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_cli_export_vault.py 314)             runner=runner,
tests/test_derivepassphrase_cli_export_vault.py 315)             vault_config=tests.VAULT_STOREROOM_CONFIG_ZIPPED,
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     316)         ):
tests/test_derivepassphrase_exporter_cli.py     317)             with open('.vault/20', 'w', encoding='UTF-8') as outfile:
tests/test_derivepassphrase_exporter_cli.py     318)                 print(config, file=outfile)
Marco Ricci Apply new ruff ruleset to c...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     319)             with pytest.raises(ValueError, match='Invalid bucket file: '):
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     320)                 list(storeroom.decrypt_bucket_file('.vault/20', master_keys))
tests/test_derivepassphrase_exporter_cli.py     321) 
tests/test_derivepassphrase_exporter_cli.py     322)     @pytest.mark.parametrize(
tests/test_derivepassphrase_exporter_cli.py     323)         ['data', 'err_msg'],
tests/test_derivepassphrase_exporter_cli.py     324)         [
tests/test_derivepassphrase_exporter_cli.py     325)             ('{"version": 255}', 'bad or unsupported keys version header'),
tests/test_derivepassphrase_exporter_cli.py     326)             ('{"version": 1}\nAAAA\nAAAA', 'trailing data; cannot make sense'),
tests/test_derivepassphrase_exporter_cli.py     327)             ('{"version": 1}\nAAAA', 'cannot handle version 0 encrypted keys'),
tests/test_derivepassphrase_exporter_cli.py     328)         ],
tests/test_derivepassphrase_exporter_cli.py     329)     )
tests/test_derivepassphrase_exporter_cli.py     330)     def test_402_export_storeroom_data_bad_master_keys_file(
tests/test_derivepassphrase_exporter_cli.py     331)         self,
tests/test_derivepassphrase_exporter_cli.py     332)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_exporter_cli.py     333)         data: str,
tests/test_derivepassphrase_exporter_cli.py     334)         err_msg: str,
tests/test_derivepassphrase_exporter_cli.py     335)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     336)         runner = click.testing.CliRunner(mix_stderr=False)
Marco Ricci Refactor code to run under...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 337)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_cli_export_vault.py 338)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_cli_export_vault.py 339)             runner=runner,
tests/test_derivepassphrase_cli_export_vault.py 340)             vault_config=tests.VAULT_STOREROOM_CONFIG_ZIPPED,
tests/test_derivepassphrase_cli_export_vault.py 341)             vault_key=tests.VAULT_MASTER_KEY,
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     342)         ):
tests/test_derivepassphrase_exporter_cli.py     343)             with open('.vault/.keys', 'w', encoding='UTF-8') as outfile:
tests/test_derivepassphrase_exporter_cli.py     344)                 print(data, file=outfile)
tests/test_derivepassphrase_exporter_cli.py     345)             with pytest.raises(RuntimeError, match=err_msg):
tests/test_derivepassphrase_exporter_cli.py     346)                 storeroom.export_storeroom_data()
tests/test_derivepassphrase_exporter_cli.py     347) 
Marco Ricci Add remaining tests to the...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py 348)     @pytest.mark.parametrize(
tests/test_derivepassphrase_cli_export_vault.py 349)         ['zipped_config', 'error_text'],
tests/test_derivepassphrase_cli_export_vault.py 350)         [
tests/test_derivepassphrase_cli_export_vault.py 351)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 352)                 tests.VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED,
tests/test_derivepassphrase_cli_export_vault.py 353)                 'Object key mismatch',
tests/test_derivepassphrase_cli_export_vault.py 354)                 id='VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED',
tests/test_derivepassphrase_cli_export_vault.py 355)             ),
tests/test_derivepassphrase_cli_export_vault.py 356)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 357)                 tests.VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED2,
tests/test_derivepassphrase_cli_export_vault.py 358)                 'Directory index is not actually an index',
tests/test_derivepassphrase_cli_export_vault.py 359)                 id='VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED2',
tests/test_derivepassphrase_cli_export_vault.py 360)             ),
tests/test_derivepassphrase_cli_export_vault.py 361)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 362)                 tests.VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED3,
tests/test_derivepassphrase_cli_export_vault.py 363)                 'Directory index is not actually an index',
tests/test_derivepassphrase_cli_export_vault.py 364)                 id='VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED3',
tests/test_derivepassphrase_cli_export_vault.py 365)             ),
tests/test_derivepassphrase_cli_export_vault.py 366)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 367)                 tests.VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED4,
tests/test_derivepassphrase_cli_export_vault.py 368)                 'Object key mismatch',
tests/test_derivepassphrase_cli_export_vault.py 369)                 id='VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED4',
tests/test_derivepassphrase_cli_export_vault.py 370)             ),
tests/test_derivepassphrase_cli_export_vault.py 371)         ],
tests/test_derivepassphrase_cli_export_vault.py 372)     )
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     373)     def test_403_export_storeroom_data_bad_directory_listing(
tests/test_derivepassphrase_exporter_cli.py     374)         self,
tests/test_derivepassphrase_exporter_cli.py     375)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Add remaining tests to the...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py 376)         zipped_config: bytes,
tests/test_derivepassphrase_cli_export_vault.py 377)         error_text: str,
Marco Ricci Add more tests of the store...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     378)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     379)         runner = click.testing.CliRunner(mix_stderr=False)
Marco Ricci Refactor code to run under...

Marco Ricci authored 3 months ago

tests/test_derivepassphrase_cli_export_vault.py 380)         # Use parenthesized context manager expressions once Python 3.9
tests/test_derivepassphrase_cli_export_vault.py 381)         # becomes unsupported.
tests/test_derivepassphrase_cli_export_vault.py 382)         with contextlib.ExitStack() as stack:
tests/test_derivepassphrase_cli_export_vault.py 383)             stack.enter_context(
tests/test_derivepassphrase_cli_export_vault.py 384)                 tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_cli_export_vault.py 385)                     monkeypatch=monkeypatch,
tests/test_derivepassphrase_cli_export_vault.py 386)                     runner=runner,
tests/test_derivepassphrase_cli_export_vault.py 387)                     vault_config=zipped_config,
tests/test_derivepassphrase_cli_export_vault.py 388)                     vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_cli_export_vault.py 389)                 )
tests/test_derivepassphrase_cli_export_vault.py 390)             )
tests/test_derivepassphrase_cli_export_vault.py 391)             stack.enter_context(pytest.raises(RuntimeError, match=error_text))
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     392)             storeroom.export_storeroom_data()
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     393) 
Marco Ricci Add remaining tests to the...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py 394)     def test_404_decrypt_keys_wrong_data_length(self) -> None:
tests/test_derivepassphrase_cli_export_vault.py 395)         payload = (
Marco Ricci Update ruff to v0.8.x, refo...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 396)             b"Any text here, as long as it isn't exactly 64 or 96 bytes long."
Marco Ricci Add remaining tests to the...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py 397)         )
tests/test_derivepassphrase_cli_export_vault.py 398)         assert len(payload) not in frozenset({
tests/test_derivepassphrase_cli_export_vault.py 399)             2 * storeroom.KEY_SIZE,
tests/test_derivepassphrase_cli_export_vault.py 400)             3 * storeroom.KEY_SIZE,
tests/test_derivepassphrase_cli_export_vault.py 401)         })
tests/test_derivepassphrase_cli_export_vault.py 402)         key = b'DEADBEEFdeadbeefDeAdBeEfdEaDbEeF'
tests/test_derivepassphrase_cli_export_vault.py 403)         padder = padding.PKCS7(storeroom.IV_SIZE * 8).padder()
tests/test_derivepassphrase_cli_export_vault.py 404)         plaintext = bytearray(padder.update(payload))
tests/test_derivepassphrase_cli_export_vault.py 405)         plaintext.extend(padder.finalize())
tests/test_derivepassphrase_cli_export_vault.py 406)         iv = b'deadbeefDEADBEEF'
tests/test_derivepassphrase_cli_export_vault.py 407)         assert len(iv) == storeroom.IV_SIZE
tests/test_derivepassphrase_cli_export_vault.py 408)         encryptor = ciphers.Cipher(
tests/test_derivepassphrase_cli_export_vault.py 409)             algorithms.AES256(key), modes.CBC(iv)
tests/test_derivepassphrase_cli_export_vault.py 410)         ).encryptor()
tests/test_derivepassphrase_cli_export_vault.py 411)         ciphertext = bytearray(encryptor.update(plaintext))
tests/test_derivepassphrase_cli_export_vault.py 412)         ciphertext.extend(encryptor.finalize())
tests/test_derivepassphrase_cli_export_vault.py 413)         mac_obj = hmac.HMAC(key, hashes.SHA256())
tests/test_derivepassphrase_cli_export_vault.py 414)         mac_obj.update(iv)
tests/test_derivepassphrase_cli_export_vault.py 415)         mac_obj.update(ciphertext)
tests/test_derivepassphrase_cli_export_vault.py 416)         data = iv + bytes(ciphertext) + mac_obj.finalize()
tests/test_derivepassphrase_cli_export_vault.py 417)         with pytest.raises(
tests/test_derivepassphrase_cli_export_vault.py 418)             ValueError,
tests/test_derivepassphrase_cli_export_vault.py 419)             match=r'Invalid encrypted master keys payload',
tests/test_derivepassphrase_cli_export_vault.py 420)         ):
tests/test_derivepassphrase_cli_export_vault.py 421)             storeroom.decrypt_master_keys_data(
tests/test_derivepassphrase_cli_export_vault.py 422)                 data, {'encryption_key': key, 'signing_key': key}
tests/test_derivepassphrase_cli_export_vault.py 423)             )
tests/test_derivepassphrase_cli_export_vault.py 424)         with pytest.raises(
tests/test_derivepassphrase_cli_export_vault.py 425)             ValueError,
tests/test_derivepassphrase_cli_export_vault.py 426)             match=r'Invalid encrypted session keys payload',
tests/test_derivepassphrase_cli_export_vault.py 427)         ):
tests/test_derivepassphrase_cli_export_vault.py 428)             storeroom.decrypt_session_keys(
tests/test_derivepassphrase_cli_export_vault.py 429)                 data,
tests/test_derivepassphrase_cli_export_vault.py 430)                 {
tests/test_derivepassphrase_cli_export_vault.py 431)                     'hashing_key': key,
tests/test_derivepassphrase_cli_export_vault.py 432)                     'encryption_key': key,
tests/test_derivepassphrase_cli_export_vault.py 433)                     'signing_key': key,
tests/test_derivepassphrase_cli_export_vault.py 434)                 },
tests/test_derivepassphrase_cli_export_vault.py 435)             )
tests/test_derivepassphrase_cli_export_vault.py 436) 
Marco Ricci Trigger InvalidSignature ex...

Marco Ricci authored 5 months ago

tests/test_derivepassphrase_cli_export_vault.py 437)     @tests.hypothesis_settings_coverage_compatible
tests/test_derivepassphrase_cli_export_vault.py 438)     @hypothesis.given(
tests/test_derivepassphrase_cli_export_vault.py 439)         data=strategies.binary(
tests/test_derivepassphrase_cli_export_vault.py 440)             min_size=storeroom.MAC_SIZE, max_size=storeroom.MAC_SIZE
tests/test_derivepassphrase_cli_export_vault.py 441)         ),
tests/test_derivepassphrase_cli_export_vault.py 442)     )
tests/test_derivepassphrase_cli_export_vault.py 443)     def test_405_decrypt_keys_invalid_signature(self, data: bytes) -> None:
tests/test_derivepassphrase_cli_export_vault.py 444)         key = b'DEADBEEFdeadbeefDeAdBeEfdEaDbEeF'
tests/test_derivepassphrase_cli_export_vault.py 445)         # Guessing a correct payload plus MAC would be a pre-image
tests/test_derivepassphrase_cli_export_vault.py 446)         # attack on the underlying hash function (SHA-256), i.e. is
tests/test_derivepassphrase_cli_export_vault.py 447)         # computationally infeasible, and the chance of finding one by
tests/test_derivepassphrase_cli_export_vault.py 448)         # such random sampling is astronomically tiny.
tests/test_derivepassphrase_cli_export_vault.py 449)         with pytest.raises(cryptography.exceptions.InvalidSignature):
tests/test_derivepassphrase_cli_export_vault.py 450)             storeroom.decrypt_master_keys_data(
tests/test_derivepassphrase_cli_export_vault.py 451)                 data, {'encryption_key': key, 'signing_key': key}
tests/test_derivepassphrase_cli_export_vault.py 452)             )
tests/test_derivepassphrase_cli_export_vault.py 453)         with pytest.raises(cryptography.exceptions.InvalidSignature):
tests/test_derivepassphrase_cli_export_vault.py 454)             storeroom.decrypt_session_keys(
tests/test_derivepassphrase_cli_export_vault.py 455)                 data,
tests/test_derivepassphrase_cli_export_vault.py 456)                 {
tests/test_derivepassphrase_cli_export_vault.py 457)                     'hashing_key': key,
tests/test_derivepassphrase_cli_export_vault.py 458)                     'encryption_key': key,
tests/test_derivepassphrase_cli_export_vault.py 459)                     'signing_key': key,
tests/test_derivepassphrase_cli_export_vault.py 460)                 },
tests/test_derivepassphrase_cli_export_vault.py 461)             )
tests/test_derivepassphrase_cli_export_vault.py 462) 
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     463) 
tests/test_derivepassphrase_exporter_cli.py     464) class TestVaultNativeConfig:
tests/test_derivepassphrase_exporter_cli.py     465)     @pytest.mark.parametrize(
tests/test_derivepassphrase_exporter_cli.py     466)         ['iterations', 'result'],
tests/test_derivepassphrase_exporter_cli.py     467)         [
tests/test_derivepassphrase_exporter_cli.py     468)             (100, b'6ede361e81e9c061efcdd68aeb768b80'),
tests/test_derivepassphrase_exporter_cli.py     469)             (200, b'bcc7d01e075b9ffb69e702bf701187c1'),
tests/test_derivepassphrase_exporter_cli.py     470)         ],
tests/test_derivepassphrase_exporter_cli.py     471)     )
tests/test_derivepassphrase_exporter_cli.py     472)     def test_200_pbkdf2_manually(self, iterations: int, result: bytes) -> None:
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     473)         assert (
Marco Ricci Rename `vault_v03_and_below...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     474)             vault_native.VaultNativeConfigParser._pbkdf2(
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     475)                 tests.VAULT_MASTER_KEY.encode('utf-8'), 32, iterations
tests/test_derivepassphrase_exporter_cli.py     476)             )
tests/test_derivepassphrase_exporter_cli.py     477)             == result
tests/test_derivepassphrase_exporter_cli.py     478)         )
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     479) 
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 480)     @pytest.mark.parametrize(
tests/test_derivepassphrase_cli_export_vault.py 481)         ['config', 'format', 'result'],
tests/test_derivepassphrase_cli_export_vault.py 482)         [
tests/test_derivepassphrase_cli_export_vault.py 483)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 484)                 tests.VAULT_V02_CONFIG,
tests/test_derivepassphrase_cli_export_vault.py 485)                 'v0.2',
tests/test_derivepassphrase_cli_export_vault.py 486)                 tests.VAULT_V02_CONFIG_DATA,
tests/test_derivepassphrase_cli_export_vault.py 487)                 id='V02_CONFIG-v0.2',
tests/test_derivepassphrase_cli_export_vault.py 488)             ),
tests/test_derivepassphrase_cli_export_vault.py 489)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 490)                 tests.VAULT_V02_CONFIG,
tests/test_derivepassphrase_cli_export_vault.py 491)                 'v0.3',
tests/test_derivepassphrase_cli_export_vault.py 492)                 exporter.NotAVaultConfigError,
tests/test_derivepassphrase_cli_export_vault.py 493)                 id='V02_CONFIG-v0.3',
tests/test_derivepassphrase_cli_export_vault.py 494)             ),
tests/test_derivepassphrase_cli_export_vault.py 495)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 496)                 tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_cli_export_vault.py 497)                 'v0.2',
tests/test_derivepassphrase_cli_export_vault.py 498)                 exporter.NotAVaultConfigError,
tests/test_derivepassphrase_cli_export_vault.py 499)                 id='V03_CONFIG-v0.2',
tests/test_derivepassphrase_cli_export_vault.py 500)             ),
tests/test_derivepassphrase_cli_export_vault.py 501)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 502)                 tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_cli_export_vault.py 503)                 'v0.3',
tests/test_derivepassphrase_cli_export_vault.py 504)                 tests.VAULT_V03_CONFIG_DATA,
tests/test_derivepassphrase_cli_export_vault.py 505)                 id='V03_CONFIG-v0.3',
tests/test_derivepassphrase_cli_export_vault.py 506)             ),
tests/test_derivepassphrase_cli_export_vault.py 507)         ],
tests/test_derivepassphrase_cli_export_vault.py 508)     )
Marco Ricci Add vault_native exporter f...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     509)     def test_201_export_vault_native_data_no_arguments(
Marco Ricci Harmonize the interface for...

Marco Ricci authored 2 months ago

tests/test_derivepassphrase_cli_export_vault.py 510)         self,
tests/test_derivepassphrase_cli_export_vault.py 511)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_cli_export_vault.py 512)         config: str,
tests/test_derivepassphrase_cli_export_vault.py 513)         format: Literal['v0.2', 'v0.3'],
tests/test_derivepassphrase_cli_export_vault.py 514)         result: _types.VaultConfig | type[Exception],
tests/test_derivepassphrase_cli_export_vault.py 515)     ) -> None:
tests/test_derivepassphrase_cli_export_vault.py 516)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_cli_export_vault.py 517)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_cli_export_vault.py 518)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_cli_export_vault.py 519)             runner=runner,
tests/test_derivepassphrase_cli_export_vault.py 520)             vault_config=config,
tests/test_derivepassphrase_cli_export_vault.py 521)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_cli_export_vault.py 522)         ):
tests/test_derivepassphrase_cli_export_vault.py 523)             if isinstance(result, type):
tests/test_derivepassphrase_cli_export_vault.py 524)                 with pytest.raises(result):
tests/test_derivepassphrase_cli_export_vault.py 525)                     vault_native.export_vault_native_data(None, format=format)
tests/test_derivepassphrase_cli_export_vault.py 526)             else:
tests/test_derivepassphrase_cli_export_vault.py 527)                 parsed_config = vault_native.export_vault_native_data(
tests/test_derivepassphrase_cli_export_vault.py 528)                     None, format=format
tests/test_derivepassphrase_cli_export_vault.py 529)                 )
tests/test_derivepassphrase_cli_export_vault.py 530)                 assert parsed_config == result
tests/test_derivepassphrase_cli_export_vault.py 531) 
tests/test_derivepassphrase_cli_export_vault.py 532)     @pytest.mark.parametrize('path', ['.vault', None])
tests/test_derivepassphrase_cli_export_vault.py 533)     @pytest.mark.parametrize(
tests/test_derivepassphrase_cli_export_vault.py 534)         'key',
tests/test_derivepassphrase_cli_export_vault.py 535)         [
tests/test_derivepassphrase_cli_export_vault.py 536)             None,
tests/test_derivepassphrase_cli_export_vault.py 537)             pytest.param(tests.VAULT_MASTER_KEY, id='str'),
tests/test_derivepassphrase_cli_export_vault.py 538)             pytest.param(tests.VAULT_MASTER_KEY.encode('ascii'), id='bytes'),
tests/test_derivepassphrase_cli_export_vault.py 539)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 540)                 bytearray(tests.VAULT_MASTER_KEY.encode('ascii')),
tests/test_derivepassphrase_cli_export_vault.py 541)                 id='bytearray',
tests/test_derivepassphrase_cli_export_vault.py 542)             ),
tests/test_derivepassphrase_cli_export_vault.py 543)             pytest.param(
tests/test_derivepassphrase_cli_export_vault.py 544)                 memoryview(tests.VAULT_MASTER_KEY.encode('ascii')),
tests/test_derivepassphrase_cli_export_vault.py 545)                 id='memoryview',
tests/test_derivepassphrase_cli_export_vault.py 546)             ),
tests/test_derivepassphrase_cli_export_vault.py 547)         ],
tests/test_derivepassphrase_cli_export_vault.py 548)     )
tests/test_derivepassphrase_cli_export_vault.py 549)     def test_202_export_data_path_and_keys_type(
tests/test_derivepassphrase_cli_export_vault.py 550)         self,
tests/test_derivepassphrase_cli_export_vault.py 551)         monkeypatch: pytest.MonkeyPatch,
tests/test_derivepassphrase_cli_export_vault.py 552)         path: str | None,
tests/test_derivepassphrase_cli_export_vault.py 553)         key: str | Buffer | None,
Marco Ricci Add vault_native exporter f...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     554)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     555)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     556)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     557)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     558)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     559)             vault_config=tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     560)             vault_key=tests.VAULT_MASTER_KEY,
tests/test_derivepassphrase_exporter_cli.py     561)         ):
tests/test_derivepassphrase_exporter_cli.py     562)             parsed_config = vault_native.export_vault_native_data(None)
tests/test_derivepassphrase_exporter_cli.py     563)         assert parsed_config == tests.VAULT_V03_CONFIG_DATA
tests/test_derivepassphrase_exporter_cli.py     564) 
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     565)     @pytest.mark.parametrize(
tests/test_derivepassphrase_exporter_cli.py     566)         ['parser_class', 'config', 'result'],
tests/test_derivepassphrase_exporter_cli.py     567)         [
tests/test_derivepassphrase_exporter_cli.py     568)             pytest.param(
Marco Ricci Rename `vault_v03_and_below...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     569)                 vault_native.VaultNativeV02ConfigParser,
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     570)                 tests.VAULT_V02_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     571)                 tests.VAULT_V02_CONFIG_DATA,
tests/test_derivepassphrase_exporter_cli.py     572)                 id='0.2',
tests/test_derivepassphrase_exporter_cli.py     573)             ),
tests/test_derivepassphrase_exporter_cli.py     574)             pytest.param(
Marco Ricci Rename `vault_v03_and_below...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     575)                 vault_native.VaultNativeV03ConfigParser,
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     576)                 tests.VAULT_V03_CONFIG,
tests/test_derivepassphrase_exporter_cli.py     577)                 tests.VAULT_V03_CONFIG_DATA,
tests/test_derivepassphrase_exporter_cli.py     578)                 id='0.3',
tests/test_derivepassphrase_exporter_cli.py     579)             ),
tests/test_derivepassphrase_exporter_cli.py     580)         ],
tests/test_derivepassphrase_exporter_cli.py     581)     )
tests/test_derivepassphrase_exporter_cli.py     582)     def test_300_result_caching(
tests/test_derivepassphrase_exporter_cli.py     583)         self,
tests/test_derivepassphrase_exporter_cli.py     584)         monkeypatch: pytest.MonkeyPatch,
Marco Ricci Rename `vault_v03_and_below...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     585)         parser_class: type[vault_native.VaultNativeConfigParser],
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     586)         config: str,
tests/test_derivepassphrase_exporter_cli.py     587)         result: dict[str, Any],
tests/test_derivepassphrase_exporter_cli.py     588)     ) -> None:
tests/test_derivepassphrase_exporter_cli.py     589)         def null_func(name: str) -> Callable[..., None]:
tests/test_derivepassphrase_exporter_cli.py     590)             def func(*_args: Any, **_kwargs: Any) -> None:  # pragma: no cover
tests/test_derivepassphrase_exporter_cli.py     591)                 msg = f'disallowed and stubbed out function {name} called'
tests/test_derivepassphrase_exporter_cli.py     592)                 raise AssertionError(msg)
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     593) 
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     594)             return func
tests/test_derivepassphrase_exporter_cli.py     595) 
tests/test_derivepassphrase_exporter_cli.py     596)         runner = click.testing.CliRunner(mix_stderr=False)
tests/test_derivepassphrase_exporter_cli.py     597)         with tests.isolated_vault_exporter_config(
tests/test_derivepassphrase_exporter_cli.py     598)             monkeypatch=monkeypatch,
tests/test_derivepassphrase_exporter_cli.py     599)             runner=runner,
tests/test_derivepassphrase_exporter_cli.py     600)             vault_config=config,
tests/test_derivepassphrase_exporter_cli.py     601)         ):
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     602)             parser = parser_class(
tests/test_derivepassphrase_exporter_cli.py     603)                 base64.b64decode(config), tests.VAULT_MASTER_KEY
tests/test_derivepassphrase_exporter_cli.py     604)             )
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     605)             assert parser() == result
tests/test_derivepassphrase_exporter_cli.py     606)             # Now stub out all functions used to calculate the above result.
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     607)             monkeypatch.setattr(
tests/test_derivepassphrase_exporter_cli.py     608)                 parser, '_parse_contents', null_func('_parse_contents')
tests/test_derivepassphrase_exporter_cli.py     609)             )
tests/test_derivepassphrase_exporter_cli.py     610)             monkeypatch.setattr(
tests/test_derivepassphrase_exporter_cli.py     611)                 parser, '_derive_keys', null_func('_derive_keys')
tests/test_derivepassphrase_exporter_cli.py     612)             )
tests/test_derivepassphrase_exporter_cli.py     613)             monkeypatch.setattr(
tests/test_derivepassphrase_exporter_cli.py     614)                 parser, '_check_signature', null_func('_check_signature')
tests/test_derivepassphrase_exporter_cli.py     615)             )
tests/test_derivepassphrase_exporter_cli.py     616)             monkeypatch.setattr(
tests/test_derivepassphrase_exporter_cli.py     617)                 parser, '_decrypt_payload', null_func('_decrypt_payload')
tests/test_derivepassphrase_exporter_cli.py     618)             )
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     619)             assert parser() == result
Marco Ricci Rename `vault_v03_and_below...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     620)             super_call = vault_native.VaultNativeConfigParser.__call__
Marco Ricci Fix formatting and linting...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     621)             assert super_call(parser) == result
Marco Ricci Rename vault v0.2/v0.3 clas...

Marco Ricci authored 6 months ago

tests/test_derivepassphrase_exporter_cli.py     622) 
tests/test_derivepassphrase_exporter_cli.py     623)     def test_400_no_password(self) -> None:
tests/test_derivepassphrase_exporter_cli.py     624)         with pytest.raises(ValueError, match='Password must not be empty'):