Move vault service config generation to top-level tests module
Marco Ricci

Marco Ricci commited on 2024-10-14 22:20:29
Zeige 2 geänderte Dateien mit 31 Einfügungen und 31 Löschungen.


The generation of vault service configurations is not inherently tied to
the `vault` module only; the CLI also requires its use.  So move it to
a more central location.
... ...
@@ -321,6 +321,36 @@ def _test_config_ids(val: VaultTestConfig) -> Any:  # pragma: no cover
321 321
     return val[1] or (val[0], val[1], val[2])
322 322
 
323 323
 
324
+@strategies.composite
325
+def vault_full_service_config(draw: strategies.DrawFn) -> dict[str, int]:
326
+    lower = draw(strategies.integers(min_value=0, max_value=10))
327
+    upper = draw(strategies.integers(min_value=0, max_value=10))
328
+    number = draw(strategies.integers(min_value=0, max_value=10))
329
+    space = draw(strategies.integers(min_value=0, max_value=10))
330
+    dash = draw(strategies.integers(min_value=0, max_value=10))
331
+    symbol = draw(strategies.integers(min_value=0, max_value=10))
332
+    repeat = draw(strategies.integers(min_value=0, max_value=10))
333
+    length = draw(
334
+        strategies.integers(
335
+            min_value=max(1, lower + upper + number + space + dash + symbol),
336
+            max_value=70,
337
+        )
338
+    )
339
+    hypothesis.assume(lower + upper + number + dash + symbol > 0)
340
+    hypothesis.assume(lower + upper + number + space + symbol > 0)
341
+    hypothesis.assume(repeat >= space)
342
+    return {
343
+        'lower': lower,
344
+        'upper': upper,
345
+        'number': number,
346
+        'space': space,
347
+        'dash': dash,
348
+        'symbol': symbol,
349
+        'repeat': repeat,
350
+        'length': length,
351
+    }
352
+
353
+
324 354
 def is_smudgable_vault_test_config(conf: VaultTestConfig) -> bool:
325 355
     """Check whether this vault test config can be effectively smudged.
326 356
 
... ...
@@ -268,43 +268,13 @@ class TestVault:
268 268
             assert v._estimate_sufficient_hash_length(None)  # type: ignore[arg-type]
269 269
 
270 270
 
271
-@strategies.composite
272
-def vault_config(draw: strategies.DrawFn) -> dict[str, int]:
273
-    lower = draw(strategies.integers(min_value=0, max_value=10))
274
-    upper = draw(strategies.integers(min_value=0, max_value=10))
275
-    number = draw(strategies.integers(min_value=0, max_value=10))
276
-    space = draw(strategies.integers(min_value=0, max_value=10))
277
-    dash = draw(strategies.integers(min_value=0, max_value=10))
278
-    symbol = draw(strategies.integers(min_value=0, max_value=10))
279
-    repeat = draw(strategies.integers(min_value=0, max_value=10))
280
-    length = draw(
281
-        strategies.integers(
282
-            min_value=max(1, lower + upper + number + space + dash + symbol),
283
-            max_value=70,
284
-        )
285
-    )
286
-    hypothesis.assume(lower + upper + number + dash + symbol > 0)
287
-    hypothesis.assume(lower + upper + number + space + symbol > 0)
288
-    hypothesis.assume(repeat >= space)
289
-    return {
290
-        'lower': lower,
291
-        'upper': upper,
292
-        'number': number,
293
-        'space': space,
294
-        'dash': dash,
295
-        'symbol': symbol,
296
-        'repeat': repeat,
297
-        'length': length,
298
-    }
299
-
300
-
301 271
 class TestHypotheses:
302 272
     @tests.hypothesis_settings_coverage_compatible
303 273
     @hypothesis.given(
304 274
         phrase=strategies.one_of(
305 275
             strategies.binary(min_size=1), strategies.text(min_size=1)
306 276
         ),
307
-        config=vault_config(),
277
+        config=tests.vault_full_service_config(),
308 278
         service=strategies.text(min_size=1),
309 279
     )
310 280
     # regression test
311 281