Passed
Push — main ( 4ee965...bf18b3 )
by Jochen
06:06
created

tests.integration.blueprints.site.user.test_views_email_address_change   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 41
dl 0
loc 80
rs 10
c 0
b 0
f 0
wmc 5

4 Functions

Rating   Name   Duplication   Size   Complexity  
A test_unknown_token() 0 24 1
A change() 0 4 2
A test_valid_token() 0 24 1
A create_verification_token() 0 5 1
1
"""
2
:Copyright: 2006-2021 Jochen Kupperschmidt
3
:License: Revised BSD (see `LICENSE` file for details)
4
"""
5
6
from byceps.services.user import service as user_service
7
from byceps.services.verification_token import (
8
    service as verification_token_service,
9
)
10
11
from tests.helpers import http_client
12
13
14
def test_valid_token(site_app, site, make_user):
15
    user = make_user(
16
        'EmailChangeSuccess',
17
        email_address='[email protected]',
18
        email_address_verified=True,
19
    )
20
21
    user_before = user_service.get_db_user(user.id)
22
    assert user_before.email_address == '[email protected]'
23
    assert user_before.email_address_verified
24
25
    token = create_verification_token(user.id, '[email protected]')
26
27
    # -------------------------------- #
28
29
    response = change(site_app, token)
30
31
    # -------------------------------- #
32
33
    assert response.status_code == 302
34
35
    user_after = user_service.get_db_user(user.id)
36
    assert user_after.email_address == '[email protected]'
37
    assert user_after.email_address_verified
38
39
40
def test_unknown_token(site_app, site, make_user):
41
    user = make_user(
42
        'EmailChangeFail',
43
        email_address='[email protected]',
44
        email_address_verified=True,
45
    )
46
47
    user_before = user_service.get_db_user(user.id)
48
    assert user_before.email_address == '[email protected]'
49
    assert user_before.email_address_verified
50
51
    unknown_token = 'wZdSLzkT-zRf2x2T6AR7yGa3Nc_X3Nn3F3XGPvPtOhw'
52
53
    # -------------------------------- #
54
55
    response = change(site_app, unknown_token)
56
57
    # -------------------------------- #
58
59
    assert response.status_code == 404
60
61
    user_after = user_service.get_db_user(user.id)
62
    assert user_after.email_address == '[email protected]'
63
    assert user_after.email_address_verified
64
65
66
# helpers
67
68
69
def change(app, token):
70
    url = f'/users/email_address/change/{token}'
71
    with http_client(app) as client:
72
        return client.get(url)
73
74
75
def create_verification_token(user_id, new_email_address):
76
    token = verification_token_service.create_for_email_address_change(
77
        user_id, new_email_address
78
    )
79
    return token.token
80