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

1"""Admin validator factory functions. 

2 

3Provides pre-configured ``Validator`` instances for common admin user 

4operations such as creation and update. 

5""" 

6 

7from __future__ import annotations 

8 

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 

16 

17 

18def create_user_validator() -> Validator: 

19 """Return a Validator configured for admin user creation. 

20 

21 Applies: 

22 - ``email``: required + valid admin email format 

23 - ``password``: required + strong-password rules 

24 - ``username``: required + valid username format 

25 

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 ) 

35 

36 

37def update_user_validator() -> Validator: 

38 """Return a Validator configured for admin user updates. 

39 

40 Applies email and username validation only; password is not required 

41 on updates (use a dedicated change-password flow instead). 

42 

43 Applies: 

44 - ``email``: valid admin email format (optional field) 

45 - ``username``: valid username format (optional field) 

46 

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 )