Coverage for src/lexigram/admin/validation/validators.py: 0%
8 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
1"""Admin validator factory functions.
3Provides pre-configured ``Validator`` instances for common admin user
4operations such as creation and update.
5"""
7from __future__ import annotations
9from lexigram.admin.validation.rules import (
10 IsValidAdminEmail,
11 IsValidUsername,
12 StrongPassword,
13)
14from lexigram.validation.engine import ValidatorImpl as Validator
15from lexigram.validation.rules import required
18def create_user_validator() -> Validator:
19 """Return a Validator configured for admin user creation.
21 Applies:
22 - ``email``: required + valid admin email format
23 - ``password``: required + strong-password rules
24 - ``username``: required + valid username format
26 Returns:
27 A fully configured :class:`~lexigram.validation.validator.Validator`.
28 """
29 return (
30 Validator()
31 .rule("email", required(), IsValidAdminEmail())
32 .rule("password", required(), StrongPassword())
33 .rule("username", required(), IsValidUsername())
34 )
37def update_user_validator() -> Validator:
38 """Return a Validator configured for admin user updates.
40 Applies email and username validation only; password is not required
41 on updates (use a dedicated change-password flow instead).
43 Applies:
44 - ``email``: valid admin email format (optional field)
45 - ``username``: valid username format (optional field)
47 Returns:
48 A fully configured :class:`~lexigram.validation.validator.Validator`.
49 """
50 return (
51 Validator()
52 .rule("email", IsValidAdminEmail())
53 .rule("username", IsValidUsername())
54 )