Update copyright notices to...
Marco Ricci authored 2 months ago
|
1) # SPDX-FileCopyrightText: 2025 Marco Ricci <software@the13thletter.info>
|
Import initial project files
Marco Ricci authored 10 months ago
|
2) #
|
Update copyright notices to...
Marco Ricci authored 2 months ago
|
3) # SPDX-License-Identifier: Zlib
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
4)
5) from __future__ import annotations
6)
7) import base64
8) import contextlib
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
9) import copy
|
Add test fixture for manual...
Marco Ricci authored 5 months ago
|
10) import enum
|
Test exporter data loading...
Marco Ricci authored 6 months ago
|
11) import importlib.util
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
12) import json
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
13) import logging
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
14) import os
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
15) import re
|
Add test fixture for manual...
Marco Ricci authored 5 months ago
|
16) import shlex
|
Add missing tests for rewor...
Marco Ricci authored 6 months ago
|
17) import stat
|
Centralize settings for hyp...
Marco Ricci authored 5 months ago
|
18) import sys
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
19) import tempfile
20) import zipfile
|
Support Python 3.10 and PyP...
Marco Ricci authored 8 months ago
|
21) from typing import TYPE_CHECKING
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
22)
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
23) import hypothesis
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
24) import pytest
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
25) from hypothesis import strategies
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
26) from typing_extensions import NamedTuple, Self, assert_never
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
27)
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
28) from derivepassphrase import _types, cli, ssh_agent, vault
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
29)
30) __all__ = ()
31)
32) if TYPE_CHECKING:
|
Fix user interface errors i...
Marco Ricci authored 3 months ago
|
33) import socket
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
34) from collections.abc import Callable, Iterator, Mapping, Sequence
|
Fix usage of `mypy --python...
Marco Ricci authored 2 months ago
|
35) from contextlib import AbstractContextManager
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
36)
37) import click.testing
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
38) from typing_extensions import Any
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
39)
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
40)
41) class SSHTestKey(NamedTuple):
42) public_key: bytes | str
43) public_key_data: bytes
44) private_key: bytes
45) private_key_blob: bytes | None = None
46) expected_signature: bytes | None = None
47) derived_passphrase: bytes | str | None = None
48)
49) def is_suitable(self) -> bool:
50) return vault.Vault.is_suitable_ssh_key(self.public_key_data)
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
51)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
52)
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
53) class ValidationSettings(NamedTuple):
54) allow_unknown_settings: bool
55)
56)
57) class VaultTestConfig(NamedTuple):
58) config: Any
59) comment: str
60) validation_settings: ValidationSettings | None
61)
62)
63) TEST_CONFIGS: list[VaultTestConfig] = [
64) VaultTestConfig(None, 'not a dict', None),
65) VaultTestConfig({}, 'missing required keys', None),
66) VaultTestConfig(
67) {'global': None, 'services': {}}, 'bad config value: global', None
68) ),
69) VaultTestConfig(
70) {'global': {'key': 123}, 'services': {}},
71) 'bad config value: global.key',
72) None,
73) ),
74) VaultTestConfig(
75) {'global': {'phrase': 'abc', 'key': '...'}, 'services': {}},
76) '',
77) None,
78) ),
79) VaultTestConfig({'services': None}, 'bad config value: services', None),
80) VaultTestConfig(
81) {'services': {'1': {}, 2: {}}}, 'bad config value: services."2"', None
82) ),
83) VaultTestConfig(
84) {'services': {'1': {}, '2': 2}}, 'bad config value: services."2"', None
85) ),
86) VaultTestConfig(
87) {'services': {'sv': {'notes': ['sentinel', 'list']}}},
88) 'bad config value: services.sv.notes',
89) None,
90) ),
91) VaultTestConfig(
92) {'services': {'sv': {'notes': 'blah blah blah'}}}, '', None
93) ),
94) VaultTestConfig(
95) {'services': {'sv': {'length': '200'}}},
96) 'bad config value: services.sv.length',
97) None,
98) ),
99) VaultTestConfig(
100) {'services': {'sv': {'length': 0.5}}},
101) 'bad config value: services.sv.length',
102) None,
103) ),
104) VaultTestConfig(
105) {'services': {'sv': {'length': ['sentinel', 'list']}}},
106) 'bad config value: services.sv.length',
107) None,
108) ),
109) VaultTestConfig(
110) {'services': {'sv': {'length': -10}}},
111) 'bad config value: services.sv.length',
112) None,
113) ),
114) VaultTestConfig(
115) {'services': {'sv': {'lower': '10'}}},
116) 'bad config value: services.sv.lower',
117) None,
118) ),
119) VaultTestConfig(
120) {'services': {'sv': {'upper': -10}}},
121) 'bad config value: services.sv.upper',
122) None,
123) ),
124) VaultTestConfig(
125) {'services': {'sv': {'number': ['sentinel', 'list']}}},
126) 'bad config value: services.sv.number',
127) None,
128) ),
129) VaultTestConfig(
130) {
131) 'global': {'phrase': 'my secret phrase'},
132) 'services': {'sv': {'length': 10}},
133) },
134) '',
135) None,
136) ),
137) VaultTestConfig(
138) {'services': {'sv': {'length': 10, 'phrase': '...'}}}, '', None
139) ),
140) VaultTestConfig(
141) {'services': {'sv': {'length': 10, 'key': '...'}}}, '', None
142) ),
143) VaultTestConfig(
144) {'services': {'sv': {'upper': 10, 'key': '...'}}}, '', None
145) ),
146) VaultTestConfig(
147) {'services': {'sv': {'phrase': 'abc', 'key': '...'}}}, '', None
148) ),
149) VaultTestConfig(
150) {
151) 'global': {'phrase': 'abc'},
152) 'services': {'sv': {'phrase': 'abc', 'length': 10}},
153) },
154) '',
155) None,
156) ),
157) VaultTestConfig(
158) {
159) 'global': {'key': '...'},
160) 'services': {'sv': {'phrase': 'abc', 'length': 10}},
161) },
162) '',
163) None,
164) ),
|
Fix missing consideration o...
Marco Ricci authored 5 months ago
|
165) VaultTestConfig(
166) {
167) 'global': {'key': '...'},
168) 'services': {'sv': {'phrase': 'abc', 'key': '...', 'length': 10}},
169) },
170) '',
171) None,
172) ),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
173) VaultTestConfig(
174) {
175) 'global': {'key': '...'},
176) 'services': {
177) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
178) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
179) },
180) },
181) '',
182) None,
183) ),
184) VaultTestConfig(
185) {
186) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
187) 'services': {
188) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
189) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
190) },
191) },
192) '',
193) None,
194) ),
195) VaultTestConfig(
196) {
197) 'global': {'key': '...', 'unicode_normalization_form': True},
198) 'services': {},
199) },
200) 'bad config value: global.unicode_normalization_form',
201) None,
202) ),
203) VaultTestConfig(
204) {
205) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
206) 'services': {
207) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
208) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
209) },
210) },
211) '',
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
212) ValidationSettings(True),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
213) ),
214) VaultTestConfig(
215) {
216) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
217) 'services': {
218) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
219) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
220) },
221) },
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
222) 'extension/unknown key: .global.unicode_normalization_form',
223) ValidationSettings(False),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
224) ),
225) VaultTestConfig(
226) {
227) 'global': {'key': '...', 'unknown_key': True},
228) 'services': {
229) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
230) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
231) },
232) },
233) '',
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
234) ValidationSettings(True),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
235) ),
236) VaultTestConfig(
237) {
238) 'global': {'key': '...', 'unknown_key': True},
239) 'services': {
240) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
241) 'sv2': {'length': 10, 'repeat': 1, 'lower': 1},
242) },
243) },
244) 'unknown key: .global.unknown_key',
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
245) ValidationSettings(False),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
246) ),
247) VaultTestConfig(
248) {
249) 'global': {'key': '...'},
250) 'services': {
251) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
252) 'sv2': {
253) 'length': 10,
254) 'repeat': 1,
255) 'lower': 1,
256) 'unknown_key': True,
257) },
258) },
259) },
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
260) 'unknown key: .services.sv2.unknown_key',
261) ValidationSettings(False),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
262) ),
263) VaultTestConfig(
264) {
265) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
266) 'services': {
267) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
268) 'sv2': {
269) 'length': 10,
270) 'repeat': 1,
271) 'lower': 1,
272) 'unknown_key': True,
273) },
274) },
275) },
276) '',
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
277) ValidationSettings(True),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
278) ),
279) VaultTestConfig(
280) {
281) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
282) 'services': {
283) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
284) 'sv2': {
285) 'length': 10,
286) 'repeat': 1,
287) 'lower': 1,
288) 'unknown_key': True,
289) },
290) },
291) },
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
292) '',
293) ValidationSettings(True),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
294) ),
295) VaultTestConfig(
296) {
297) 'global': {'key': '...', 'unicode_normalization_form': 'NFC'},
298) 'services': {
299) 'sv1': {'phrase': 'abc', 'length': 10, 'upper': 1},
300) 'sv2': {
301) 'length': 10,
302) 'repeat': 1,
303) 'lower': 1,
304) 'unknown_key': True,
305) },
306) },
307) },
|
Retire `allow_derivepassphr...
Marco Ricci authored 2 months ago
|
308) '',
309) ValidationSettings(True),
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
310) ),
311) ]
312)
313)
314) def is_valid_test_config(conf: VaultTestConfig, /) -> bool:
315) """Return true if the test config is valid.
316)
317) Args:
318) conf: The test config to check.
319)
320) """
321) return not conf.comment and conf.validation_settings in {
322) None,
323) (True, True),
324) }
325)
326)
327) def _test_config_ids(val: VaultTestConfig) -> Any: # pragma: no cover
328) """pytest id function for VaultTestConfig objects."""
329) assert isinstance(val, VaultTestConfig)
330) return val[1] or (val[0], val[1], val[2])
331)
332)
|
Move vault service config g...
Marco Ricci authored 5 months ago
|
333) @strategies.composite
334) def vault_full_service_config(draw: strategies.DrawFn) -> dict[str, int]:
|
Overhaul the state machine...
Marco Ricci authored 3 months ago
|
335) repeat = draw(strategies.integers(min_value=0, max_value=10))
|
Move vault service config g...
Marco Ricci authored 5 months ago
|
336) lower = draw(strategies.integers(min_value=0, max_value=10))
337) upper = draw(strategies.integers(min_value=0, max_value=10))
338) number = draw(strategies.integers(min_value=0, max_value=10))
|
Overhaul the state machine...
Marco Ricci authored 3 months ago
|
339) space = draw(strategies.integers(min_value=0, max_value=repeat))
|
Move vault service config g...
Marco Ricci authored 5 months ago
|
340) dash = draw(strategies.integers(min_value=0, max_value=10))
341) symbol = draw(strategies.integers(min_value=0, max_value=10))
342) length = draw(
343) strategies.integers(
344) min_value=max(1, lower + upper + number + space + dash + symbol),
345) max_value=70,
346) )
347) )
348) hypothesis.assume(lower + upper + number + dash + symbol > 0)
349) hypothesis.assume(lower + upper + number + space + symbol > 0)
350) hypothesis.assume(repeat >= space)
351) return {
352) 'lower': lower,
353) 'upper': upper,
354) 'number': number,
355) 'space': space,
356) 'dash': dash,
357) 'symbol': symbol,
358) 'repeat': repeat,
359) 'length': length,
360) }
361)
362)
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
363) def is_smudgable_vault_test_config(conf: VaultTestConfig) -> bool:
364) """Check whether this vault test config can be effectively smudged.
365)
366) A "smudged" test config is one where falsy values (in the JavaScript
367) sense) can be replaced by other falsy values without changing the
368) meaning of the config.
369)
370) Args:
371) conf: A test config to check.
372)
373) Returns:
374) True if the test config can be smudged, False otherwise.
375)
376) """
377) config = conf.config
378) return bool(
379) isinstance(config, dict)
380) and ('global' not in config or isinstance(config['global'], dict))
381) and ('services' in config and isinstance(config['services'], dict))
382) and all(isinstance(x, dict) for x in config['services'].values())
383) and (config['services'] or config.get('global'))
384) )
385)
386)
387) @strategies.composite
388) def smudged_vault_test_config(
389) draw: strategies.DrawFn,
390) config: Any = strategies.sampled_from(TEST_CONFIGS).filter( # noqa: B008
391) is_smudgable_vault_test_config
392) ),
393) ) -> Any:
394) """Hypothesis strategy to replace falsy values with other falsy values.
395)
396) Uses [`_types.js_truthiness`][] internally, which is tested
397) separately by
398) [`tests.test_derivepassphrase_types.test_100_js_truthiness`][].
399)
400) Args:
401) draw:
402) The hypothesis draw function.
403) config:
404) A strategy which generates [`VaultTestConfig`][] objects.
405)
406) Returns:
407) A new [`VaultTestConfig`][] where some falsy values have been
408) replaced or added.
409)
410) """
411)
412) falsy = (None, False, 0, 0.0, '', float('nan'))
413) falsy_no_str = (None, False, 0, 0.0, float('nan'))
414) falsy_no_zero = (None, False, '', float('nan'))
415) conf = draw(config)
416) hypothesis.assume(is_smudgable_vault_test_config(conf))
417) obj = copy.deepcopy(conf.config)
418) services: list[dict[str, Any]] = list(obj['services'].values())
419) if 'global' in obj:
420) services.append(obj['global'])
421) assert all(isinstance(x, dict) for x in services), (
422) 'is_smudgable_vault_test_config guard failed to '
423) 'ensure each setings dict is a dict'
424) )
425) for service in services:
426) for key in ('phrase',):
427) value = service.get(key)
428) if not _types.js_truthiness(value) and value != '':
429) service[key] = draw(strategies.sampled_from(falsy_no_str))
430) for key in (
431) 'notes',
432) 'key',
433) 'length',
434) 'repeat',
435) ):
436) value = service.get(key)
437) if not _types.js_truthiness(value):
438) service[key] = draw(strategies.sampled_from(falsy))
439) for key in (
440) 'lower',
441) 'upper',
442) 'number',
443) 'space',
444) 'dash',
445) 'symbol',
446) ):
447) value = service.get(key)
448) if not _types.js_truthiness(value) and value != 0:
449) service[key] = draw(strategies.sampled_from(falsy_no_zero))
450) hypothesis.assume(obj != conf.config)
451) return VaultTestConfig(obj, conf.comment, conf.validation_settings)
452)
453)
|
Add test fixture for manual...
Marco Ricci authored 5 months ago
|
454) class KnownSSHAgent(str, enum.Enum):
455) UNKNOWN: str = '(unknown)'
456) Pageant: str = 'Pageant'
457) OpenSSHAgent: str = 'OpenSSHAgent'
458)
459)
460) class SpawnedSSHAgentInfo(NamedTuple):
461) agent_type: KnownSSHAgent
462) client: ssh_agent.SSHAgentClient
463) isolated: bool
464)
465)
|
Let the `running_ssh_agent`...
Marco Ricci authored 3 months ago
|
466) class RunningSSHAgentInfo(NamedTuple):
467) socket: str
468) agent_type: KnownSSHAgent
469)
470)
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
471) ALL_KEYS: Mapping[str, SSHTestKey] = {
472) 'ed25519': SSHTestKey(
473) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
474) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
475) QyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdgAAAKDweO7H8Hju
476) xwAAAAtzc2gtZWQyNTUxOQAAACCBeIFoJtYCSF8P/zJIb+TBMIncHGpFBgnpCQ/7whJpdg
477) AAAEAbM/A869nkWZbe2tp3Dm/L6gitvmpH/aRZt8sBII3ExYF4gWgm1gJIXw//Mkhv5MEw
478) idwcakUGCekJD/vCEml2AAAAG3Rlc3Qga2V5IHdpdGhvdXQgcGFzc3BocmFzZQEC
479) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
480) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
481) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
482) 00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
483) 00 00 00 20
484) 81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
485) 30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
486) 00 00 00 40
487) 1b 33 f0 3c eb d9 e4 59 96 de da da 77 0e 6f cb
488) ea 08 ad be 6a 47 fd a4 59 b7 cb 01 20 8d c4 c5
489) 81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
490) 30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
491) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69 74
492) 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
493) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
494) public_key=rb"""ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIF4gWgm1gJIXw//Mkhv5MEwidwcakUGCekJD/vCEml2 test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
495) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
496) public_key_data=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
497) 00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
498) 00 00 00 20
499) 81 78 81 68 26 d6 02 48 5f 0f ff 32 48 6f e4 c1
500) 30 89 dc 1c 6a 45 06 09 e9 09 0f fb c2 12 69 76
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
501) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
502) expected_signature=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
503) 00 00 00 0b 73 73 68 2d 65 64 32 35 35 31 39
504) 00 00 00 40
505) f0 98 19 80 6c 1a 97 d5 26 03 6e cc e3 65 8f 86
506) 66 07 13 19 13 09 21 33 33 f9 e4 36 53 1d af fd
507) 0d 08 1f ec f8 73 9b 8c 5f 55 39 16 7c 53 54 2c
508) 1e 52 bb 30 ed 7f 89 e2 2f 69 51 55 d8 9e a6 02
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
509) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
510) derived_passphrase=rb'8JgZgGwal9UmA27M42WPhmYHExkTCSEzM/nkNlMdr/0NCB/s+HObjF9VORZ8U1QsHlK7MO1/ieIvaVFV2J6mAg==',
511) ),
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
512) # Currently only supported by PuTTY (which is deficient in other
513) # niceties of the SSH agent and the agent's client).
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
514) 'ed448': SSHTestKey(
515) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
516) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAAAlz
517) c2gtZWQ0NDgAAAA54vZy009Wu8wExjvEb3hqtLz1GO/+d5vmGUbErWQ4AUO9mYLT
518) zHJHc2m4s+yWzP29Cc3EcxizLG8AAAAA8BdhfCcXYXwnAAAACXNzaC1lZDQ0OAAA
519) ADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM
520) /b0JzcRzGLMsbwAAAAByM7GIMRvWJB3YD6SIpAF2uudX4ozZe0X917wPwiBrs373
521) 9TM1n94Nib6hrxGNmCk2iBQDe2KALPgA4vZy009Wu8wExjvEb3hqtLz1GO/+d5vm
522) GUbErWQ4AUO9mYLTzHJHc2m4s+yWzP29Cc3EcxizLG8AAAAAG3Rlc3Qga2V5IHdp
523) dGhvdXQgcGFzc3BocmFzZQECAwQFBgcICQ==
524) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
525) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
526) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
527) 00 00 00 09 73 73 68 2d 65 64 34 34 38
528) 00 00 00 39 e2 f6 72 d3 4f 56 bb cc 04
529) c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
530) 46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
531) b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
532) 00 00 00 72 33 b1
533) 88 31 1b d6 24 1d d8 0f a4 88 a4 01 76 ba e7 57
534) e2 8c d9 7b 45 fd d7 bc 0f c2 20 6b b3 7e f7 f5
535) 33 35 9f de 0d 89 be a1 af 11 8d 98 29 36 88 14
536) 03 7b 62 80 2c f8 00 e2 f6 72 d3 4f 56 bb cc 04
537) c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
538) 46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
539) b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
540) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
541) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
542) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
543) public_key=rb"""ssh-ed448 AAAACXNzaC1lZDQ0OAAAADni9nLTT1a7zATGO8RveGq0vPUY7/53m+YZRsStZDgBQ72ZgtPMckdzabiz7JbM/b0JzcRzGLMsbwA= test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
544) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
545) public_key_data=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
546) 00 00 00 09 73 73 68 2d 65 64 34 34 38
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
547) 00 00 00 39 e2 f6 72 d3 4f 56 bb cc 04
548) c6 3b c4 6f 78 6a b4 bc f5 18 ef fe 77 9b e6 19
549) 46 c4 ad 64 38 01 43 bd 99 82 d3 cc 72 47 73 69
550) b8 b3 ec 96 cc fd bd 09 cd c4 73 18 b3 2c 6f 00
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
551) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
552) expected_signature=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
553) 00 00 00 09 73 73 68 2d 65 64 34 34 38
554) 00 00 00 72 06 86
555) f4 64 a4 a6 ba d9 c3 22 c4 93 49 99 fc 11 de 67
556) 97 08 f2 d8 b7 3c 2c 13 e7 c5 1c 1e 92 a6 0e d8
557) 2f 6d 81 03 82 00 e3 72 e4 32 6d 72 d2 6d 32 84
558) 3f cc a9 1e 57 2c 00 9a b3 99 de 45 da ce 2e d1
559) db e5 89 f3 35 be 24 58 90 c6 ca 04 f0 db 88 80
560) db bd 77 7c 80 20 7f 3a 48 61 f6 1f ae a9 5e 53
561) 7b e0 9d 93 1e ea dc eb b5 cd 56 4c ea 8f 08 00
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
562) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
563) derived_passphrase=rb'Bob0ZKSmutnDIsSTSZn8Ed5nlwjy2Lc8LBPnxRwekqYO2C9tgQOCAONy5DJtctJtMoQ/zKkeVywAmrOZ3kXazi7R2+WJ8zW+JFiQxsoE8NuIgNu9d3yAIH86SGH2H66pXlN74J2THurc67XNVkzqjwgA',
564) ),
565) 'rsa': SSHTestKey(
566) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
567) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
568) NhAAAAAwEAAQAAAYEAsaHu6Xs4cVsuDSNJlMCqoPVgmDgEviI8TfXmHKqX3JkIqI3LsvV7
569) Ijf8WCdTveEq7CkuZhImtsR52AOEVAoU8mDXDNr+nJ5wUPzf1UIaRjDe0lcXW4SlF01hQs
570) G4wYDuqxshwelraB/L3e0zhD7fjYHF8IbFsqGlFHWEwOtlfhhfbxJsTGguLm4A8/gdEJD5
571) 2rkqDcZpIXCHtJbCzW9aQpWcs/PDw5ylwl/3dB7jfxyfrGz4O3QrzsqhWEsip97mOmwl6q
572) CHbq8V8x9zu89D/H+bG5ijqxhijbjcVUW3lZfw/97gy9J6rG31HNar5H8GycLTFwuCFepD
573) mTEpNgQLKoe8ePIEPq4WHhFUovBdwlrOByUKKqxreyvWt5gkpTARz+9Lt8OjBO3rpqK8sZ
574) VKH3sE3de2RJM3V9PJdmZSs2b8EFK3PsUGdlMPM9pn1uk4uIItKWBmooOynuD8Ll6aPwuW
575) AFn3l8nLLyWdrmmEYzHWXiRjQJxy1Bi5AbHMOWiPAAAFkDPkuBkz5LgZAAAAB3NzaC1yc2
576) EAAAGBALGh7ul7OHFbLg0jSZTAqqD1YJg4BL4iPE315hyql9yZCKiNy7L1eyI3/FgnU73h
577) KuwpLmYSJrbEedgDhFQKFPJg1wza/pyecFD839VCGkYw3tJXF1uEpRdNYULBuMGA7qsbIc
578) Hpa2gfy93tM4Q+342BxfCGxbKhpRR1hMDrZX4YX28SbExoLi5uAPP4HRCQ+dq5Kg3GaSFw
579) h7SWws1vWkKVnLPzw8OcpcJf93Qe438cn6xs+Dt0K87KoVhLIqfe5jpsJeqgh26vFfMfc7
580) vPQ/x/mxuYo6sYYo243FVFt5WX8P/e4MvSeqxt9RzWq+R/BsnC0xcLghXqQ5kxKTYECyqH
581) vHjyBD6uFh4RVKLwXcJazgclCiqsa3sr1reYJKUwEc/vS7fDowTt66aivLGVSh97BN3Xtk
582) STN1fTyXZmUrNm/BBStz7FBnZTDzPaZ9bpOLiCLSlgZqKDsp7g/C5emj8LlgBZ95fJyy8l
583) na5phGMx1l4kY0CcctQYuQGxzDlojwAAAAMBAAEAAAF/cNVYT+Om4x9+SItcz5bOByGIOj
584) yWUH8f9rRjnr5ILuwabIDgvFaVG+xM1O1hWADqzMnSEcknHRkTYEsqYPykAtxFvjOFEh70
585) 6qRUJ+fVZkqRGEaI3oWyWKTOhcCIYImtONvb0LOv/HQ2H2AXCoeqjST1qr/xSuljBtcB8u
586) wxs3EqaO1yU7QoZpDcMX9plH7Rmc9nNfZcgrnktPk2deX2+Y/A5tzdVgG1IeqYp6CBMLNM
587) uhL0OPdDehgBoDujx+rhkZ1gpo1wcULIM94NL7VSHBPX0Lgh9T+3j1HVP+YnMAvhfOvfct
588) LlbJ06+TYGRAMuF2LPCAZM/m0FEyAurRgWxAjLXm+4kp2GAJXlw82deDkQ+P8cHNT6s9ZH
589) R5YSy3lpZ35594ZMOLR8KqVvhgJGF6i9019BiF91SDxjE+sp6dNGfN8W+64tHdDv2a0Mso
590) +8Qjyx7sTpi++EjLU8Iy73/e4B8qbXMyheyA/UUfgMtNKShh6sLlrD9h2Sm9RFTuEAAADA
591) Jh3u7WfnjhhKZYbAW4TsPNXDMrB0/t7xyAQgFmko7JfESyrJSLg1cO+QMOiDgD7zuQ9RSp
592) NIKdPsnIna5peh979mVjb2HgnikjyJECmBpLdwZKhX7MnIvgKw5lnQXHboEtWCa1N58l7f
593) srzwbi9pFUuUp9dShXNffmlUCjDRsVLbK5C6+iaIQyCWFYK8mc6dpNkIoPKf+Xg+EJCIFQ
594) oITqeu30Gc1+M+fdZc2ghq0b6XLthh/uHEry8b68M5KglMAAAAwQDw1i+IdcvPV/3u/q9O
595) /kzLpKO3tbT89sc1zhjZsDNjDAGluNr6n38iq/XYRZu7UTL9BG+EgFVfIUV7XsYT5e+BPf
596) 13VS94rzZ7maCsOlULX+VdMO2zBucHIoec9RUlRZrfB21B2W7YGMhbpoa5lN3lKJQ7afHo
597) dXZUMp0cTFbOmbzJgSzO2/NE7BhVwmvcUzTDJGMMKuxBO6w99YKDKRKm0PNLFDz26rWm9L
598) dNS2MVfVuPMTpzT26HQG4pFageq9cAAADBALzRBXdZF8kbSBa5MTUBVTTzgKQm1C772gJ8
599) T01DJEXZsVtOv7mUC1/m/by6Hk4tPyvDBuGj9hHq4N7dPqGutHb1q5n0ADuoQjRW7BXw5Q
600) vC2EAD91xexdorIA5BgXU+qltBqzzBVzVtF7+jOZOjfzOlaTX9I5I5veyeTaTxZj1XXUzi
601) btBNdMEJJp7ifucYmoYAAwE7K+VlWagDEK2y8Mte9y9E+N0uO2j+h85sQt/UIb2iE/vhcg
602) Bgp6142WnSCQAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UB
603) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
604) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
605) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
606) 00 00 00 07 73 73 68 2d 72 73 61
607) 00 00 01 81 00
608) b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
609) f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
610) 08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
611) ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
612) 60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
613) de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
614) ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
615) 81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
616) 5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
617) da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
618) 95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
619) 9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
620) 3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
621) 7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
622) f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
623) c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
624) 87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
625) ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
626) cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
627) 7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
628) fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
629) b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
630) 0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
631) d6 5e 24 63 40 9c 72 d4 18 b9 01 b1 cc 39 68 8f
632) 00 00 00 03 01 00 01
633) 00 00 01 7f
634) 70 d5 58 4f e3 a6 e3 1f 7e 48 8b 5c cf 96 ce
635) 07 21 88 3a 3c 96 50 7f 1f f6 b4 63 9e be 48 2e
636) ec 1a 6c 80 e0 bc 56 95 1b ec 4c d4 ed 61 58 00
637) ea cc c9 d2 11 c9 27 1d 19 13 60 4b 2a 60 fc a4
638) 02 dc 45 be 33 85 12 1e f4 ea a4 54 27 e7 d5 66
639) 4a 91 18 46 88 de 85 b2 58 a4 ce 85 c0 88 60 89
640) ad 38 db db d0 b3 af fc 74 36 1f 60 17 0a 87 aa
641) 8d 24 f5 aa bf f1 4a e9 63 06 d7 01 f2 ec 31 b3
642) 71 2a 68 ed 72 53 b4 28 66 90 dc 31 7f 69 94 7e
643) d1 99 cf 67 35 f6 5c 82 b9 e4 b4 f9 36 75 e5 f6
644) f9 8f c0 e6 dc dd 56 01 b5 21 ea 98 a7 a0 81 30
645) b3 4c ba 12 f4 38 f7 43 7a 18 01 a0 3b a3 c7 ea
646) e1 91 9d 60 a6 8d 70 71 42 c8 33 de 0d 2f b5 52
647) 1c 13 d7 d0 b8 21 f5 3f b7 8f 51 d5 3f e6 27 30
648) 0b e1 7c eb df 72 d2 e5 6c 9d 3a f9 36 06 44 03
649) 2e 17 62 cf 08 06 4c fe 6d 05 13 20 2e ad 18 16
650) c4 08 cb 5e 6f b8 92 9d 86 00 95 e5 c3 cd 9d 78
651) 39 10 f8 ff 1c 1c d4 fa b3 d6 47 47 96 12 cb 79
652) 69 67 7e 79 f7 86 4c 38 b4 7c 2a a5 6f 86 02 46
653) 17 a8 bd d3 5f 41 88 5f 75 48 3c 63 13 eb 29 e9
654) d3 46 7c df 16 fb ae 2d 1d d0 ef d9 ad 0c b2 8f
655) bc 42 3c b1 ee c4 e9 8b ef 84 8c b5 3c 23 2e f7
656) fd ee 01 f2 a6 d7 33 28 5e c8 0f d4 51 f8 0c b4
657) d2 92 86 1e ac 2e 5a c3 f6 1d 92 9b d4 45 4e e1
658) 00 00 00 c0
659) 26 1d ee ed 67 e7 8e 18 4a 65 86 c0 5b 84 ec 3c
660) d5 c3 32 b0 74 fe de f1 c8 04 20 16 69 28 ec 97
661) c4 4b 2a c9 48 b8 35 70 ef 90 30 e8 83 80 3e f3
662) b9 0f 51 4a 93 48 29 d3 ec 9c 89 da e6 97 a1 f7
663) bf 66 56 36 f6 1e 09 e2 92 3c 89 10 29 81 a4 b7
664) 70 64 a8 57 ec c9 c8 be 02 b0 e6 59 d0 5c 76 e8
665) 12 d5 82 6b 53 79 f2 5e df b2 bc f0 6e 2f 69 15
666) 4b 94 a7 d7 52 85 73 5f 7e 69 54 0a 30 d1 b1 52
667) db 2b 90 ba fa 26 88 43 20 96 15 82 bc 99 ce 9d
668) a4 d9 08 a0 f2 9f f9 78 3e 10 90 88 15 0a 08 4e
669) a7 ae df 41 9c d7 e3 3e 7d d6 5c da 08 6a d1 be
670) 97 2e d8 61 fe e1 c4 af 2f 1b eb c3 39 2a 09 4c
671) 00 00 00 c1 00
672) f0 d6 2f 88 75 cb cf 57 fd ee fe af 4e fe 4c cb
673) a4 a3 b7 b5 b4 fc f6 c7 35 ce 18 d9 b0 33 63 0c
674) 01 a5 b8 da fa 9f 7f 22 ab f5 d8 45 9b bb 51 32
675) fd 04 6f 84 80 55 5f 21 45 7b 5e c6 13 e5 ef 81
676) 3d fd 77 55 2f 78 af 36 7b 99 a0 ac 3a 55 0b 5f
677) e5 5d 30 ed b3 06 e7 07 22 87 9c f5 15 25 45 9a
678) df 07 6d 41 d9 6e d8 18 c8 5b a6 86 b9 94 dd e5
679) 28 94 3b 69 f1 e8 75 76 54 32 9d 1c 4c 56 ce 99
680) bc c9 81 2c ce db f3 44 ec 18 55 c2 6b dc 53 34
681) c3 24 63 0c 2a ec 41 3b ac 3d f5 82 83 29 12 a6
682) d0 f3 4b 14 3c f6 ea b5 a6 f4 b7 4d 4b 63 15 7d
683) 5b 8f 31 3a 73 4f 6e 87 40 6e 29 15 a8 1e ab d7
684) 00 00 00 c1 00
685) bc d1 05 77 59 17 c9 1b 48 16 b9 31 35 01 55 34
686) f3 80 a4 26 d4 2e fb da 02 7c 4f 4d 43 24 45 d9
687) b1 5b 4e bf b9 94 0b 5f e6 fd bc ba 1e 4e 2d 3f
688) 2b c3 06 e1 a3 f6 11 ea e0 de dd 3e a1 ae b4 76
689) f5 ab 99 f4 00 3b a8 42 34 56 ec 15 f0 e5 0b c2
690) d8 40 03 f7 5c 5e c5 da 2b 20 0e 41 81 75 3e aa
691) 5b 41 ab 3c c1 57 35 6d 17 bf a3 39 93 a3 7f 33
692) a5 69 35 fd 23 92 39 bd ec 9e 4d a4 f1 66 3d 57
693) 5d 4c e2 6e d0 4d 74 c1 09 26 9e e2 7e e7 18 9a
694) 86 00 03 01 3b 2b e5 65 59 a8 03 10 ad b2 f0 cb
695) 5e f7 2f 44 f8 dd 2e 3b 68 fe 87 ce 6c 42 df d4
696) 21 bd a2 13 fb e1 72 00 60 a7 ad 78 d9 69 d2 09
697) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
698) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
699) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
700) public_key=rb"""ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxoe7pezhxWy4NI0mUwKqg9WCYOAS+IjxN9eYcqpfcmQiojcuy9XsiN/xYJ1O94SrsKS5mEia2xHnYA4RUChTyYNcM2v6cnnBQ/N/VQhpGMN7SVxdbhKUXTWFCwbjBgO6rGyHB6WtoH8vd7TOEPt+NgcXwhsWyoaUUdYTA62V+GF9vEmxMaC4ubgDz+B0QkPnauSoNxmkhcIe0lsLNb1pClZyz88PDnKXCX/d0HuN/HJ+sbPg7dCvOyqFYSyKn3uY6bCXqoIdurxXzH3O7z0P8f5sbmKOrGGKNuNxVRbeVl/D/3uDL0nqsbfUc1qvkfwbJwtMXC4IV6kOZMSk2BAsqh7x48gQ+rhYeEVSi8F3CWs4HJQoqrGt7K9a3mCSlMBHP70u3w6ME7eumoryxlUofewTd17ZEkzdX08l2ZlKzZvwQUrc+xQZ2Uw8z2mfW6Ti4gi0pYGaig7Ke4PwuXpo/C5YAWfeXycsvJZ2uaYRjMdZeJGNAnHLUGLkBscw5aI8= test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
701) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
702) public_key_data=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
703) 00 00 00 07 73 73 68 2d 72 73 61
704) 00 00 00 03 01 00 01
705) 00 00 01 81 00
706) b1 a1 ee e9 7b 38 71 5b 2e 0d 23 49 94 c0 aa a0
707) f5 60 98 38 04 be 22 3c 4d f5 e6 1c aa 97 dc 99
708) 08 a8 8d cb b2 f5 7b 22 37 fc 58 27 53 bd e1 2a
709) ec 29 2e 66 12 26 b6 c4 79 d8 03 84 54 0a 14 f2
710) 60 d7 0c da fe 9c 9e 70 50 fc df d5 42 1a 46 30
711) de d2 57 17 5b 84 a5 17 4d 61 42 c1 b8 c1 80 ee
712) ab 1b 21 c1 e9 6b 68 1f cb dd ed 33 84 3e df 8d
713) 81 c5 f0 86 c5 b2 a1 a5 14 75 84 c0 eb 65 7e 18
714) 5f 6f 12 6c 4c 68 2e 2e 6e 00 f3 f8 1d 10 90 f9
715) da b9 2a 0d c6 69 21 70 87 b4 96 c2 cd 6f 5a 42
716) 95 9c b3 f3 c3 c3 9c a5 c2 5f f7 74 1e e3 7f 1c
717) 9f ac 6c f8 3b 74 2b ce ca a1 58 4b 22 a7 de e6
718) 3a 6c 25 ea a0 87 6e af 15 f3 1f 73 bb cf 43 fc
719) 7f 9b 1b 98 a3 ab 18 62 8d b8 dc 55 45 b7 95 97
720) f0 ff de e0 cb d2 7a ac 6d f5 1c d6 ab e4 7f 06
721) c9 c2 d3 17 0b 82 15 ea 43 99 31 29 36 04 0b 2a
722) 87 bc 78 f2 04 3e ae 16 1e 11 54 a2 f0 5d c2 5a
723) ce 07 25 0a 2a ac 6b 7b 2b d6 b7 98 24 a5 30 11
724) cf ef 4b b7 c3 a3 04 ed eb a6 a2 bc b1 95 4a 1f
725) 7b 04 dd d7 b6 44 93 37 57 d3 c9 76 66 52 b3 66
726) fc 10 52 b7 3e c5 06 76 53 0f 33 da 67 d6 e9 38
727) b8 82 2d 29 60 66 a2 83 b2 9e e0 fc 2e 5e 9a 3f
728) 0b 96 00 59 f7 97 c9 cb 2f 25 9d ae 69 84 63 31
729) d6 5e 24 63 40 9c 72 d4 18 b9 01 b1 cc 39 68 8f
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
730) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
731) expected_signature=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
732) 00 00 00 07 73 73 68 2d 72 73 61
733) 00 00 01 80
734) a2 10 7c 2e f6 bb 53 a8 74 2a a1 19 99 ad 81 be
735) 79 9c ed d6 9d 09 4e 6e c5 18 48 33 90 77 99 68
736) f7 9e 03 5a cd 4e 18 eb 89 7d 85 a2 ee ae 4a 92
737) f6 6f ce b9 fe 86 7f 2a 6b 31 da 6e 1a fe a2 a5
738) 88 b8 44 7f a1 76 73 b3 ec 75 b5 d0 a6 b9 15 97
739) 65 09 13 7d 94 21 d1 fb 5d 0f 8b 23 04 77 c2 c3
740) 55 22 b1 a0 09 8a f5 38 2a d6 7f 1b 87 29 a0 25
741) d3 25 6f cb 64 61 07 98 dc 14 c5 84 f8 92 24 5e
742) 50 11 6b 49 e5 f0 cc 29 cb 29 a9 19 d8 a7 71 1f
743) 91 0b 05 b1 01 4b c2 5f 00 a5 b6 21 bf f8 2c 9d
744) 67 9b 47 3b 0a 49 6b 79 2d fc 1d ec 0c b0 e5 27
745) 22 d5 a9 f8 d3 c3 f9 df 48 68 e9 fb ef 3c dc 26
746) bf cf ea 29 43 01 a6 e3 c5 51 95 f4 66 6d 8a 55
747) e2 47 ec e8 30 45 4c ae 47 e7 c9 a4 21 8b 64 ba
748) b6 88 f6 21 f8 73 b9 cb 11 a1 78 75 92 c6 5a e5
749) 64 fe ed 42 d9 95 99 e6 2b 6f 3c 16 3c 28 74 a4
750) 72 2f 0d 3f 2c 33 67 aa 35 19 8e e7 b5 11 2f b3
751) f7 6a c5 02 e2 6f a3 42 e3 62 19 99 03 ea a5 20
752) e7 a1 e3 bc c8 06 a3 b5 7c d6 76 5d df 6f 60 46
753) 83 2a 08 00 d6 d3 d9 a4 c1 41 8c f8 60 56 45 81
754) da 3b a2 16 1f 9e 4e 75 83 17 da c3 53 c3 3e 19
755) a4 1b bc d2 29 b8 78 61 2b 78 e6 b1 52 b0 d5 ec
756) de 69 2c 48 62 d9 fd d1 9b 6b b0 49 db d3 ff 38
757) e7 10 d9 2d ce 9f 0d 5e 09 7b 37 d2 7b c3 bf ce
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
758) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
759) derived_passphrase=rb'ohB8Lva7U6h0KqEZma2Bvnmc7dadCU5uxRhIM5B3mWj3ngNazU4Y64l9haLurkqS9m/Ouf6GfyprMdpuGv6ipYi4RH+hdnOz7HW10Ka5FZdlCRN9lCHR+10PiyMEd8LDVSKxoAmK9Tgq1n8bhymgJdMlb8tkYQeY3BTFhPiSJF5QEWtJ5fDMKcspqRnYp3EfkQsFsQFLwl8ApbYhv/gsnWebRzsKSWt5Lfwd7Ayw5Sci1an408P530ho6fvvPNwmv8/qKUMBpuPFUZX0Zm2KVeJH7OgwRUyuR+fJpCGLZLq2iPYh+HO5yxGheHWSxlrlZP7tQtmVmeYrbzwWPCh0pHIvDT8sM2eqNRmO57URL7P3asUC4m+jQuNiGZkD6qUg56HjvMgGo7V81nZd329gRoMqCADW09mkwUGM+GBWRYHaO6IWH55OdYMX2sNTwz4ZpBu80im4eGEreOaxUrDV7N5pLEhi2f3Rm2uwSdvT/zjnENktzp8NXgl7N9J7w7/O',
760) ),
761) 'dsa1024': SSHTestKey(
762) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
763) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
764) NzAAAAgQC7KAZXqBGNVLBQPrcMYAoNW54BhD8aIhe7BDWYzJcsaMt72VKSkguZ8+XR7nRa
765) 0C/ZsBi+uJp0dpxy9ZMTOWX4u5YPMeQcXEdGExZIfimGqSOAsy6fCld2IfJZJZExcCmhe9
766) Ssjsd3YSAPJRluOXFQc95MZoR5hMwlIDD8QzrE7QAAABUA99nOZOgd7aHMVGoXpUEBcn7H
767) ossAAACALr2Ag3hxM3rKdxzVUw8fX0VVPXO+3+Kr8hGe0Kc/7NwVaBVL1GQ8fenBuWynpA
768) UbH0wo3h1wkB/8hX6p+S8cnu5rIBlUuVNwLw/bIYohK98LfqTYK/V+g6KD+8m34wvEiXZm
769) qywY54n2bksch1Nqvj/tNpLzExSx/XS0kSM1aigAAACAbQNRPcVEuGDrEcf+xg5tgAejPX
770) BPXr/Jss+Chk64km3mirMYjAWyWYtVcgT+7hOYxtYRin8LyMLqKRmqa0Q5UrvDfChgLhvs
771) G9YSb/Mpw5qm8PiHSafwhkaz/te3+8hKogqoe7sd+tCF06IpJr5k70ACiNtRGqssNF8Elr
772) l1efYAAAH4swlfVrMJX1YAAAAHc3NoLWRzcwAAAIEAuygGV6gRjVSwUD63DGAKDVueAYQ/
773) GiIXuwQ1mMyXLGjLe9lSkpILmfPl0e50WtAv2bAYvriadHaccvWTEzll+LuWDzHkHFxHRh
774) MWSH4phqkjgLMunwpXdiHyWSWRMXApoXvUrI7Hd2EgDyUZbjlxUHPeTGaEeYTMJSAw/EM6
775) xO0AAAAVAPfZzmToHe2hzFRqF6VBAXJ+x6LLAAAAgC69gIN4cTN6yncc1VMPH19FVT1zvt
776) /iq/IRntCnP+zcFWgVS9RkPH3pwblsp6QFGx9MKN4dcJAf/IV+qfkvHJ7uayAZVLlTcC8P
777) 2yGKISvfC36k2Cv1foOig/vJt+MLxIl2ZqssGOeJ9m5LHIdTar4/7TaS8xMUsf10tJEjNW
778) ooAAAAgG0DUT3FRLhg6xHH/sYObYAHoz1wT16/ybLPgoZOuJJt5oqzGIwFslmLVXIE/u4T
779) mMbWEYp/C8jC6ikZqmtEOVK7w3woYC4b7BvWEm/zKcOapvD4h0mn8IZGs/7Xt/vISqIKqH
780) u7HfrQhdOiKSa+ZO9AAojbURqrLDRfBJa5dXn2AAAAFQDJHfenj4EJ9WkehpdJatPBlqCW
781) 0gAAABt0ZXN0IGtleSB3aXRob3V0IHBhc3NwaHJhc2UBAgMEBQYH
782) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
783) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
784) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
785) 00 00 00 07 73 73 68 2d 64 73 73
786) 00 00 00 81 00
787) bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
788) 5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
789) cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
790) d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
791) bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
792) 23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
793) a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
794) 73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
795) 00 00 00 15 00 f7 d9 ce 64
796) e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
797) 00 00 00 80
798) 2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
799) 45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
800) 15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
801) 1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
802) ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
803) 0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
804) 89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
805) 3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
806) 00 00 00 80
807) 6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
808) 07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
809) e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
810) c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
811) bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
812) a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
813) a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
814) 40 02 88 db 51 1a ab 2c 34 5f 04 96 b9 75 79 f6
815) 00 00 00 15 00 c9 1d f7 a7
816) 8f 81 09 f5 69 1e 86 97 49 6a d3 c1 96 a0 96 d2
817) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
818) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
819) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
820) public_key=rb"""ssh-dss AAAAB3NzaC1kc3MAAACBALsoBleoEY1UsFA+twxgCg1bngGEPxoiF7sENZjMlyxoy3vZUpKSC5nz5dHudFrQL9mwGL64mnR2nHL1kxM5Zfi7lg8x5BxcR0YTFkh+KYapI4CzLp8KV3Yh8lklkTFwKaF71KyOx3dhIA8lGW45cVBz3kxmhHmEzCUgMPxDOsTtAAAAFQD32c5k6B3tocxUahelQQFyfseiywAAAIAuvYCDeHEzesp3HNVTDx9fRVU9c77f4qvyEZ7Qpz/s3BVoFUvUZDx96cG5bKekBRsfTCjeHXCQH/yFfqn5Lxye7msgGVS5U3AvD9shiiEr3wt+pNgr9X6DooP7ybfjC8SJdmarLBjnifZuSxyHU2q+P+02kvMTFLH9dLSRIzVqKAAAAIBtA1E9xUS4YOsRx/7GDm2AB6M9cE9ev8myz4KGTriSbeaKsxiMBbJZi1VyBP7uE5jG1hGKfwvIwuopGaprRDlSu8N8KGAuG+wb1hJv8ynDmqbw+IdJp/CGRrP+17f7yEqiCqh7ux360IXToikmvmTvQAKI21Eaqyw0XwSWuXV59g== test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
821) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
822) public_key_data=bytes.fromhex("""
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
823) 00 00 00 07 73 73 68 2d 64 73 73
824) 00 00 00 81 00
825) bb 28 06 57 a8 11 8d 54 b0 50 3e b7 0c 60 0a 0d
826) 5b 9e 01 84 3f 1a 22 17 bb 04 35 98 cc 97 2c 68
827) cb 7b d9 52 92 92 0b 99 f3 e5 d1 ee 74 5a d0 2f
828) d9 b0 18 be b8 9a 74 76 9c 72 f5 93 13 39 65 f8
829) bb 96 0f 31 e4 1c 5c 47 46 13 16 48 7e 29 86 a9
830) 23 80 b3 2e 9f 0a 57 76 21 f2 59 25 91 31 70 29
831) a1 7b d4 ac 8e c7 77 61 20 0f 25 19 6e 39 71 50
832) 73 de 4c 66 84 79 84 cc 25 20 30 fc 43 3a c4 ed
833) 00 00 00 15 00 f7 d9 ce 64
834) e8 1d ed a1 cc 54 6a 17 a5 41 01 72 7e c7 a2 cb
835) 00 00 00 80
836) 2e bd 80 83 78 71 33 7a ca 77 1c d5 53 0f 1f 5f
837) 45 55 3d 73 be df e2 ab f2 11 9e d0 a7 3f ec dc
838) 15 68 15 4b d4 64 3c 7d e9 c1 b9 6c a7 a4 05 1b
839) 1f 4c 28 de 1d 70 90 1f fc 85 7e a9 f9 2f 1c 9e
840) ee 6b 20 19 54 b9 53 70 2f 0f db 21 8a 21 2b df
841) 0b 7e a4 d8 2b f5 7e 83 a2 83 fb c9 b7 e3 0b c4
842) 89 76 66 ab 2c 18 e7 89 f6 6e 4b 1c 87 53 6a be
843) 3f ed 36 92 f3 13 14 b1 fd 74 b4 91 23 35 6a 28
844) 00 00 00 80
845) 6d 03 51 3d c5 44 b8 60 eb 11 c7 fe c6 0e 6d 80
846) 07 a3 3d 70 4f 5e bf c9 b2 cf 82 86 4e b8 92 6d
847) e6 8a b3 18 8c 05 b2 59 8b 55 72 04 fe ee 13 98
848) c6 d6 11 8a 7f 0b c8 c2 ea 29 19 aa 6b 44 39 52
849) bb c3 7c 28 60 2e 1b ec 1b d6 12 6f f3 29 c3 9a
850) a6 f0 f8 87 49 a7 f0 86 46 b3 fe d7 b7 fb c8 4a
851) a2 0a a8 7b bb 1d fa d0 85 d3 a2 29 26 be 64 ef
852) 40 02 88 db 51 1a ab 2c 34 5f 04 96 b9 75 79 f6
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
853) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
854) expected_signature=None,
855) derived_passphrase=None,
856) ),
857) 'ecdsa256': SSHTestKey(
858) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
859) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
860) 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTLbU0zDwsk2Dvp+VYIrsNVf5gWwz2S
861) 3SZ8TbxiQRkpnGSVqyIoHJOJc+NQItAa7xlJ/8Z6gfz57Z3apUkaMJm6AAAAuKeY+YinmP
862) mIAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5
863) Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmb
864) oAAAAhAKIl/3n0pKVIxpZkXTGtii782Qr4yIcvHdpxjO/QsIqKAAAAG3Rlc3Qga2V5IHdp
865) dGhvdXQgcGFzc3BocmFzZQECAwQ=
866) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
867) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
868) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
869) 00 00 00 13 65 63 64
870) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36
871) 00 00 00 08 6e 69 73 74 70 32 35 36
872) 00 00 00 41 04
873) cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
874) 7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
875) 64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
876) 49 ff c6 7a 81 fc f9 ed 9d da a5 49 1a 30 99 ba
877) 00 00 00 21 00
878) a2 25 ff 79 f4 a4 a5 48 c6 96 64 5d 31 ad 8a 2e
879) fc d9 0a f8 c8 87 2f 1d da 71 8c ef d0 b0 8a 8a
880) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
881) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
882) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
883) public_key=rb"""ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMttTTMPCyTYO+n5Vgiuw1V/mBbDPZLdJnxNvGJBGSmcZJWrIigck4lz41Ai0BrvGUn/xnqB/PntndqlSRowmbo= test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
884) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
885) public_key_data=bytes.fromhex("""
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
886) 00 00 00 13 65 63 64
887) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
888) 00 00 00 08 6e 69 73 74 70 32 35 36
889) 00 00 00 41 04
890) cb 6d 4d 33 0f 0b 24 d8 3b e9 f9 56 08 ae c3 55
891) 7f 98 16 c3 3d 92 dd 26 7c 4d bc 62 41 19 29 9c
892) 64 95 ab 22 28 1c 93 89 73 e3 50 22 d0 1a ef 19
893) 49 ff c6 7a 81 fc f9 ed 9d da a5 49 1a 30 99 ba
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
894) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
895) expected_signature=None,
896) derived_passphrase=None,
897) ),
898) 'ecdsa384': SSHTestKey(
899) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
900) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS
901) 1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSgkOjkAvq7v5vHuj3KBL4/EAWcn5hZ
902) DyKcbyV0eBMGFq7hKXQlZqIahLVqeMR0QqmkxNJ2rly2VHcXneq3vZ+9fIsWCOdYk5WP3N
903) ZPzv911Xn7wbEkC7QndD5zKlm4pBUAAADomhj+IZoY/iEAAAATZWNkc2Etc2hhMi1uaXN0
904) cDM4NAAAAAhuaXN0cDM4NAAAAGEEoJDo5AL6u7+bx7o9ygS+PxAFnJ+YWQ8inG8ldHgTBh
905) au4Sl0JWaiGoS1anjEdEKppMTSdq5ctlR3F53qt72fvXyLFgjnWJOVj9zWT87/ddV5+8Gx
906) JAu0J3Q+cypZuKQVAAAAMQD5sTy8p+B1cn/DhOmXquui1BcxvASqzzevkBlbQoBa73y04B
907) 2OdqVOVRkwZWRROz0AAAAbdGVzdCBrZXkgd2l0aG91dCBwYXNzcGhyYXNlAQIDBA==
908) -----END OPENSSH PRIVATE KEY-----
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
909) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
910) private_key_blob=bytes.fromhex("""
|
Add principal support for u...
Marco Ricci authored 5 months ago
|
911) 00 00 00 13 65 63 64
912) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34
913) 00 00 00 08 6e 69 73 74 70 33 38 34
914) 00 00 00 61 04
915) a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
916) 10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
917) ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
918) a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
919) 7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
920) 79 fb c1 b1 24 0b b4 27 74 3e 73 2a 59 b8 a4 15
921) 00 00 00 31 00
922) f9 b1 3c bc a7 e0 75 72 7f c3 84 e9 97 aa eb a2
923) d4 17 31 bc 04 aa cf 37 af 90 19 5b 42 80 5a ef
924) 7c b4 e0 1d 8e 76 a5 4e 55 19 30 65 64 51 3b 3d
925) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
926) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
927) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
928) public_key=rb"""ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBKCQ6OQC+ru/m8e6PcoEvj8QBZyfmFkPIpxvJXR4EwYWruEpdCVmohqEtWp4xHRCqaTE0nauXLZUdxed6re9n718ixYI51iTlY/c1k/O/3XVefvBsSQLtCd0PnMqWbikFQ== test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
929) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
930) public_key_data=bytes.fromhex("""
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
931) 00 00 00 13 65 63 64
932) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 33 38 34
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
933) 00 00 00 08 6e 69 73 74 70 33 38 34
934) 00 00 00 61 04
935) a0 90 e8 e4 02 fa bb bf 9b c7 ba 3d ca 04 be 3f
936) 10 05 9c 9f 98 59 0f 22 9c 6f 25 74 78 13 06 16
937) ae e1 29 74 25 66 a2 1a 84 b5 6a 78 c4 74 42 a9
938) a4 c4 d2 76 ae 5c b6 54 77 17 9d ea b7 bd 9f bd
939) 7c 8b 16 08 e7 58 93 95 8f dc d6 4f ce ff 75 d5
940) 79 fb c1 b1 24 0b b4 27 74 3e 73 2a 59 b8 a4 15
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
941) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
942) expected_signature=None,
943) derived_passphrase=None,
944) ),
945) 'ecdsa521': SSHTestKey(
946) private_key=rb"""-----BEGIN OPENSSH PRIVATE KEY-----
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
947) b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS
948) 1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQASVOdwDznmlcGqiLvFtYeVtrAEiVz
949) iIfsL7jEM8Utu/m8WSkPFQtjwqdFw+WfZ0mi6qMbEFgi/ELzZSKVteCSbcMAhqAkOMFKiD
950) u4bxvsM6bT02Ru7q2yT41ySyGhUD0QySBnI6Ckt/wnQ1TEpj8zDKiRErxs9e6QLGElNRkz
951) LPMs+mMAAAEY2FXeh9hV3ocAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ
952) AAAIUEAElTncA855pXBqoi7xbWHlbawBIlc4iH7C+4xDPFLbv5vFkpDxULY8KnRcPln2dJ
953) ouqjGxBYIvxC82UilbXgkm3DAIagJDjBSog7uG8b7DOm09Nkbu6tsk+NckshoVA9EMkgZy
954) OgpLf8J0NUxKY/MwyokRK8bPXukCxhJTUZMyzzLPpjAAAAQSFqUmKK7lGQzxT6GKZSLDju
955) U3otwLYnuj+/5AdzuB/zotu95UdFv9I2DNXzd9E4WAyz6IqBBNcsMkxrzHAdqsYDAAAAG3
956) Rlc3Qga2V5IHdpdGhvdXQgcGFzc3BocmFzZQ==
957) -----END OPENSSH PRIVATE KEY-----
958) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
959) private_key_blob=bytes.fromhex("""
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
960) 00 00 00 13 65 63 64
961) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 35 32 31
962) 00 00 00 08 6e 69 73 74 70 35 32 31
963) 00 00 00 85 04 00 49 53 9d
964) c0 3c e7 9a 57 06 aa 22 ef 16 d6 1e 56 da c0 12
965) 25 73 88 87 ec 2f b8 c4 33 c5 2d bb f9 bc 59 29
966) 0f 15 0b 63 c2 a7 45 c3 e5 9f 67 49 a2 ea a3 1b
967) 10 58 22 fc 42 f3 65 22 95 b5 e0 92 6d c3 00 86
968) a0 24 38 c1 4a 88 3b b8 6f 1b ec 33 a6 d3 d3 64
969) 6e ee ad b2 4f 8d 72 4b 21 a1 50 3d 10 c9 20 67
970) 23 a0 a4 b7 fc 27 43 54 c4 a6 3f 33 0c a8 91 12
971) bc 6c f5 ee 90 2c 61 25 35 19 33 2c f3 2c fa 63
972) 00 00 00 41 21
973) 6a 52 62 8a ee 51 90 cf 14 fa 18 a6 52 2c 38 ee
974) 53 7a 2d c0 b6 27 ba 3f bf e4 07 73 b8 1f f3 a2
975) db bd e5 47 45 bf d2 36 0c d5 f3 77 d1 38 58 0c
976) b3 e8 8a 81 04 d7 2c 32 4c 6b cc 70 1d aa c6 03
977) 00 00 00 1b 74 65 73 74 20 6b 65 79 20 77 69
978) 74 68 6f 75 74 20 70 61 73 73 70 68 72 61 73 65
979) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
980) public_key=rb"""ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBABJU53APOeaVwaqIu8W1h5W2sASJXOIh+wvuMQzxS27+bxZKQ8VC2PCp0XD5Z9nSaLqoxsQWCL8QvNlIpW14JJtwwCGoCQ4wUqIO7hvG+wzptPTZG7urbJPjXJLIaFQPRDJIGcjoKS3/CdDVMSmPzMMqJESvGz17pAsYSU1GTMs8yz6Yw== test key without passphrase
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
981) """,
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
982) public_key_data=bytes.fromhex("""
|
Add an ecdsa-sha2-nistp521...
Marco Ricci authored 3 months ago
|
983) 00 00 00 13 65 63 64
984) 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 35 36
985) 00 00 00 08 6e 69 73 74 70 35 32 31
986) 00 00 00 85 04 00 49 53 9d
987) c0 3c e7 9a 57 06 aa 22 ef 16 d6 1e 56 da c0 12
988) 25 73 88 87 ec 2f b8 c4 33 c5 2d bb f9 bc 59 29
989) 0f 15 0b 63 c2 a7 45 c3 e5 9f 67 49 a2 ea a3 1b
990) 10 58 22 fc 42 f3 65 22 95 b5 e0 92 6d c3 00 86
991) a0 24 38 c1 4a 88 3b b8 6f 1b ec 33 a6 d3 d3 64
992) 6e ee ad b2 4f 8d 72 4b 21 a1 50 3d 10 c9 20 67
993) 23 a0 a4 b7 fc 27 43 54 c4 a6 3f 33 0c a8 91 12
994) bc 6c f5 ee 90 2c 61 25 35 19 33 2c f3 2c fa 63
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
995) """),
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
996) expected_signature=None,
997) derived_passphrase=None,
998) ),
999) }
1000) SUPPORTED_KEYS: Mapping[str, SSHTestKey] = {
1001) k: v for k, v in ALL_KEYS.items() if v.is_suitable()
1002) }
1003) UNSUITABLE_KEYS: Mapping[str, SSHTestKey] = {
1004) k: v for k, v in ALL_KEYS.items() if not v.is_suitable()
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1005) }
1006)
1007) DUMMY_SERVICE = 'service1'
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1008) DUMMY_PASSPHRASE = 'my secret passphrase'
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1009) DUMMY_KEY1 = SUPPORTED_KEYS['ed25519'].public_key_data
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1010) DUMMY_KEY1_B64 = base64.standard_b64encode(DUMMY_KEY1).decode('ASCII')
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1011) DUMMY_KEY2 = SUPPORTED_KEYS['rsa'].public_key_data
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1012) DUMMY_KEY2_B64 = base64.standard_b64encode(DUMMY_KEY2).decode('ASCII')
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1013) DUMMY_KEY3 = SUPPORTED_KEYS['ed448'].public_key_data
|
Avoid crashing when overrid...
Marco Ricci authored 7 months ago
|
1014) DUMMY_KEY3_B64 = base64.standard_b64encode(DUMMY_KEY3).decode('ASCII')
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1015) DUMMY_CONFIG_SETTINGS = {
1016) 'length': 10,
1017) 'upper': 1,
1018) 'lower': 1,
1019) 'repeat': 5,
1020) 'number': 1,
1021) 'space': 1,
1022) 'dash': 1,
1023) 'symbol': 1,
1024) }
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1025) DUMMY_RESULT_PASSPHRASE = b'.2V_QJkd o'
1026) DUMMY_RESULT_KEY1 = b'E<b<{ -7iG'
1027) DUMMY_PHRASE_FROM_KEY1_RAW = (
1028) b'\x00\x00\x00\x0bssh-ed25519'
1029) b'\x00\x00\x00@\xf0\x98\x19\x80l\x1a\x97\xd5&\x03n'
1030) b'\xcc\xe3e\x8f\x86f\x07\x13\x19\x13\t!33\xf9\xe46S'
1031) b'\x1d\xaf\xfd\r\x08\x1f\xec\xf8s\x9b\x8c_U9\x16|ST,'
1032) b'\x1eR\xbb0\xed\x7f\x89\xe2/iQU\xd8\x9e\xa6\x02'
1033) )
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
1034) DUMMY_PHRASE_FROM_KEY1 = b'8JgZgGwal9UmA27M42WPhmYHExkTCSEzM/nkNlMdr/0NCB/s+HObjF9VORZ8U1QsHlK7MO1/ieIvaVFV2J6mAg=='
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1035)
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1036) VAULT_MASTER_KEY = 'vault key'
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
1037) VAULT_V02_CONFIG = 'P7xeh5y4jmjpJ2pFq4KUcTVoaE9ZOEkwWmpVTURSSWQxbGt6emN4aFE4eFM3anVPbDRNTGpOLzY3eDF5aE1YTm5LNWh5Q1BwWTMwM3M5S083MWRWRFlmOXNqSFJNcStGMWFOS3c2emhiOUNNenZYTmNNMnZxaUErdlRoOGF2ZHdGT1ZLNTNLOVJQcU9jWmJrR3g5N09VcVBRZ0ZnSFNUQy9HdFVWWnFteVhRVkY3MHNBdnF2ZWFEbFBseWRGelE1c3BFTnVUckRQdWJSL29wNjFxd2Y2ZVpob3VyVzRod3FKTElTenJ1WTZacTJFOFBtK3BnVzh0QWVxcWtyWFdXOXYyenNQeFNZbWt1MDU2Vm1kVGtISWIxWTBpcWRFbyswUVJudVVhZkVlNVpGWDA4WUQ2Q2JTWW81SnlhQ2Zxa3cxNmZoQjJES0Uyd29rNXpSck5iWVBrVmEwOXFya1NpMi9saU5LL3F0M3N3MjZKekNCem9ER2svWkZ0SUJLdmlHRno0VlQzQ3pqZTBWcTM3YmRiNmJjTkhqUHZoQ0NxMW1ldW1XOFVVK3pQMEtUMkRMVGNvNHFlOG40ck5KcGhsYXg1b1VzZ1NYU1B2T3RXdEkwYzg4NWE3YWUzOWI1MDI0MThhMWZjODQ3MDA2OTJmNDQ0MDkxNGFiNmRlMGQ2YjZiNjI5NGMwN2IwMmI4MGZi'
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1038) VAULT_V02_CONFIG_DATA = {
1039) 'global': {
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1040) 'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1041) },
1042) 'services': {
1043) '(meta)': {
1044) 'notes': 'This config was originally in v0.2 format.',
1045) },
1046) DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
1047) },
1048) }
|
Fix formatting, some covera...
Marco Ricci authored 2 months ago
|
1049) VAULT_V03_CONFIG = 'sBPBrr8BFHPxSJkV/A53zk9zwDQHFxLe6UIusCVvzFQre103pcj5xxmE11lMTA0U2QTYjkhRXKkH5WegSmYpAnzReuRsYZlWWp6N4kkubf+twZ9C3EeggPm7as2Af4TICHVbX4uXpIHeQJf9y1OtqrO+SRBrgPBzgItoxsIxebxVKgyvh1CZQOSkn7BIzt9xKhDng3ubS4hQ91fB0QCumlldTbUl8tj4Xs5JbvsSlUMxRlVzZ0OgAOrSsoWELXmsp6zXFa9K6wIuZa4wQuMLQFHiA64JO1CR3I+rviWCeMlbTOuJNx6vMB5zotKJqA2hIUpN467TQ9vI4g/QTo40m5LT2EQKbIdTvBQAzcV4lOcpr5Lqt4LHED5mKvm/4YfpuuT3I3XCdWfdG5SB7ciiB4Go+xQdddy3zZMiwm1fEwIB8XjFf2cxoJdccLQ2yxf+9diedBP04EsMHrvxKDhQ7/vHl7xF2MMFTDKl3WFd23vvcjpR1JgNAKYprG/e1p/7'
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1050) VAULT_V03_CONFIG_DATA = {
1051) 'global': {
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1052) 'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1053) },
1054) 'services': {
1055) '(meta)': {
1056) 'notes': 'This config was originally in v0.3 format.',
1057) },
1058) DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
1059) },
1060) }
1061) VAULT_STOREROOM_CONFIG_ZIPPED = b"""
1062) UEsDBBQAAAAIAJ1WGVnTVFGT0gAAAOYAAAAFAAAALmtleXMFwclSgzAAANC7n9GrBzBldcYDE5Al
1063) EKbFAvGWklBAtqYsBcd/973fw8LFox76w/vb34tzhD5OATeEAk6tJ6Fbp3WrvkJO7l0KIjtxCLfY
1064) ORm8ScEDPbNkyVwGLmZNTuQzXPMl/GnLO0I2PmUhRcxSj2Iy6PUy57up4thL6zndYwtyORpyCTGy
1065) ibbjIeq/K/9atsHkl680nwsKFVk1i97gbGhG4gC5CMS8aUx8uebuToRCDsAT61UQVp0yEjw1bhm1
1066) 6UPWzM2wyfMGMyY1ox5HH/9QSwMEFAAAAAgAnVYZWd1pX+EFAwAA1AMAAAIAAAAwMA3ON7abQAAA
1067) wP4fwy0FQUR3ZASLYEkCOnKOEtHPd7e7KefPr71YP800/vqN//3hAywvUaCcTYb6TbKS/kYcVnvG
1068) wGA5N8ksjpFNCu5BZGu953GdoVnOfN6PNXoluWOS2JzO23ELNJ2m9nDn0uDhwC39VHJT1pQdejIw
1069) CovQTEWmBH53FJufhNSZKQG5s1fMcw9hqn3NbON6wRDquOjLe/tqWkG1yiQDSF5Ail8Wd2UaA7vo
1070) 40QorG1uOBU7nPlDx/cCTDpSqwTZDkkAt6Zy9RT61NUZqHSMIgKMerj3njXOK+1q5sA/upSGvMrN
1071) 7/JpSEhcmu7GDvQJ8TyLos6vPCSmxO6RRG3X4BLpqHkTgeqHz+YDZwTV+6y5dvSmTSsCP5uPCmi+
1072) 7r9irZ1m777iL2R8NFH0QDIo1GFsy1NrUvWq4TGuvVIbkHrML5mFdR6ajNhRjL/6//1crYAMLHxo
1073) qkjGz2Wck2dmRd96mFFAfdQ1/BqDgi6X/KRwHL9VmhpdjcKJhuE04xLYgTCyKLv8TkFfseNAbN3N
1074) 7KvVW7QVF97W50pzXzy3Ea3CatNQkJ1DnkR0vc0dsHd1Zr0o1acUaAa65B2yjYXCk3TFlMo9TNce
1075) OWBXzJrpaZ4N7bscdwCF9XYesSMpxBDpwyCIVyJ8tHZVf/iS4pE6u+XgvD42yef+ujhM/AyboqPk
1076) sFNV/XoNpmWIySdkTMmwu72q1GfPqr01ze/TzCVrCe0KkFcZhe77jrLPOnRCIarF2c9MMHNfmguU
1077) A0tJ8HodQb/zehL6C9KSiNWfG+NlK1Dro1sGKhiJETLMFru272CNlwQJmzTHuKAXuUvJmQCfmLfL
1078) EPrxoE08fu+v6DKnSopnG8GTkbscPZ+K5q2kC6m7pCizKO1sLKG7fMBRnJxnel/vmpY2lFCB4ADy
1079) no+dvqBl6z3X/ji9AFXC9X8HRd+8u57OS1zV4OhiVd7hMy1U8F5qbIBms+FS6QbL9NhIb2lFN4VO
1080) 3+ITZz1sPJBl68ZgJWOV6O4F5cAHGKl/UEsDBBQAAAAIAJ1WGVn9pqLBygEAACsCAAACAAAAMDMN
1081) z8mWa0AAANB9f0ZvLZQhyDsnC0IMJShDBTuzJMZoktLn/ft79w/u7/dWvZb7OHz/Yf5+yYUBMTNK
1082) RrCI1xIQs67d6yI6bM75waX0gRLdKMGyC5O2SzBLs57V4+bqxo5xI2DraLTVeniUXLxkLyjRnC4u
1083) 24Vp+7p+ppt9DlVNNZp7rskQDOe47mbgViNeE5oXpg/oDgTcfQYNvt8V0OoyKbIiNymOW/mB3hze
1084) D1EHqTWQvFZB5ANGpLMM0U10xWYAClzuVJXKm/n/8JgVaobY38IjzxXyk4iPkQUuYtws73Kan871
1085) R3mZa7/j0pO6Wu0LuoV+czp9yZEH/SU42lCgjEsZ9Mny3tHaF09QWU4oB7HI+LBhKnFJ9c0bHEky
1086) OooHgzgTIa0y8fbpst30PEUwfUAS+lYzPXG3y+QUiy5nrJFPb0IwESd9gIIOVSfZK63wvD5ueoxj
1087) O9bn2gutSFT6GO17ibguhXtItAjPbZWfyyQqHRyeBcpT7qbzQ6H1Of5clEqVdNcetAg8ZMKoWTbq
1088) /vSSQ2lpkEqT0tEQo7zwKBzeB37AysB5hhDCPn1gUTER6d+1S4dzwO7HhDf9kG+3botig2Xm1Dz9
1089) A1BLAwQUAAAACACdVhlZs14oCcgBAAArAgAAAgAAADA5BcHJkqIwAADQe39GXz2wE5gqDxAGQRZF
1090) QZZbDIFG2YwIga7593nv93sm9N0M/fcf4d+XcUlVE+kvustz3BU7FjHOaW+u6TRsfNKzLh74mO1w
1091) IXUlM/2sGKKuY5sYrW5N+oGqit2zLBYv57mFvH/S8pWGYDGzUnU1CdTL3B4Yix+Hk8E/+m0cSi2E
1092) dnAibw1brWVXM++8iYcUg84TMbJXntFYCyrNw1NF+008I02PeH4C8oDID6fIoKvsw3p7WJJ/I9Yp
1093) a6oJzlJiP5JGxRxZPj50N6EMtzNB+tZoIGxgtOFVpiJ05yMQFztY6I6LKIgvXW/s919GIjGshqdM
1094) XVPFxaKG4p9Iux/xazf48FY8O7SMmbQC1VsXIYo+7eSpIY67VzrCoh41wXPklOWS6CV8RR/JBSqq
1095) 8lHkcz8L21lMCOrVR1Cs0ls4HLIhUkqr9YegTJ67VM7xevUsgOI7BkPDldiulRgX+sdPheCyCacu
1096) e7/b/nk0SXWF7ZBxsR1awYqwkFKz41/1bZDsETsmd8n1DHycGIvRULv3yYhKcvWQ4asAMhP1ks5k
1097) AgOcrM+JFvpYA86Ja8HCqCg8LihEI1e7+m8F71Lpavv/UEsDBBQAAAAIAJ1WGVnKO2Ji+AEAAGsC
1098) AAACAAAAMWENx7dyo0AAANDen+GWAonMzbggLsJakgGBOhBLlGBZsjz373eve7+fKyJTM/Sff85/
1099) P5QMwMFfAWipfXwvFPWU582cd3t7JVV5pBV0Y1clL4eKUd0w1m1M5JrkgW5PlfpOVedgABSe4zPY
1100) LnSIZVuen5Eua9QY8lQ7rxW7YIqeajhgLfL54BIcY90fd8ANixlcM8V23Z03U35Txba0BbSguc0f
1101) NRF83cWp+7rOYgNO9wWLs915oQmWAqAtqRYCiWlgAtxYFg0MnNS4/G80FvFmQTh0cjwcF1xEVPeW
1102) l72ky84PEA0QMgRtQW+HXWtE0/vQTtNKzvNqPfrGZCldL5nk9PWhhPEQ/azyW11bz2eB+aM0g0r7
1103) 0/5YkO9er10YonsBT1rEn0lfBXDHwtwbxG2bdqELTuEtX2+OEih7K43rN2EvpXX47azaNpe/drIz
1104) wgAdhpfZ/mZwaGFX0c7r5HCTnroNRi5Bx/vu7m1A7Nt1dix4Gl/aPLCWQzpwmdIMJDiqD1RGpc5v
1105) +pDLrpfhZOVhLjAPSQ0V7mm/XNSca8oIsDjwdvR438RQCU56mrlypklS4/tJAe0JZNZIgBmJszjG
1106) AFbsmNYTJ9GmULB9lXmTWmrME592S285iWU5SsJcE1s+3oQw9QrvWB+e3bGAd9e+VFmFqr6+/gFQ
1107) SwECHgMUAAAACACdVhlZ01RRk9IAAADmAAAABQAAAAAAAAABAAAApIEAAAAALmtleXNQSwECHgMU
1108) AAAACACdVhlZ3Wlf4QUDAADUAwAAAgAAAAAAAAABAAAApIH1AAAAMDBQSwECHgMUAAAACACdVhlZ
1109) /aaiwcoBAAArAgAAAgAAAAAAAAABAAAApIEaBAAAMDNQSwECHgMUAAAACACdVhlZs14oCcgBAAAr
1110) AgAAAgAAAAAAAAABAAAApIEEBgAAMDlQSwECHgMUAAAACACdVhlZyjtiYvgBAABrAgAAAgAAAAAA
1111) AAABAAAApIHsBwAAMWFQSwUGAAAAAAUABQDzAAAABAoAAAAA
1112) """
1113) VAULT_STOREROOM_CONFIG_DATA = {
1114) 'global': {
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1115) 'phrase': DUMMY_PASSPHRASE.rstrip('\n'),
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1116) },
1117) 'services': {
1118) '(meta)': {
1119) 'notes': 'This config was originally in storeroom format.',
1120) },
1121) DUMMY_SERVICE: DUMMY_CONFIG_SETTINGS.copy(),
1122) },
1123) }
1124)
|
Add more tests of the store...
Marco Ricci authored 6 months ago
|
1125) _VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED_JAVASCRIPT_SOURCE = """
1126) // Executed in the top-level directory of the vault project code, in Node.js.
1127) const storeroom = require('storeroom')
1128) const Store = require('./lib/store.js')
|
Add remaining tests to the...
Marco Ricci authored 5 months ago
|
1129) let store = new Store(storeroom.createFileAdapter('./broken-dir'), 'vault key')
|
Add more tests of the store...
Marco Ricci authored 6 months ago
|
1130) await store._storeroom.put('/services/array/', ['entry1','entry2'])
1131) // The resulting "broken-dir" was then zipped manually.
1132) """
1133) VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED = b"""
1134) UEsDBBQAAgAIAHijH1kjc0ql0gAAAOYAAAAFAAAALmtleXMFwclygjAAANB7P8Mrh7LIYmd6oGxC
1135) HKwTJJgbNpBKCpGAhNTpv/e952ZpxHTjw+bN+HuJJABEikvHecD0pLgpgYKWjue0CZGk19mKF+4f
1136) 0AoLrXKh+ckk13nmxVk/KFE28eEHkBgJTISvRUVMQ0N5aRapLgWs/M7NSXV7qs0s2aIEstUG5FHv
1137) fo/HKjpdUJMGK86vs2rOJFGyrx9ZK4iWW+LefwSTYxhYOlWpb0PpgXsV4dHNTz5skcJqpPUudZf9
1138) jCFD0vxChL6ajm0P0prY+z9QSwMEFAACAAgAeKMfWX4L7vDYAQAAPwIAAAIAAAAwNQXByZKiMAAA
1139) 0Ht/Rl85sIR1qvqAouxbJAG8kWYxgCKICEzNv897f7+XanrR4fH9h//3pVdF8qmVeWjW+STwSbak
1140) 4e3CS00h2AcrQIcghm0lOcrLdJfuaOFqg5zEsW9lTbJMtIId5ezNGM9jPKaxeriXXm45pGuHCwFP
1141) /gmcXKWGeU3sHfj93iIf6p0xrfQIGGJOvayKjzypUqb99Bllo9IwNP2FZjxmBWDw0NRzJrxr/4Qj
1142) qp4ted4f91ZaR8+64C0BJBzDngElJEFLdA2WBcip2R/VZIG219WT3JlkbFrYSjhHWeb47igytTpo
1143) USPjEJWVol0cVpD6iX1/mGM2BpHAFa+fLx3trXgbXaVmjyZVzUKDh/XqnovnLs529UGYCAdj8Xnx
1144) vWwfWclm5uIB8cHbElx6G82Zs8RQnkDsyGVDbNaMOO7lMQF7o1Uy7Q9GuSWcFMK4KBAbcwm4l8RY
1145) +2ema46H3/S31IW1LOFpoZxjwyBS69dWS7/ulVxJfbuydMvZMeWpmerjUHnKaQdumibSeSOXh+zg
1146) XU6w6SsKAjHWXCTjRehWmyNnI7z3+epr1RzUlnDcUMiYQ/seaNefgNx4jIbOw92FC2hxnZOJupK9
1147) M1WVdH3+8x9QSwMEFAACAAgAeKMfWUXRU2i7AQAAFwIAAAIAAAAxYQ3QyZZjUAAA0H19Rm2zCGLs
1148) c2rxzDMxBTtTEA8hnqlO/3v3/YT7+71W86cdh+8/+N8vUMGNNAjWlNHgsyBlwCpgBd/a2rrW0qwg
1149) p/CmvT4PTpwjHztJ2T10Jc2Fc8O7eHQb9MawAbxSKscxFAjz5wnJviaOMT5kEIZS+ibU6GgqU61P
1150) lbeYRIiNCfK1VeHMFCpUhZ1ipnh50kux5N2jph5aMvc+HOR3lQgx9MJpMzQ2oNxSfEm7wZ5s0GYb
1151) Bgy2xwaEMXNRnbzlbijZJi0M7yXNKS7nS1uFMtsapEc204YOBbOY4VK6L/9jS2ez56ybGkQPfn6+
1152) QCwTqvkR5ieuRhF0zcoPLld+OUlI0RfEPnYHKEG7gtSya/Z1Hh77Xq4ytJHdr7WmXt7BUFA8Sffm
1153) obXI31UOyVNLW0y4WMKDWq+atKGbU5BDUayoITMqvCteAZfJvnR4kZftMaFEG5ln7ptpdzpl10m3
1154) G2rgUwTjPBJKomnOtJpdwm1tXm6IMPQ6IPy7oMDC5JjrmxAPXwdPnY/i07Go6EKSYjbkj8vdj/BR
1155) rAMe2wnzdJaRhKv8kPVG1VqNdzm6xLb/Cf8AUEsDBBQAAgAIAHijH1kaCPeauQEAABcCAAACAAAA
1156) MWUFwTmyokAAAND8H+OnBAKyTpVBs8iOIG2zZM0OigJCg07N3ee9v7+kmt/d6/n7h/n3AyJEvoaD
1157) gtd8f4RxATnaHVeGNjyuolVVL+mY8Tms5ldfgYseNYMzRYJj3+i3iUgqlT5D1r7j1Bh5qVzi14X0
1158) jpuH7DBKeeot2jWI5mPubptvV567pX2U3OC6ccxWmyo2Dd3ehUkbPP4uiDgWDZzFg/fFETIawMng
1159) ahWHB2cfc2bM2kugNhWLS4peUBp36UWqMpF6+sLeUxAVZ24u08MDNMpNk81VDgiftnfBTBBhBGm0
1160) RNpzxMMOPnCx3RRFgttiJTydfkB9MeZ9pvxP9jUm/fndQfJI83CsBxcEWhbjzlEparc3VS2s4LjR
1161) 3Xafw3HLSlPqylHOWK2vc2ZJoObwqrCaFRg7kz1+z08SGu8pe0EHaII6FSxL7VM+rfVgpc1045Ut
1162) 6ayCQ0TwRL5m4oMYkZbFnivCBTY3Cdji2SQ+gh8m3A6YkFxXUH0Vz9Is8JZaLFyi24GjyZZ9rGuk
1163) Y6w53oLyTF/fSzG24ghCDZ6pOgB5qyfk4z2mUmH7pwxNCoHZ1oaxeTSn039QSwECHgMUAAIACAB4
1164) ox9ZI3NKpdIAAADmAAAABQAAAAAAAAABAAAApIEAAAAALmtleXNQSwECHgMUAAIACAB4ox9Zfgvu
1165) 8NgBAAA/AgAAAgAAAAAAAAABAAAApIH1AAAAMDVQSwECHgMUAAIACAB4ox9ZRdFTaLsBAAAXAgAA
1166) AgAAAAAAAAABAAAApIHtAgAAMWFQSwECHgMUAAIACAB4ox9ZGgj3mrkBAAAXAgAAAgAAAAAAAAAB
1167) AAAApIHIBAAAMWVQSwUGAAAAAAQABADDAAAAoQYAAAAA
1168) """
1169)
|
Add remaining tests to the...
Marco Ricci authored 5 months ago
|
1170) _VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED2_JAVASCRIPT_SOURCE = """
1171) // Executed in the top-level directory of the vault project code, in Node.js.
1172) const storeroom = require('storeroom')
1173) const Store = require('./lib/store.js')
1174) let store = new Store(storeroom.createFileAdapter('./broken-dir'), 'vault key')
1175) await store._storeroom.put('/services/array/', 'not a directory index')
1176) // The resulting "broken-dir" was then zipped manually.
1177) """
1178) VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED2 = b"""
1179) UEsDBAoAAAAAAM6NSVmrcHdV5gAAAOYAAAAFAAAALmtleXN7InZlcnNpb24iOjF9CkV3ZS9LZkJp
1180) L0V0OUcrZmxYM3gxaFU4ZjE4YlE3S253bHoxN0IxSDE3cUhVOGdWK2RpWWY5MTdFZ0YrSStidEpZ
1181) VXBzWVZVck45OC9uLzdsZnl2NUdGVEg2NWZxVy93YjlOc2MxeEZ4ck43Q3p4eTZ5MVAxZzFPb2VK
1182) b0RZU3J6YXlwT0E2M3pidmk0ZTRiREMyNXhPTXl5NHBoMDFGeGdnQmpSNnpUcmR2UDk2UlZQd0I5
1183) WitOZkZWZUlXT1NQN254ZFNYMGdFbkZ4SDBmWDkzNTFaTTZnPVBLAwQKAAAAAADOjUlZJg3/BhcC
1184) AAAXAgAAAgAAADBieyJ2ZXJzaW9uIjoxfQpBVXJJMjNDQ2VpcW14cUZRMlV4SUpBaUoxNEtyUzh2
1185) SXpIa2xROURBaFRlVHNFMmxPVUg4WUhTcUk1cXRGSHBqY3c1WkRkZmRtUlEwQXVGRjllY3lkam14
1186) dDdUemRYLzNmNFUvTGlVV2dLRmQ1K1FEN3BlVlE1bWpqeHNlUEpHTDlhTWlKaGxSUVB4SmtUbjBx
1187) U2poM1RUT0ZZbVAzV0JkdlUyWnF2RzhaSDk2cU1WcnZsQ0dMRmZTc2svVXlvcHZKdENONUVXcTRZ
1188) SDUwNFNiejFIUVhWd2RjejlrS1BuR3J6SVA4ZmZtZnhXQ0U0TmtLb0ZPQXZuNkZvS3FZdGlGbFE9
1189) PQpBVXBMUVMrMG9VeEZTeCtxbTB3SUtyM1MvTVJxYWJJTFlEUnY0aHlBMVE2TGR2Nlk0UmJ0enVz
1190) NzRBc0cxbVhhenlRU2hlZVowdk0xM2ZyTFA4YlV0VHBaRyszNXF1eUhLM2NaWVJRZUxKM0JzejZz
1191) b0xaQjNZTkpNenFxTTQrdzM1U0FZZ2lMU1NkN05NeWVrTHNhRUIzRDFOajlTRk85K3NGNEpFMWVL
1192) UXpNMkltNk9qOUNVQjZUSTV3UitibksxN1BnY2RaeTZUMVRMWElVREVxcDg4dWdsWmRFTVcrNU9k
1193) aE5ZbXEzZERWVWV4UnJpM1AwUmVBSi9KMGdJNkNoUUE9PVBLAwQKAAAAAADOjUlZTNfdphcCAAAX
1194) AgAAAgAAADBmeyJ2ZXJzaW9uIjoxfQpBWVJqOVpIUktGUEVKOHM2YVY2TkRoTk5jQlZ5cGVYUmdz
1195) cnBldFQ0cGhJRGROWFdGYzRia0daYkJxMngwRDFkcVNjYWk5UzEveDZ2K28zRE0rVEF2OVE3ZFVR
1196) QWVKR3RmRkhJZDZxWW0ybEdNSnF5WTRNWm14aE9YdXliend0V3Q4Mnhvb041QTZNcWpINmxKQllD
1197) UUN3ZEJjb3RER0EwRnlnVTEzeHV2WnIzT1puZnFFRGRqbzMxNkw5aExDN1RxMTYwUHpBOXJOSDMz
1198) ZkNBcUhIVXZiYlFQQWErekw1d3dEN3FlWkY2MHdJaEwvRmk5L3JhNGJDcHZRNC9ORWpRd3c9PQpB
1199) WWNGUDB1Y2xMMHh3ZDM2UXZXbm4wWXFsOU5WV0s3c05CMTdjdmM3N3VDZ0J2OE9XYkR5UHk5d05h
1200) R2NQQzdzcVdZdHpZRlBHR0taVjhVUzA1YTVsV1BabDNGVFNuQXNtekxPelBlcFZxaitleDU3aEsx
1201) QnV1bHkrUCtYQkE0YUtsaDM3c0RJL3I0UE1BVlJuMDNoSDJ5dEhDMW9PbjF0V1M5Q1NLV1pSMThh
1202) djdTT0RBMVBNRnFYTmZKZVNTaVJiQ2htbDdOcFVLbjlXSGJZandybDlqN0JSdy9kWjhNQldCb3Ns
1203) Nlc1dGZtdnJMVHhGRFBXYUgzSUp0T0czMEI1M3c9PVBLAwQKAAAAAADOjUlZn9rNID8CAAA/AgAA
1204) AgAAADFkeyJ2ZXJzaW9uIjoxfQpBYWFBb3lqaGljVDZ4eXh1c0U0RVlDZCtxbE81Z0dEYTBNSFVS
1205) MmgrSW9QMHV4UkY3b1BRS2czOHlQUEN3Ny9MYVJLQ0dQZ0RyZ2RpTWJTeUwzZ3ZNMFhseVpVMVBW
1206) QVJvNEFETU9lbXgrOWhtS0hjQWNKMG5EeW5oSkhGYTYyb2xyQUNxekZzblhKNVBSeEVTVzVEbUh0
1207) Ui9nRm5Wa1FvalhyVW4ybmpYMjVVanZQaXhlMU96Y0daMmQ0MjdVTGdnY1hqMkhSdjJiZldDNDUw
1208) SGFXS3FDckZlYWlrQ2xkUUM2WGV3SkxZUjdvQUY3UjVha2ttK3M2MXNCRTVCaTg0QmJLWHluc1NG
1209) ejE0TXFrd2JMK1VMYVk9CkFUT3dqTUFpa3Q4My9NTW5KRXQ2b3EyNFN4KzJKNDc2K2gyTmEzbHUr
1210) MDg0cjlBT25aaUk0TmlYV0N1Q0lzakEzcTBwUHFJS1VXZHlPQW9uM2VHY0huZUppWUtVYllBaUJI
1211) MVNmbnhQQkMzZkFMRklybkQ4Y0VqeGpPcUFUaTQ5dE1mRmtib0dNQ3dEdFY0V3NJL0tLUlRCOFd1
1212) MnNXK2J0V3QzVWlvZG9ZeUVLTDk3ekNNemZqdGptejF4SDhHTXY5WDVnaG9NSW5RQVNvYlRreVZ4
1213) dWo5YnlDazdNbU0vK21ZL3AwZE9oYVY0Nncwcm04UGlvWEtzdzR4bXB3ditDWC9PRXV3Uy9meDJT
1214) Y0lOQnNuYVRiWT1QSwECHgMKAAAAAADOjUlZq3B3VeYAAADmAAAABQAAAAAAAAAAAAAApIEAAAAA
1215) LmtleXNQSwECHgMKAAAAAADOjUlZJg3/BhcCAAAXAgAAAgAAAAAAAAAAAAAApIEJAQAAMGJQSwEC
1216) HgMKAAAAAADOjUlZTNfdphcCAAAXAgAAAgAAAAAAAAAAAAAApIFAAwAAMGZQSwECHgMKAAAAAADO
1217) jUlZn9rNID8CAAA/AgAAAgAAAAAAAAAAAAAApIF3BQAAMWRQSwUGAAAAAAQABADDAAAA1gcAAAAA
1218) """
1219)
1220) _VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED3_JAVASCRIPT_SOURCE = """
1221) // Executed in the top-level directory of the vault project code, in Node.js.
1222) const storeroom = require('storeroom')
1223) const Store = require('./lib/store.js')
1224) let store = new Store(storeroom.createFileAdapter('./broken-dir'), 'vault key')
1225) await store._storeroom.put('/services/array/', [null, 1, true, [], {}])
1226) // The resulting "broken-dir" was then zipped manually.
1227) """
1228) VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED3 = b"""
1229) UEsDBAoAAAAAAEOPSVnVlcff5gAAAOYAAAAFAAAALmtleXN7InZlcnNpb24iOjF9CkV4dVBHUDBi
1230) YkxrUVdvWnV5ZUJQRy8xdmM2MCt6MThOa3BsS09ydFAvUTVnQmxkYVpIOG10dTE5VWZFNGdGRGRj
1231) eHJtWUd4eXZDZFNqcVlOaDh4cTlzM3VydkdRTWFwcnhtdlZGZUxoSW4zZnVlTDAweEk0ZmlLenZN
1232) MmthUlRsNWNORGh3eUNlWVk4dzhBcXNhYjNyVWVsOEE0eVQ0cHU2d2tmQ3dTWUdqeG5HR29EcWJK
1233) VnVJVWNpZVBEcU9PTzU2b0MyMG9lT01adFVkTUtxV28zYnFZPVBLAwQKAAAAAABDj0lZ77OVHxcC
1234) AAAXAgAAAgAAADBjeyJ2ZXJzaW9uIjoxfQpBZllFQVVobEkyU2lZeGlrdWh0RzRNbUN3L1V2THBN
1235) VVhwVlB0NlRwdzRyNGdocVJhbGZWZ0hxUHFtbTczSnltdFFrNnZnR2JRdUpiQmVlYjYwOHNrMGk4
1236) ZFJVZjNwdlc2SnUyejljQkdwOG5mTFpTdlNad1lLN09UK2gzSDNDcmoxbXNicEZUcHVldW81NXc1
1237) dGdYMnBuWXNWTVcrczdjaHEyMUIya2lIVEZrdGt1MXlaRzhPYkVUQjNCOFNGODVVbi9CUjFEMHJ1
1238) ME9zOWl4ZWM2VmNTMitTZndtNnNtSlk2ZW9ZNTJzOGJNRGdYMndjQ0srREdkOEo2VWp0NG5OQVE9
1239) PQpBUWlPRnRZcmJybWUycEwxRFpGT1BjU0RHOUN2cVkvbHhTWGIwaVJUdmtIWFc2bEtHL0p4RUtU
1240) d3RTc0RTeDhsMTUvaHRmbWpOQ2tuTzhLVEFoKzhRQm5FbjZ0a2x5Y3BmeEIrTUxLRjFCM1Q1bjcv
1241) T0VUMExMdmgxU2k1bnRRNXhTUHZZNWtXeUMyZjhXUXFZb3FSNU5JVENMeDV6dWNsQ3dGb2kvVXc4
1242) OWNNWjM1MHBSbThzUktJbjJFeDUrQ1JwS3ZHdnBHbFJaTmk5VHZmVkNic1FCalR3MC9aeklTdzVQ
1243) NW9BVWE2U1ExUVFnNHg4VUNkY0s2QUNLaFluY0d4TVE9PVBLAwQKAAAAAABDj0lZGk9LVj8CAAA/
1244) AgAAAgAAADE0eyJ2ZXJzaW9uIjoxfQpBY1g2NVpMUWk4ck9pUlIyWGEwQlFHQVhQVWF2aHNJVGVY
1245) c2dzRk9OUmFTRzJCQlg0SGxJRHpwRUd5aDUrZ2czZVRwWDFNOERua3pMeTVzcWRkMFpmK3padTgz
1246) Qm52Y1JPREVIVDllUW91YUtPTWltdlRYanNuSXAxUHo5VGY1TlRkRjNJVTd2V1lhUDg4WTI5NG1i
1247) c1VVL2RKVTZqZ3ZDbUw2cE1VZ28xUU12bGJnaVp3cDV1RDFQZXlrSXdKVWdJSEgxTEpnYi9xU2tW
1248) c25leW1XY1RXR0NobzRvZGx3S2hJWmFCelhvNFhlN2U1V2I2VHA3Rkk5VUpVcmZIRTAvcVdrZUZE
1249) VmxlazY3cUx3ZFZXcU9DdFk9CkFhSGR0QjhydmQ0U3N4ZmJ5eU1OOHIzZEoxeHA5NmFIRTQvalNi
1250) Z05hZWttaDkyb2ROM1F4MUlqYXZsYVkxeEt1eFF3KzlwTHFIcTF5a1JSRjQzL2RVWGFIRk5UU0NX
1251) OVFsdmd3KzMwa1ZhSEdXRllvbFRnRWE4djQ3b3VrbGlmc01PZGM0YVNKb2R4ZUFJcVc3Q1cwdDVR
1252) b2RUbWREUXpqc3phZkQ4R2VOd2NFQjdGMHI2RzNoZEJlQndxd3Z6eENVYnpSUmU5bEQ3NjQ3RFp1
1253) bEo1U3c4amlvV0paTW40NlZhV3BYUXk4UnNva3hHaW00WUpybUZIQ2JkVU9qSWJsUmQ1Z3VhUDNU
1254) M0NxeHRPdC94b1BhOD1QSwMECgAAAAAAQ49JWVJM8QYXAgAAFwIAAAIAAAAxNnsidmVyc2lvbiI6
1255) MX0KQVlCWDF6M21qUlQrand4M2FyNkFpemxnalJZbUM0ZHg5NkxVQVBTVHNMWXJKVHFtWnd5N0Jy
1256) OFlCcElVamorMHdlT3lNaUtLVnFwaER3RXExNWFqUmlSZUVEQURTVHZwWmlLZUlnZjR5elUzZXNP
1257) eDJ2U2J1bXhTK0swUGZVa2tsSy9TRmRiU3EvUHFMRjBDRTVCMXNyKzJLYTB2WlJmak94R3VFeFRD
1258) RXozN0ZlWDNNR3NCNkhZVHEzaUJWcUR6NVB6eHpCWWM5Kyt6RitLS1RnMVp2NGRtRmVQTC9JSEY5
1259) WnV6TWlqRXdCRkE3WnJ0dkRqd3ZYcWtsMVpsR0c4eUV3PT0KQVhUWkRLVnNleldpR1RMUVZqa2hX
1260) bXBnK05MYlM0M2MxZEpvK2xGcC9yWUJYZkw3Wll5cGdjWE5IWXNzd01nc2VSSTAzNmt6bGZkdGNa
1261) bTdiUUN6M2JuQmZ6ZlorZFFuT2Y5STVSU2l0QzB2UmsydkQrOFdwbmRPSzNucGY5S0VpWklOSzVq
1262) TEZGTTJDTkNmQzBabXNRUlF3T0k2N3l5ZHhjVnFDMXBnWHV6QXRXamlsSUpnN0p6eUtsY3BJUGJu
1263) SUc0UzRSUlhIdW1wZnpoeWFZWkd6T0FDamRSYTZIMWJxYkJkZXFaSHMvQXJvM25mVjdlbjhxSUE5
1264) aVUrbnNweXFnPT1QSwECHgMKAAAAAABDj0lZ1ZXH3+YAAADmAAAABQAAAAAAAAAAAAAApIEAAAAA
1265) LmtleXNQSwECHgMKAAAAAABDj0lZ77OVHxcCAAAXAgAAAgAAAAAAAAAAAAAApIEJAQAAMGNQSwEC
1266) HgMKAAAAAABDj0lZGk9LVj8CAAA/AgAAAgAAAAAAAAAAAAAApIFAAwAAMTRQSwECHgMKAAAAAABD
1267) j0lZUkzxBhcCAAAXAgAAAgAAAAAAAAAAAAAApIGfBQAAMTZQSwUGAAAAAAQABADDAAAA1gcAAAAA
1268) """
1269)
1270) _VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED4_JAVASCRIPT_SOURCE = """
1271) // Executed in the top-level directory of the vault project code, in Node.js.
1272) const storeroom = require('storeroom')
1273) const Store = require('./lib/store.js')
1274) let store = new Store(storeroom.createFileAdapter('./broken-dir'), 'vault key')
1275) await store._storeroom.put('/dir/subdir/', [])
1276) await store._storeroom.put('/dir/', [])
1277) // The resulting "broken-dir" was then zipped manually.
1278) """
1279) VAULT_STOREROOM_BROKEN_DIR_CONFIG_ZIPPED4 = b"""
1280) UEsDBAoAAAAAAE+5SVloORS+5gAAAOYAAAAFAAAALmtleXN7InZlcnNpb24iOjF9CkV6dWRoNkRQ
1281) YTlNSWFabHZ5TytVYTFuamhjV2hIaTFBU0lKYW5zcXBxVlA0blN2V0twUzdZOUc2bjFSbi8vUnVM
1282) VitwcHp5SC9RQk83R0hFenNVMzdCUzFwUmVVeGhxUVlVTE56OXZvQ0crM1ZaL3VncU44dDJiU05m
1283) Nyt5K3hiNng2aVlFUmNZYTJ0UkhzZVdIc0laTE9ha2lDb0lRVGV3cndwYjVMM2pnd0E3SXBzaDkz
1284) QkxHSzM5dXNYNmo0R0I2WkRUeW5JcGk4V3JkbDhnWVZCN0tVPVBLAwQKAAAAAABPuUlZ663uUhcC
1285) AAAXAgAAAgAAADAzeyJ2ZXJzaW9uIjoxfQpBV2wzS2gzd21ZSFVZZU1RR3BLSVowdVd1VXFna09h
1286) YmRjNzNYYXVsZTNtVS9sN2Zvd1AyS21jbFp3ZDM5V3lYVzRTcEw4R0l4YStDZW51S3V0Wm5nb0FR
1287) bWlnaUJUbkFaais5TENCcGNIWlZNY2RBVkgxKzBFNGpsanZ1UkVwZ0tPS05LZjRsTUl1QnZ4VmFB
1288) ZkdwNHJYNEZ4MmpPSlk1Y3NQZzBBRFBoZVAwN29GWVQ3alorSUNEK1AxNGZPdWpwMGRUeDRrTDIy
1289) LzlqalRDNXBCNVF5NW5iOUx3Zk5DUWViSUVpaTZpbU0vRmFrK1dtV05tMndqMERSTEc4RHY3ZkE9
1290) PQpBU0c3NTNGTVVwWmxjK3E1YXRzcC93OUNqN2JPOFlpY24wZHg2UGloTmwzUS9WSjVVeGJmU3l0
1291) ZDFDNDBRU2xXeTJqOTJDWUd3VER6eEdBMXVnb0FCYi9kTllTelVwbHJFb3BuUVphYXdsdTVwV2x0
1292) Y1E5WTcveWN4S2E4b0JaaGY3RkFYcGo2c01wUW9zNzI5VFVabFd4UmI4VFRtN2FrVnR1OXcvYXlK
1293) RS9reDh4ZUYxSGJlc3Q4N1IxTGg2ODd3dS9XVUN2ZjNXYXo1VjNnZWY0RnpUTXg0bkpqSlZOd0U0
1294) SzAxUTlaVzQ0bmVvbExPUVI1MkZDeDZvbml3RW9tenc9PVBLAwQKAAAAAABPuUlZRXky4CsCAAAr
1295) AgAAAgAAADEweyJ2ZXJzaW9uIjoxfQpBWmlYWVlvNUdCY2d5dkFRaGtyK2ZjUkdVSkdabDd2dE5w
1296) T2Mrd1VzbXJhQWhRN3dKdlYraGhKcTlrcWNKQnBWU0gyUTBTTVVhb29iNjBJM1NYNUNtTkJRU2FH
1297) M3prd0Y0T2F4TnpCZUh0NFlpaDd4Y3p2ak4xR0hISDJQYW0xam05K09ja3JLVmNMVURtNXRKb2ZC
1298) Z1E4Q2NwMGZMVkdEaURjNWF0MjVMc2piQVcvNkZFSnJ5VVBHWis4UVdYRmlWMGdtVVZybVc3VUFy
1299) dGhJQitWNTdZS1BORi95Nng2OU43UTFQbmp1cUczdlpybzljMEJ3d012NWoyc3BMMTJHcTdzTDZE
1300) alB1d0dHbnB2MkVZQTFLbmc9CkFTdjQwUkgzRmxzbGVlU1NjRlZNRmh3dEx6eEYxK2xpcmxEL29X
1301) alJLQ05qVWZhUVpJTWpqMWRoVkhOakNUTWhWZ1ZONkl3b04xTnFOMEV6cmdhaTFBWnNiMm9UczYw
1302) QkI1UGh0U0hhQ2U2WllUeE1JemFPS2FIK0w2eHhtaXIrTlQxNTRXS0x5amJMams3MU1na3Nwa0Yy
1303) WDBJMnlaWW5IUUM0bmdEL24yZzRtSVI2Q1hWL0JOUXNzeTBEeXdGLzN6eGRRYWw5cFBtVk1qYnFu
1304) cHY5SFNqRTg4S25naVpBWFhJWU1OVGF2L3Q3Y3dEWGdNekhKTlU0Y2xnVUtIQVZ3QT09UEsDBAoA
1305) AAAAAE+5SVkPfKx9FwIAABcCAAACAAAAMWR7InZlcnNpb24iOjF9CkFYbHNLRzQwZG5ibTJvcXdY
1306) U2ZrSWp3Mmxpa0lDS3hVOXU3TU52VkZ1NEJ2R1FVVitSVVdsS3MxL25TSlBtM2U2OTRvVHdoeDFo
1307) RFF3U0M5U0QvbXd5bnpjSTloUnRCUWVXMkVMOVU5L1ZGcHFsVWY3Z1ZOMHZ0ZWpXYnV4QnhsZlRD
1308) Tys4SFBwU2Zaa2VOUld5R2JNdzBFSU9LTmxRYjk3OUF0c1g3THR0NytaTkJnakZHYkZxaHdwa3kx
1309) WUNDVng1UmNZZ2tma2ZjWnVncGpzc1RzNVFvK1p3QXBEcDZ4V3JjSHMxUDhvNktBRzAwcjZZbkNM
1310) N2ErU1dwZmVNTUJhZz09CkFadVF0cFZMWmVvb292NkdyQlpnb3B6VmRGUXBlK1h6QXZuZ2dPVnZM
1311) VWtCYVF2akl5K1VLdXVUVlFoQ1JiMVp6dGZQL2dsNnoxOEsyZW5sQlo2bGJTZnoxTlBWeUVzYXB3
1312) dDVpUVh4azd5UkJlZks1cFlsNTduUXlmcFZQbzlreFpnOVdHTkV3NVJ5MkExemhnNGl6TWxLRmJh
1313) UjZFZ0FjQ3NFOXAveGRLa29ZNjhOUlZmNXJDM3lMQjc3ZWgyS1hCUld2WDNZcE9XdW00OGtsbmtI
1314) akJjMFpiQmUrT3NZb3d5cXpoRFA2ZGQxRlFnMlFjK09vc3B4V0sycld4M01HZz09UEsBAh4DCgAA
1315) AAAAT7lJWWg5FL7mAAAA5gAAAAUAAAAAAAAAAAAAAKSBAAAAAC5rZXlzUEsBAh4DCgAAAAAAT7lJ
1316) Weut7lIXAgAAFwIAAAIAAAAAAAAAAAAAAKSBCQEAADAzUEsBAh4DCgAAAAAAT7lJWUV5MuArAgAA
1317) KwIAAAIAAAAAAAAAAAAAAKSBQAMAADEwUEsBAh4DCgAAAAAAT7lJWQ98rH0XAgAAFwIAAAIAAAAA
1318) AAAAAAAAAKSBiwUAADFkUEsFBgAAAAAEAAQAwwAAAMIHAAAAAA==
1319) """
1320)
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1321) CANNOT_LOAD_CRYPTOGRAPHY = (
|
Replace strings in `derivep...
Marco Ricci authored 2 months ago
|
1322) "Cannot load the required Python module 'cryptography'."
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1323) )
1324)
|
Test exporter data loading...
Marco Ricci authored 6 months ago
|
1325) skip_if_cryptography_support = pytest.mark.skipif(
1326) importlib.util.find_spec('cryptography') is not None,
1327) reason='cryptography support available; cannot test "no support" scenario',
1328) )
1329) skip_if_no_cryptography_support = pytest.mark.skipif(
1330) importlib.util.find_spec('cryptography') is None,
1331) reason='no "cryptography" support',
1332) )
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1333)
|
Actually correctly implemen...
Marco Ricci authored 3 months ago
|
1334)
1335) def hypothesis_settings_coverage_compatible(
1336) f: Any = None,
1337) ) -> Any:
1338) settings = (
1339) hypothesis.settings(
1340) # Running under coverage with the Python tracer increases
1341) # running times 40-fold, on my machines. Sadly, not every
1342) # Python version offers the C tracer, so sometimes the Python
1343) # tracer is used anyway.
1344) deadline=(
1345) 40 * deadline
1346) if (deadline := hypothesis.settings().deadline) is not None
1347) else None
1348) ),
1349) stateful_step_count=32,
1350) suppress_health_check=(hypothesis.HealthCheck.too_slow,),
1351) )
1352) if sys.gettrace() is not None
|
Fix hypothesis settings for...
Marco Ricci authored 2 months ago
|
1353) else hypothesis.settings(
1354) stateful_step_count=32,
1355) suppress_health_check=(hypothesis.HealthCheck.too_slow,),
1356) )
|
Centralize settings for hyp...
Marco Ricci authored 5 months ago
|
1357) )
|
Actually correctly implemen...
Marco Ricci authored 3 months ago
|
1358) return settings if f is None else settings(f)
|
Centralize settings for hyp...
Marco Ricci authored 5 months ago
|
1359)
|
Actually correctly implemen...
Marco Ricci authored 3 months ago
|
1360)
1361) def hypothesis_settings_coverage_compatible_with_caplog(
1362) f: Any = None,
1363) ) -> Any:
1364) parent_settings = hypothesis_settings_coverage_compatible()
1365) settings = hypothesis.settings(
1366) parent=parent_settings,
1367) suppress_health_check={
1368) hypothesis.HealthCheck.function_scoped_fixture,
1369) }
1370) | set(parent_settings.suppress_health_check),
1371) )
1372) return settings if f is None else settings(f)
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1373)
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1374)
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1375) def list_keys(self: Any = None) -> list[_types.SSHKeyCommentPair]:
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
1376) del self # Unused.
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1377) Pair = _types.SSHKeyCommentPair # noqa: N806
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1378) return [
1379) Pair(value.public_key_data, f'{key} test key'.encode('ASCII'))
1380) for key, value in ALL_KEYS.items()
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1381) ]
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1382)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1383)
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
1384) def sign(
1385) self: Any, key: bytes | bytearray, message: bytes | bytearray
1386) ) -> bytes:
1387) del self # Unused.
1388) assert message == vault.Vault._UUID
1389) for value in SUPPORTED_KEYS.values():
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1390) if value.public_key_data == key: # pragma: no branch
1391) assert value.expected_signature is not None
1392) return value.expected_signature
|
Align behavior with vault c...
Marco Ricci authored 5 months ago
|
1393) raise AssertionError
1394)
1395)
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1396) def list_keys_singleton(self: Any = None) -> list[_types.SSHKeyCommentPair]:
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
1397) del self # Unused.
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1398) Pair = _types.SSHKeyCommentPair # noqa: N806
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1399) list1 = [
|
Convert `tests.SSHTestKey`...
Marco Ricci authored 2 months ago
|
1400) Pair(value.public_key_data, f'{key} test key'.encode('ASCII'))
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1401) for key, value in SUPPORTED_KEYS.items()
1402) ]
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1403) return list1[:1]
1404)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1405)
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1406) def suitable_ssh_keys(conn: Any) -> Iterator[_types.SSHKeyCommentPair]:
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
1407) del conn # Unused.
|
Move storeroom helper types...
Marco Ricci authored 2 months ago
|
1408) Pair = _types.SSHKeyCommentPair # noqa: N806
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1409) yield from [
|
Move `sequin` and `ssh_agen...
Marco Ricci authored 7 months ago
|
1410) Pair(DUMMY_KEY1, b'no comment'),
1411) Pair(DUMMY_KEY2, b'a comment'),
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1412) ]
1413)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1414)
|
Fix user interface errors i...
Marco Ricci authored 3 months ago
|
1415) def phrase_from_key(
1416) key: bytes,
1417) /,
1418) *,
1419) conn: ssh_agent.SSHAgentClient | socket.socket | None = None,
1420) ) -> bytes:
1421) del conn
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1422) if key == DUMMY_KEY1: # pragma: no branch
1423) return DUMMY_PHRASE_FROM_KEY1
1424) raise KeyError(key) # pragma: no cover
1425)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1426)
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1427) @contextlib.contextmanager
1428) def isolated_config(
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1429) monkeypatch: pytest.MonkeyPatch,
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1430) runner: click.testing.CliRunner,
|
Introduce a central user co...
Marco Ricci authored 2 months ago
|
1431) main_config_str: str | None = None,
|
Fix typing issues in mypy s...
Marco Ricci authored 7 months ago
|
1432) ) -> Iterator[None]:
|
Consolidate `types` submodu...
Marco Ricci authored 7 months ago
|
1433) prog_name = cli.PROG_NAME
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1434) env_name = prog_name.replace(' ', '_').upper() + '_PATH'
|
Refactor code to run under...
Marco Ricci authored 3 months ago
|
1435) # Use parenthesized context manager expressions once Python 3.9
1436) # becomes unsupported.
1437) with contextlib.ExitStack() as stack:
1438) stack.enter_context(runner.isolated_filesystem())
1439) stack.enter_context(cli.StandardCLILogging.ensure_standard_logging())
1440) stack.enter_context(
1441) cli.StandardCLILogging.ensure_standard_warnings_logging()
1442) )
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1443) monkeypatch.setenv('HOME', os.getcwd())
1444) monkeypatch.setenv('USERPROFILE', os.getcwd())
1445) monkeypatch.delenv(env_name, raising=False)
|
Rename the configuration fi...
Marco Ricci authored 6 months ago
|
1446) config_dir = cli._config_filename(subsystem=None)
1447) os.makedirs(config_dir, exist_ok=True)
|
Introduce a central user co...
Marco Ricci authored 2 months ago
|
1448) if isinstance(main_config_str, str):
1449) with open(
1450) cli._config_filename('user configuration'),
1451) 'w',
1452) encoding='UTF-8',
1453) ) as outfile:
1454) outfile.write(main_config_str)
|
Modularize test helpers to...
Marco Ricci authored 6 months ago
|
1455) yield
1456)
1457)
1458) @contextlib.contextmanager
1459) def isolated_vault_config(
1460) monkeypatch: pytest.MonkeyPatch,
1461) runner: click.testing.CliRunner,
|
Introduce a central user co...
Marco Ricci authored 2 months ago
|
1462) vault_config: Any,
1463) main_config_str: str | None = None,
|
Modularize test helpers to...
Marco Ricci authored 6 months ago
|
1464) ) -> Iterator[None]:
|
Introduce a central user co...
Marco Ricci authored 2 months ago
|
1465) with isolated_config(
1466) monkeypatch=monkeypatch, runner=runner, main_config_str=main_config_str
1467) ):
|
Rename the configuration fi...
Marco Ricci authored 6 months ago
|
1468) config_filename = cli._config_filename(subsystem='vault')
1469) with open(config_filename, 'w', encoding='UTF-8') as outfile:
|
Introduce a central user co...
Marco Ricci authored 2 months ago
|
1470) json.dump(vault_config, outfile)
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1471) yield
1472)
|
Reformat everything with ruff
Marco Ricci authored 7 months ago
|
1473)
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
1474) @contextlib.contextmanager
1475) def isolated_vault_exporter_config(
1476) monkeypatch: pytest.MonkeyPatch,
1477) runner: click.testing.CliRunner,
1478) vault_config: str | bytes | None = None,
1479) vault_key: str | None = None,
1480) ) -> Iterator[None]:
1481) if TYPE_CHECKING:
|
Fix usage of `mypy --python...
Marco Ricci authored 2 months ago
|
1482) chdir: Callable[..., AbstractContextManager]
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
1483) else:
1484) try:
|
Fix usage of `mypy --python...
Marco Ricci authored 2 months ago
|
1485) chdir = contextlib.chdir # type: ignore[attr]
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
1486) except AttributeError:
1487)
1488) @contextlib.contextmanager
|
Move exporter command-line...
Marco Ricci authored 6 months ago
|
1489) def chdir(newpath: str) -> Iterator[None]: # pragma: no branch
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
1490) oldpath = os.getcwd()
1491) os.chdir(newpath)
1492) yield
1493) os.chdir(oldpath)
1494)
1495) with runner.isolated_filesystem():
1496) monkeypatch.setenv('HOME', os.getcwd())
1497) monkeypatch.setenv('USERPROFILE', os.getcwd())
1498) monkeypatch.delenv('VAULT_PATH', raising=False)
1499) monkeypatch.delenv('VAULT_KEY', raising=False)
1500) monkeypatch.delenv('LOGNAME', raising=False)
1501) monkeypatch.delenv('USER', raising=False)
1502) monkeypatch.delenv('USERNAME', raising=False)
1503) if vault_key is not None:
1504) monkeypatch.setenv('VAULT_KEY', vault_key)
|
Add support for Python 3.9
Marco Ricci authored 5 months ago
|
1505) # Use match/case here once Python 3.9 becomes unsupported.
1506) if isinstance(vault_config, str):
1507) with open('.vault', 'w', encoding='UTF-8') as outfile:
1508) print(vault_config, file=outfile)
1509) elif isinstance(vault_config, bytes):
1510) os.makedirs('.vault', mode=0o700, exist_ok=True)
|
Refactor code to run under...
Marco Ricci authored 3 months ago
|
1511) # Use parenthesized context manager expressions here once
1512) # Python 3.9 becomes unsupported.
1513) with contextlib.ExitStack() as stack:
1514) stack.enter_context(chdir('.vault'))
1515) tmpzipfile = stack.enter_context(
1516) tempfile.NamedTemporaryFile(suffix='.zip')
1517) )
|
Add support for Python 3.9
Marco Ricci authored 5 months ago
|
1518) for line in vault_config.splitlines():
1519) tmpzipfile.write(base64.standard_b64decode(line))
1520) tmpzipfile.flush()
1521) tmpzipfile.seek(0, 0)
1522) with zipfile.ZipFile(tmpzipfile.file) as zipfileobj:
1523) zipfileobj.extractall()
1524) elif vault_config is None:
1525) pass
1526) else: # pragma: no cover
1527) assert_never(vault_config)
|
Add preliminary tests for t...
Marco Ricci authored 6 months ago
|
1528) yield
1529)
1530)
|
Rename and regroup all test...
Marco Ricci authored 8 months ago
|
1531) def auto_prompt(*args: Any, **kwargs: Any) -> str:
|
Fix style issues with ruff...
Marco Ricci authored 7 months ago
|
1532) del args, kwargs # Unused.
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1533) return DUMMY_PASSPHRASE
|
Add missing tests for rewor...
Marco Ricci authored 6 months ago
|
1534)
1535)
1536) def make_file_readonly(
1537) pathname: str | bytes | os.PathLike[str],
1538) /,
1539) *,
1540) try_race_free_implementation: bool = True,
1541) ) -> None:
1542) """Mark a file as read-only.
1543)
1544) On POSIX, this entails removing the write permission bits for user,
1545) group and other, and ensuring the read permission bit for user is
1546) set.
1547)
1548) Unfortunately, Windows has its own rules: Set exactly(?) the read
1549) permission bit for user to make the file read-only, and set
1550) exactly(?) the write permission bit for user to make the file
1551) read/write; all other permission bit settings are ignored.
1552)
1553) The cross-platform procedure therefore is:
1554)
1555) 1. Call `os.stat` on the file, noting the permission bits.
1556) 2. Calculate the new permission bits POSIX-style.
1557) 3. Call `os.chmod` with permission bit `stat.S_IREAD`.
1558) 4. Call `os.chmod` with the correct POSIX-style permissions.
1559)
1560) If the platform supports it, we use a file descriptor instead of
1561) a path name. Otherwise, we use the same path name multiple times,
1562) and are susceptible to race conditions.
1563)
1564) """
1565) fname: int | str | bytes | os.PathLike[str]
1566) if try_race_free_implementation and {os.stat, os.chmod} <= os.supports_fd:
1567) fname = os.open(
1568) pathname,
1569) os.O_RDONLY
1570) | getattr(os, 'O_CLOEXEC', 0)
1571) | getattr(os, 'O_NOCTTY', 0),
1572) )
1573) else:
1574) fname = pathname
1575) try:
1576) orig_mode = os.stat(fname).st_mode
1577) new_mode = (
1578) orig_mode & ~stat.S_IWUSR & ~stat.S_IWGRP & ~stat.S_IWOTH
1579) | stat.S_IREAD
1580) )
1581) os.chmod(fname, stat.S_IREAD)
1582) os.chmod(fname, new_mode)
1583) finally:
1584) if isinstance(fname, int):
1585) os.close(fname)
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1586)
1587)
1588) class ReadableResult(NamedTuple):
1589) """Helper class for formatting and testing click.testing.Result objects."""
1590)
1591) exception: BaseException | None
1592) exit_code: int
1593) output: str
1594) stderr: str
1595)
1596) @classmethod
1597) def parse(cls, r: click.testing.Result, /) -> Self:
1598) try:
1599) stderr = r.stderr
1600) except ValueError:
1601) stderr = r.output
1602) return cls(r.exception, r.exit_code, r.output or '', stderr or '')
1603)
1604) def clean_exit(
1605) self, *, output: str = '', empty_stderr: bool = False
1606) ) -> bool:
1607) """Return whether the invocation exited cleanly.
1608)
1609) Args:
1610) output:
1611) An expected output string.
1612)
1613) """
1614) return (
1615) (
1616) not self.exception
1617) or (
1618) isinstance(self.exception, SystemExit)
1619) and self.exit_code == 0
1620) )
1621) )
1622) and (not output or output in self.output)
1623) and (not empty_stderr or not self.stderr)
1624) )
1625)
1626) def error_exit(
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1627) self,
1628) *,
1629) error: str | re.Pattern[str] | type[BaseException] = BaseException,
1630) record_tuples: Sequence[tuple[str, int, str]] = (),
|
Clean up testing machinery...
Marco Ricci authored 6 months ago
|
1631) ) -> bool:
1632) """Return whether the invocation exited uncleanly.
1633)
1634) Args:
1635) error:
1636) An expected error message, or an expected numeric error
1637) code, or an expected exception type.
1638)
1639) """
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1640)
1641) def error_match(error: str | re.Pattern[str], line: str) -> bool:
1642) return (
1643) error in line
1644) if isinstance(error, str)
1645) else error.match(line) is not None
1646) )
1647)
|
Add support for Python 3.9
Marco Ricci authored 5 months ago
|
1648) # Use match/case here once Python 3.9 becomes unsupported.
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1649) if isinstance(error, type):
1650) return isinstance(self.exception, error)
1651) else: # noqa: RET505
1652) assert isinstance(error, (str, re.Pattern))
|
Add support for Python 3.9
Marco Ricci authored 5 months ago
|
1653) return (
1654) isinstance(self.exception, SystemExit)
1655) and self.exit_code > 0
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1656) and (
1657) not error
1658) or any(
1659) error_match(error, line)
1660) for line in self.stderr.splitlines(True)
1661) )
1662) or error_emitted(error, record_tuples)
1663) )
|
Add support for Python 3.9
Marco Ricci authored 5 months ago
|
1664) )
|
Add test fixture for manual...
Marco Ricci authored 5 months ago
|
1665)
1666)
1667) def parse_sh_export_line(line: str, *, env_name: str) -> str:
1668) line = line.rstrip('\r\n')
1669) shlex_parser = shlex.shlex(
1670) instream=line, posix=True, punctuation_chars=True
1671) )
1672) shlex_parser.whitespace = ' \t'
1673) tokens = list(shlex_parser)
1674) orig_tokens = tokens.copy()
1675) if tokens[-1] == ';':
1676) tokens.pop()
1677) if tokens[-3:] == [';', 'export', env_name]:
1678) tokens[-3:] = []
1679) tokens[:0] = ['export']
1680) if not (
1681) len(tokens) == 2
1682) and tokens[0] == 'export'
1683) and tokens[1].startswith(f'{env_name}=')
1684) ):
1685) msg = f'Cannot parse sh line: {orig_tokens!r} -> {tokens!r}'
1686) raise ValueError(msg)
1687) return tokens[1].split('=', 1)[1]
|
Adapt the test suite to use...
Marco Ricci authored 3 months ago
|
1688)
1689)
1690) def message_emitted_factory(
1691) level: int,
1692) *,
1693) logger_name: str = cli.PROG_NAME,
1694) ) -> Callable[[str | re.Pattern[str], Sequence[tuple[str, int, str]]], bool]:
1695) """Return a function to test if a matching message was emitted.
1696)
1697) Args:
1698) level: The level to match messages at.
1699) logger_name: The name of the logger to match against.
1700)
1701) """
1702)
1703) def message_emitted(
1704) text: str | re.Pattern[str],
1705) record_tuples: Sequence[tuple[str, int, str]],
1706) ) -> bool:
1707) """Return true if a matching message was emitted.
1708)
1709) Args:
1710) text: Substring or pattern to match against.
1711) record_tuples: Items to match.
1712)
1713) """
1714)
1715) def check_record(record: tuple[str, int, str]) -> bool:
1716) if record[:2] != (logger_name, level):
1717) return False
1718) if isinstance(text, str):
1719) return text in record[2]
1720) return text.match(record[2]) is not None # pragma: no cover
1721)
1722) return any(map(check_record, record_tuples))
1723)
1724) return message_emitted
1725)
1726)
1727) # No need to assert debug messages as of yet.
1728) info_emitted = message_emitted_factory(logging.INFO)
1729) warning_emitted = message_emitted_factory(logging.WARNING)
1730) deprecation_warning_emitted = message_emitted_factory(
1731) logging.WARNING, logger_name=f'{cli.PROG_NAME}.deprecation'
1732) )
|
Fix usage of `--debug`, `--...
Marco Ricci authored 3 months ago
|
1733) deprecation_info_emitted = message_emitted_factory(
1734) logging.INFO, logger_name=f'{cli.PROG_NAME}.deprecation'
1735) )
|