Coverage for src/auth/plugin.py: 38%
34 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-26 17:11 +0300
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-26 17:11 +0300
1import click
2from click import Group
3from litestar.plugins import CLIPlugin
4from core.cli import coro
5from core.database import session_maker
6from core.mail import MailClient
7from core.settings import settings
8from pathlib import Path
9import yaml
10from .services import provide_user_service, provide_role_service, provide_permission_service
11from .loaders import AuthLoader
14class AuthPlugin(CLIPlugin):
15 def on_cli_init(self, cli: Group) -> None:
16 @cli.group(help="Manage auth, load data with ``load`` command")
17 @click.version_option(prog_name="auth")
18 def auth(): ...
20 @auth.command(help="load auth data")
21 @coro
22 async def load():
23 async with session_maker() as session:
24 click.echo("Loading auth data... ")
25 loader = AuthLoader(
26 user_service=await provide_user_service(session),
27 role_service=await provide_role_service(session),
28 permission_service=await provide_permission_service(session),
29 )
31 with open(f"{Path(__file__).parent.resolve()}/fixtures.yaml") as f:
32 data = yaml.safe_load(f)
33 await loader.load(data)
35 @auth.command(help="load auth data")
36 @coro
37 async def clear():
38 async with session_maker() as session:
39 user_service = await provide_user_service(session)
40 await user_service.delete_where()
41 click.echo("Clear auth data")
43 @auth.command(help="Send test mail")
44 @click.argument("recipient")
45 def send_mail(recipient):
46 mail_controller = MailClient(settings.mail_config)
47 mail_controller.send([recipient], "test", "test")