1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""
:Copyright: 2014-2025 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

from byceps.services.authn.api import authn_api_domain_service
from byceps.services.authz.models import PermissionID
from byceps.services.user.models.user import UserID

from tests.helpers import generate_uuid


def test_create_api_token():
    creator_id = UserID(generate_uuid())
    permissions = set([PermissionID('do_this'), PermissionID('do_that')])
    num_bytes = 64
    description = 'For this and that'

    actual = authn_api_domain_service.create_api_token(
        creator_id, permissions, num_bytes=num_bytes, description=description
    )

    assert actual.id is not None
    assert actual.created_at is not None
    assert len(actual.token) >= 64
    assert actual.token.startswith('api_')
    assert actual.permissions == permissions
    assert actual.description == description
    assert not actual.suspended