1
+ # test_role.py
2
+
3
+ import pytest
4
+ from utils .models import Role
5
+
6
+ def test_role_creation ():
7
+ """Test basic role creation"""
8
+ role = Role ("Admin" , ["read" , "write" ])
9
+ assert role .name == "Admin"
10
+ assert role .permissions == ["read" , "write" ]
11
+
12
+ def test_role_add_permission ():
13
+ """Test adding a permission to role"""
14
+ role = Role ("Admin" , ["read" ])
15
+ role .add_permission ("write" )
16
+ assert "write" in role .permissions
17
+ assert len (role .permissions ) == 2
18
+
19
+ def test_role_remove_permission ():
20
+ """Test removing a permission from role"""
21
+ role = Role ("Admin" , ["read" , "write" ])
22
+ role .remove_permission ("write" )
23
+ assert "write" not in role .permissions
24
+ assert len (role .permissions ) == 1
25
+
26
+ def test_role_has_permission ():
27
+ """Test checking if role has specific permission"""
28
+ role = Role ("Admin" , ["read" , "write" ])
29
+ assert role .has_permission ("read" ) is True
30
+ assert role .has_permission ("delete" ) is False
31
+
32
+ def test_role_add_existing_permission ():
33
+ """Test adding a permission that already exists"""
34
+ role = Role ("Admin" , ["read" ])
35
+ role .add_permission ("read" )
36
+ assert len (role .permissions ) == 1
37
+
38
+ def test_role_remove_nonexistent_permission ():
39
+ """Test removing a permission that doesn't exist"""
40
+ role = Role ("Admin" , ["read" ])
41
+ role .remove_permission ("write" )
42
+ assert len (role .permissions ) == 1
43
+ assert role .permissions == ["read" ]
44
+
45
+ # Additional tests for role.py
46
+
47
+ def test_role_invalid_name ():
48
+ """Test role creation with invalid name"""
49
+ with pytest .raises (ValueError ):
50
+ Role ("" , ["read" ])
51
+
52
+ def test_role_none_permissions ():
53
+ """Test role creation with None permissions"""
54
+ with pytest .raises (ValueError ):
55
+ Role ("Admin" , None )
56
+
57
+ def test_role_empty_permissions ():
58
+ """Test role creation with empty permissions list"""
59
+ role = Role ("Admin" , [])
60
+ assert len (role .permissions ) == 0
0 commit comments