Skip to content

Commit 416f529

Browse files
committed
TESTS: Add access control simple filter tests
Added 3 tests for access control simple filter using the new testing framework
1 parent ed6956e commit 416f529

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
"""
2+
SSSD Authentication Test Cases
3+
4+
:requirement: access control
5+
"""
6+
7+
from __future__ import annotations
8+
9+
import pytest
10+
from sssd_test_framework.roles.client import Client
11+
from sssd_test_framework.roles.generic import GenericProvider
12+
from sssd_test_framework.topology import KnownTopologyGroup
13+
14+
15+
@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
16+
@pytest.mark.parametrize("sssd_service_user", ("root", "sssd"))
17+
@pytest.mark.parametrize("method", ["su", "ssh"])
18+
@pytest.mark.importance("critical")
19+
@pytest.mark.require(
20+
lambda client, sssd_service_user: ((sssd_service_user == "root") or client.features["non-privileged"]),
21+
"SSSD was built without support for running under non-root",
22+
)
23+
def test_access_control__simple_filter_permits_user_login(
24+
client: Client, provider: GenericProvider, method: str, sssd_service_user: str
25+
):
26+
"""
27+
:title: Simple access filter permits user login
28+
:setup:
29+
1. Create users ‘user1’ and ‘user2’
30+
2. Configure SSSD with ‘access_provider = simple’, ‘simple_allow_users = user1’
31+
3. Start SSSD
32+
:steps:
33+
1. Try to login as ‘user1’
34+
2. Try to login as ‘user2’
35+
:expectedresults:
36+
1. User1 can login
37+
2. User2 cannot login
38+
:customerscenario: False
39+
"""
40+
provider.user("user1").add(password="Secret123")
41+
provider.user("user2").add(password="Secret123")
42+
43+
client.sssd.domain["access_provider"] = "simple"
44+
client.sssd.domain["simple_allow_users"] = "user1"
45+
46+
client.sssd.start(service_user=sssd_service_user)
47+
48+
assert client.auth.parametrize(method).password("user1", "Secret123"), "User login!"
49+
assert not client.auth.parametrize(method).password("user2", "Secret123"), "User cannot login!"
50+
51+
52+
@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
53+
@pytest.mark.parametrize("sssd_service_user", ("root", "sssd"))
54+
@pytest.mark.parametrize("method", ["su", "ssh"])
55+
@pytest.mark.importance("critical")
56+
@pytest.mark.require(
57+
lambda client, sssd_service_user: ((sssd_service_user == "root") or client.features["non-privileged"]),
58+
"SSSD was built without support for running under non-root",
59+
)
60+
def test_access_control__simple_filter_deny_user_login(
61+
client: Client, provider: GenericProvider, method: str, sssd_service_user: str
62+
):
63+
"""
64+
:title: Simple access filter permits user login
65+
:setup:
66+
1. Create users ‘user1’ and ‘user2’
67+
2. Configure SSSD with ‘access_provider = simple’, ‘simple_deny_users = user1’
68+
3. Start SSSD
69+
:steps:
70+
1. Try to login as ‘user1’
71+
2. Try to login as ‘user2’
72+
:expectedresults:
73+
1. User1 cannot login
74+
2. User2 can login
75+
:customerscenario: False
76+
"""
77+
provider.user("user1").add(password="Secret123")
78+
provider.user("user2").add(password="Secret123")
79+
80+
client.sssd.domain["access_provider"] = "simple"
81+
client.sssd.domain["simple_deny_users"] = "user1"
82+
83+
client.sssd.start(service_user=sssd_service_user)
84+
85+
assert not client.auth.parametrize(method).password("user1", "Secret123"), "User cannot login!"
86+
assert client.auth.parametrize(method).password("user2", "Secret123"), "User can login!"
87+
88+
89+
@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
90+
@pytest.mark.parametrize("sssd_service_user", ("root", "sssd"))
91+
@pytest.mark.parametrize("method", ["su", "ssh"])
92+
@pytest.mark.importance("critical")
93+
@pytest.mark.require(
94+
lambda client, sssd_service_user: ((sssd_service_user == "root") or client.features["non-privileged"]),
95+
"SSSD was built without support for running under non-root",
96+
)
97+
def test_access_control__simple_filter_permits_user_login_based_on_group(
98+
client: Client, provider: GenericProvider, method: str, sssd_service_user: str
99+
):
100+
"""
101+
:title: Simple access filter permits user login
102+
:setup:
103+
1. Create users ‘user1’, ‘user2’, ‘user3’
104+
2. Create group ‘group1’ with members ‘user1, user3’
105+
3. Create group ‘group2’ with member ‘user2, user3’
106+
4. Configure SSSD with ‘access_provider = simple’,
107+
5. Configure SSSD with ‘simple_allow_groups = group1’ and ‘simple_deny_groups = group2’
108+
6. Start SSSD
109+
:steps:
110+
1. Try to login with ‘user1’
111+
2. Try to login with ‘user2’
112+
3. Try to login with ‘user3’
113+
:expectedresults:
114+
1. User1 can login
115+
2. User2 cannot login
116+
3. User3 cannot login
117+
:customerscenario: False
118+
"""
119+
user1 = provider.user("user1").add(password="Secret123")
120+
user2 = provider.user("user2").add(password="Secret123")
121+
user3 = provider.user("user3").add(password="Secret123")
122+
123+
group1 = provider.group("group1").add()
124+
group2 = provider.group("group2").add()
125+
126+
group1.add_member(user1)
127+
group1.add_member(user3)
128+
group2.add_member(user2)
129+
group2.add_member(user3)
130+
131+
client.sssd.domain["access_provider"] = "simple"
132+
client.sssd.domain["simple_allow_groups"] = "group1"
133+
client.sssd.domain["simple_deny_groups"] = "group2"
134+
135+
client.sssd.start(service_user=sssd_service_user)
136+
137+
assert client.auth.parametrize(method).password("user1", "Secret123"), "User can login!"
138+
assert not client.auth.parametrize(method).password("user2", "Secret123"), "User cannot login!"
139+
assert not client.auth.parametrize(method).password("user3", "Secret123"), "User cannot login!"

0 commit comments

Comments
 (0)