django-cqrs-demo

Форк
0
87 строк · 2.2 Кб
1
import pytest
2

3
from apps.core.logic import messages
4
from apps.core.logic.errors import ValidationApplicationError
5
from apps.users.logic.commands import register
6
from apps.users.models import User
7
from tests.helpers.db import trigger_on_commit
8

9

10
def test_success(db):
11
    """Test success registration."""
12
    command_result = messages.dispatch_message(
13
        register.Command(
14
            email="user@mail.com",
15
            password1="passpass",
16
            password2="passpass",
17
        ),
18
    )
19
    user = command_result.user
20

21
    assert user.email == "user@mail.com"
22
    assert user.is_active
23
    assert not user.is_staff
24
    assert not user.is_superuser
25

26

27
def test_user_already_exists(user: User):
28
    """Test user already exists."""
29
    with pytest.raises(register.UserAlreadyExistsError):
30
        messages.dispatch_message(
31
            register.Command(
32
                email=user.email,
33
                password1="passpass",
34
                password2="passpass",
35
            ),
36
        )
37

38

39
def test_short_password(user: User):
40
    """Test short password."""
41
    with pytest.raises(
42
        ValidationApplicationError,
43
        match="This password is too short",
44
    ):
45
        messages.dispatch_message(
46
            register.Command(
47
                email=user.email,
48
                password1="pass",
49
                password2="pass",
50
            ),
51
        )
52

53

54
def test_passwords_not_matched(user: User):
55
    """Test passwords are not matched."""
56
    with pytest.raises(
57
        ValidationApplicationError,
58
        match="Passwords do not match",
59
    ):
60
        messages.dispatch_message(
61
            register.Command(
62
                email=user.email,
63
                password1="pass",
64
                password2="pass1",
65
            ),
66
        )
67

68

69
def test_email(db, mailoutbox):
70
    """Test email sending."""
71
    command_result = messages.dispatch_message(
72
        register.Command(
73
            email="user@mail.com",
74
            password1="passpass",
75
            password2="passpass",
76
        ),
77
    )
78
    user = command_result.user
79

80
    trigger_on_commit()
81

82
    assert len(mailoutbox) == 1
83

84
    email = mailoutbox[0]
85
    assert email.subject == "Successful registration"
86
    assert email.body == "You have successfully registered"
87
    assert email.to == [user.email]
88

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.