Skip to content

Commit bc682e8

Browse files
committed
Test for access control
1 parent fc20f33 commit bc682e8

File tree

3 files changed

+97
-6
lines changed

3 files changed

+97
-6
lines changed

tests/models/acl_model_test.py

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,88 @@
1+
from typing import List
2+
13
import pytest
24

5+
from ssh_manager_backend.app.models.access_control import AccessControlModel
6+
from ssh_manager_backend.app.models.user import UserModel
7+
from tests.test_ssh_manager_backend import db_cleanup
8+
39

410
class TestAccessControlModel:
5-
pass
11+
@pytest.fixture
12+
def cleanup(self):
13+
yield
14+
db_cleanup()
15+
16+
def test_create(self):
17+
acl: AccessControlModel = AccessControlModel()
18+
user: UserModel = UserModel()
19+
20+
name: str = "test_user"
21+
username = "test_username"
22+
password: str = "test_password"
23+
admin: bool = False
24+
encrypted_dek: bytes = b"test_encrypted_dek"
25+
iv_for_dek: bytes = b"test_iv_for_dek"
26+
salt_for_dek: bytes = b"test_salt_for_dek"
27+
iv_for_kek: bytes = b"test_iv_for_kek"
28+
salt_for_kek: bytes = b"test_salt_for_kek"
29+
salt_for_password: bytes = b"test_salt_for_password"
30+
31+
assert acl.create(username=username) is False
32+
33+
assert (
34+
user.create(
35+
name=name,
36+
username=username,
37+
password=password,
38+
admin=admin,
39+
encrypted_dek=encrypted_dek,
40+
iv_for_dek=iv_for_dek,
41+
salt_for_dek=salt_for_dek,
42+
iv_for_kek=iv_for_kek,
43+
salt_for_kek=salt_for_kek,
44+
salt_for_password=salt_for_password,
45+
)
46+
is True
47+
)
48+
49+
assert acl.create(username=username) is True
50+
51+
def test_grant_access(self):
52+
acl: AccessControlModel = AccessControlModel()
53+
username: str = "test_username"
54+
ip_addresses: List[str] = ["1.1.1.1", "1.0.0.1"]
55+
56+
assert acl.grant_access(username=username, ip_addresses=ip_addresses) is True
57+
58+
assert (
59+
acl.grant_access(
60+
username="non_existent_username", ip_addresses=ip_addresses
61+
)
62+
is False
63+
)
64+
65+
assert sorted(acl.get_all_ips(username=username)) == sorted(ip_addresses)
66+
67+
def test_revoke_access(self, cleanup):
68+
acl: AccessControlModel = AccessControlModel()
69+
username: str = "test_username"
70+
ip_addresses: List[str] = ["1.1.1.1", "1.0.0.1"]
71+
72+
assert (
73+
acl.revoke_access(username=username, ip_addresses=[ip_addresses[0]]) is True
74+
)
75+
76+
assert (
77+
acl.revoke_access(username=username, ip_addresses=["non_existent_ip"])
78+
is True
79+
)
80+
81+
assert (
82+
acl.revoke_access(
83+
username="non_existent_username", ip_addresses=ip_addresses
84+
)
85+
is False
86+
)
87+
88+
assert acl.get_all_ips(username=username) == [ip_addresses[1]]

tests/models/user_model_test.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1+
import pytest
2+
13
from ssh_manager_backend.app.models.user import UserModel
24
from ssh_manager_backend.db import User
5+
from tests.test_ssh_manager_backend import db_cleanup
36

47

58
class TestUserModel:
9+
@pytest.fixture
10+
def cleanup(self):
11+
yield
12+
db_cleanup()
13+
614
def test_create(self):
715
user = UserModel()
816
name: str = "test_user"
@@ -72,7 +80,7 @@ def test_get_user(self):
7280
assert isinstance(user.get_user(username), User) is True
7381
print(User)
7482

75-
def test_destroy_user(self):
83+
def test_destroy_user(self, cleanup):
7684
user = UserModel()
7785
username: str = "test_username"
7886
assert user.destroy_user("non_existent_username") is False

tests/test_ssh_manager_backend.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ def test_version():
77
assert __version__ == "0.1.0"
88

99

10-
def test_delete():
10+
def db_cleanup():
1111
session = db_session()
12-
session.query(User).delete()
13-
session.query(Key).delete()
14-
session.query(KeyMapping).delete()
1512
session.query(AccessControl).delete()
13+
session.query(KeyMapping).delete()
14+
session.query(Key).delete()
15+
session.query(User).delete()
1616
session.commit()
1717
db_session.remove()

0 commit comments

Comments
 (0)