24:class TestEncryption:
25:    def test_roundtrip(self):
31:    def test_ciphertext_changes_each_call(self):
36:    def test_empty_values(self):
41:    def test_unicode_roundtrip(self):
45:    def test_plaintext_never_in_ciphertext(self):
52:class TestPasswords:
53:    def test_hash_and_verify(self):
59:    def test_unique_salts(self):
62:    def test_bcrypt_format(self):
67:class TestJwt:
68:    def test_create_and_decode(self):
73:    def test_expired_token_rejected(self):
77:    def test_garbage_token_rejected(self):
81:    def test_tampered_signature_rejected(self):
86:class TestErrorClassification:
92:    def test_temporary_patterns(self, msg):
100:    def test_permanent_patterns(self, msg):
103:    def test_unknown_when_no_pattern(self):
139:class TestRotationAssigner:
140:    def test_sequential_round_robin(self):
146:    def test_skips_unauthorized_and_inactive(self):
154:    def test_max_per_account_respected(self):
162:    def test_cooldown_respected(self):
169:    def test_cooldown_expiry_allows_reuse(self):
176:    def test_weighted_favors_heavy_account(self):
184:    def test_weighted_default_weight_one(self):
192:    def test_no_accounts_returns_none(self):
196:    def test_status_reporting(self):
204:    def test_explicit_account_id_pin(self):
210:class TestSubjectSelector:
211:    def test_round_robin(self):
217:    def test_random_variety(self):
223:    def test_fixed_first(self):
228:    def test_empty(self):
232:class TestTemplateSequencer:
233:    def test_repeat_mode_cycles(self):
240:    def test_stop_mode_halts(self):
248:    def test_random_mode(self):
254:    def test_empty(self):
===
13:class TestInvoiceGeneration:
14:    def test_default_format_shape(self):
27:    def test_crypto_strong_distinct_values(self):
34:    def test_collision_checking_avoids_used(self):
43:    def test_custom_prefix_and_format(self):
52:    def test_date_token(self):
57:    def test_hash_token(self):
64:    def test_lowercase_tokens_and_unknown_token_passthrough(self):
71:class TestRandomFinancial:
72:    def test_amount_within_range(self):
79:    def test_amount_default_range(self):
85:    def test_amount_swapped_bounds(self):
90:    def test_shipping_within_range(self):
96:    def test_random_name_format(self):
103:class TestSubstitution:
116:    def test_all_known_variables_substituted(self):
143:    def test_missing_value_marked_not_faked(self):
150:    def test_unknown_variable_flagged(self):
156:    def test_custom_csv_columns(self):
164:    def test_orm_style_recipient_dict_via_snake_to_camel(self):
171:    def test_used_list_populated(self):
177:class TestAnalysis:
178:    def test_analyze_reports_unknown(self):
183:    def test_analyze_with_custom_fields(self):
187:    def test_analyze_no_vars(self):
