Add preliminary tests for t...
Marco Ricci authored 3 weeks ago
|
17)
18)
19) class Test001ExporterUtils:
20) @pytest.mark.parametrize(
21) ['expected', 'vault_key', 'logname', 'user', 'username'],
22) [
23) ('4username', None, None, None, '4username'),
24) ('3user', None, None, '3user', None),
25) ('3user', None, None, '3user', '4username'),
26) ('2logname', None, '2logname', None, None),
27) ('2logname', None, '2logname', None, '4username'),
28) ('2logname', None, '2logname', '3user', None),
29) ('2logname', None, '2logname', '3user', '4username'),
30) ('1vault_key', '1vault_key', None, None, None),
31) ('1vault_key', '1vault_key', None, None, '4username'),
32) ('1vault_key', '1vault_key', None, '3user', None),
33) ('1vault_key', '1vault_key', None, '3user', '4username'),
34) ('1vault_key', '1vault_key', '2logname', None, None),
35) ('1vault_key', '1vault_key', '2logname', None, '4username'),
36) ('1vault_key', '1vault_key', '2logname', '3user', None),
37) ('1vault_key', '1vault_key', '2logname', '3user', '4username'),
38) ],
39) )
40) def test200_get_vault_key(
41) self,
42) monkeypatch: pytest.MonkeyPatch,
43) expected: str,
44) vault_key: str | None,
45) logname: str | None,
46) user: str | None,
47) username: str | None,
48) ) -> None:
49) priority_list = [
50) ('VAULT_KEY', vault_key),
51) ('LOGNAME', logname),
52) ('USER', user),
53) ('USERNAME', username),
54) ]
55) runner = click.testing.CliRunner(mix_stderr=False)
56) with tests.isolated_vault_exporter_config(
57) monkeypatch=monkeypatch, runner=runner
58) ):
59) for key, value in priority_list:
60) if value is not None:
61) monkeypatch.setenv(key, value)
62) assert os.fsdecode(exporter.get_vault_key()) == expected
63)
64) @pytest.mark.parametrize(
65) ['expected', 'path'],
66) [
67) ('/tmp', '/tmp'),
68) ('~', os.path.curdir),
69) ('~/.vault', None),
70) ],
71) )
72) def test_210_get_vault_path(
73) self,
74) monkeypatch: pytest.MonkeyPatch,
75) expected: str,
76) path: str | None,
77) ) -> None:
78) runner = click.testing.CliRunner(mix_stderr=False)
79) with tests.isolated_vault_exporter_config(
80) monkeypatch=monkeypatch, runner=runner
81) ):
82) if path:
83) monkeypatch.setenv('VAULT_PATH', path)
84) assert os.fsdecode(
85) os.path.realpath(exporter.get_vault_path())
86) ) == os.path.realpath(os.path.expanduser(expected))
87)
88) def test_300_get_vault_key_without_envs(
89) self, monkeypatch: pytest.MonkeyPatch
90) ) -> None:
91) monkeypatch.delenv('VAULT_KEY', raising=False)
92) monkeypatch.delenv('LOGNAME', raising=False)
93) monkeypatch.delenv('USER', raising=False)
94) monkeypatch.delenv('USERNAME', raising=False)
95) with pytest.raises(KeyError, match='VAULT_KEY'):
96) exporter.get_vault_key()
97)
98) def test_310_get_vault_path_without_home(
99) self, monkeypatch: pytest.MonkeyPatch
100) ) -> None:
101) monkeypatch.setattr(os.path, 'expanduser', lambda x: x)
102) with pytest.raises(
103) RuntimeError, match='[Cc]annot determine home directory'
104) ):
105) exporter.get_vault_path()
106)
107)
108) class Test002CLI:
109) def test_300_invalid_format(
110) self,
111) monkeypatch: pytest.MonkeyPatch,
112) ) -> None:
113) runner = click.testing.CliRunner(mix_stderr=False)
114) with tests.isolated_vault_exporter_config(
115) monkeypatch=monkeypatch,
116) runner=runner,
|