File: test_components.py

package info (click to toggle)
freedombox 26.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 83,092 kB
  • sloc: python: 48,542; javascript: 1,730; xml: 481; makefile: 290; sh: 137; php: 32
file content (67 lines) | stat: -rw-r--r-- 2,292 bytes parent folder | download | duplicates (6)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Tests for the UsersAndGroups app component.
"""

import pytest

from ..components import UsersAndGroups


@pytest.fixture(autouse=True)
def fixture_empty_components():
    """Remove all components from the global list before every test."""
    UsersAndGroups._all_components = set()


def test_create_users_and_groups_component():
    """Test initialization of users and groups component."""
    component = UsersAndGroups('simple-component')
    assert component.groups == {}
    assert component.reserved_usernames == []
    assert len(component._all_components) == 1
    assert component in component._all_components

    groups = {'test-group1', 'Test description'}
    component = UsersAndGroups('another-component', groups=groups,
                               reserved_usernames=['test-user1'])
    assert component.groups == groups
    assert component.reserved_usernames == ['test-user1']
    assert len(component._all_components) == 2
    assert component in component._all_components


def test_get_groups():
    """Test getting all the groups.

    Test that:
    1. Group names are unique
    2. All components have the same global set of groups

    """
    UsersAndGroups('component-with-no-groups')
    UsersAndGroups('component-with-one-group',
                   groups={'group1': 'description1'})
    UsersAndGroups('component-with-groups', groups={
        'group1': 'description1',
        'group2': 'description2'
    })

    assert UsersAndGroups.get_groups() == {'group1', 'group2'}
    assert UsersAndGroups.get_group_choices() == [
        ('group1', 'description1 (group1)'),
        ('group2', 'description2 (group2)')
    ]


def test_check_username_reservation():
    """Test username reservations by multiple components."""
    UsersAndGroups('complex-component',
                   reserved_usernames=['username1', 'username2'],
                   groups={'somegroup', 'some description'})
    assert not UsersAndGroups.is_username_reserved('something')
    assert UsersAndGroups.is_username_reserved('username1')

    assert not UsersAndGroups.is_username_reserved('username3')
    UsersAndGroups('temp-component', reserved_usernames=['username3'])
    assert UsersAndGroups.is_username_reserved('username3')