Browse Source

add tests for user, permission and controller models

Guénaël Muller 6 years ago
parent
commit
a701fd817d

+ 16 - 0
tracim/tests/models/test_controller.py View File

@@ -0,0 +1,16 @@
1
+# coding=utf-8
2
+import pytest
3
+from pyramid.config import Configurator
4
+
5
+from tracim.views.controllers import Controller
6
+
7
+
8
+class TestControllerModel(object):
9
+    """
10
+    Test for Controller object
11
+    """
12
+    def test_unit__bind__err__not_implemented(self):
13
+        controller = Controller()
14
+        configurator = Configurator()
15
+        with pytest.raises(NotImplementedError):
16
+            controller.bind(configurator)

+ 51 - 0
tracim/tests/models/test_permission.py View File

@@ -0,0 +1,51 @@
1
+# coding=utf-8
2
+import transaction
3
+from tracim.tests import eq_
4
+from tracim.tests import BaseTest
5
+from tracim.models.auth import Permission
6
+
7
+
8
+class TestPermissionModel(BaseTest):
9
+    """
10
+    Test for permission model
11
+    """
12
+    def test_unit__create__ok__nominal_case(self):
13
+        self.session.flush()
14
+        transaction.commit()
15
+
16
+        name = 'my_permission'
17
+        description = 'my_perm_description'
18
+        permission = Permission()
19
+        permission.permission_name = name
20
+        permission.description = description
21
+
22
+        self.session.add(permission)
23
+        self.session.flush()
24
+        transaction.commit()
25
+
26
+        new_permission = self.session.query(Permission).filter(permission.permission_name == name).one()  # nopep8
27
+
28
+        assert new_permission.permission_name == name
29
+        assert new_permission.description == description
30
+        assert new_permission.permission_id
31
+        assert isinstance(new_permission.permission_id, int)
32
+        # TODO - G.M -24-05-2018 - Do test for groups
33
+
34
+    def test_unit__repr__ok__nominal_case(self):
35
+        name = 'my_permission'
36
+        description = 'my_perm_description'
37
+        permission = Permission()
38
+        permission.permission_name = name
39
+        permission.description = description
40
+
41
+        assert permission.__repr__() == "<Permission: name='my_permission'>"
42
+
43
+    def test_unit__unicode__ok__nominal_case(self):
44
+        name = 'my_permission'
45
+        description = 'my_perm_description'
46
+        permission = Permission()
47
+        permission.permission_name = name
48
+        permission.description = description
49
+
50
+        assert permission.__unicode__() == name
51
+

+ 92 - 11
tracim/tests/models/test_user.py View File

@@ -1,15 +1,15 @@
1 1
 # -*- coding: utf-8 -*-
2
-import transaction
3 2
 
4
-from tracim.tests import eq_
3
+import transaction
5 4
 from tracim.tests import BaseTest
6
-
7 5
 from tracim.models.auth import User
8 6
 
9 7
 
10 8
 class TestUserModel(BaseTest):
11
-
12
-    def test_create(self):
9
+    """
10
+    Test for User model
11
+    """
12
+    def test_unit__create__ok__nominal_case(self):
13 13
         self.session.flush()
14 14
         transaction.commit()
15 15
         name = 'Damien'
@@ -23,13 +23,49 @@ class TestUserModel(BaseTest):
23 23
         self.session.flush()
24 24
         transaction.commit()
25 25
 
26
-        new_user = self.session.query(User).filter(User.display_name==name).one()
26
+        new_user = self.session.query(User).filter(User.display_name == name).one()  # nopep8
27
+
28
+        assert new_user.display_name == name
29
+        assert new_user.email == email
30
+        assert new_user.email_address == email
31
+
32
+    def test_unit__password__ok__nominal_case(self):
33
+        """
34
+        Check if password can be set and hashed password
35
+        can be retrieve. Verify if hashed password is not
36
+        same as password.
37
+        """
38
+        name = 'Damien'
39
+        email = 'tracim@trac.im'
40
+        password = 'my_secure_password'
41
+
42
+        user = User()
43
+        user.display_name = name
44
+        user.email = email
45
+        assert user._password is None
46
+        user.password = password
47
+        assert user._password is not None
48
+        assert user._password != password
49
+        assert user.password == user._password
50
+
51
+    def test__unit__validate_password__ok__nominal_case(self):
52
+        """
53
+        Check if validate_password can correctly check if password i the correct
54
+        one
55
+        """
27 56
 
28
-        eq_(new_user.display_name, name)
29
-        eq_(new_user.email, email)
30
-        eq_(new_user.email_address, email)
57
+        name = 'Damien'
58
+        email = 'tracim@trac.im'
59
+        password = 'my_secure_password'
60
+
61
+        user = User()
62
+        user.display_name = name
63
+        user.email = email
64
+        user.password = password
65
+
66
+        assert user.validate_password(password) is True
31 67
 
32
-    def test_null_password(self):
68
+    def test_unit__validate_password__false__null_password(self):
33 69
         # Check bug #70 fixed
34 70
         # http://tracim.org/workspaces/4/folders/5/threads/70
35 71
 
@@ -40,4 +76,49 @@ class TestUserModel(BaseTest):
40 76
         user.display_name = name
41 77
         user.email = email
42 78
 
43
-        eq_(False, user.validate_password(None))
79
+        assert user.validate_password('') is False
80
+
81
+    def test_unit__validate_password__false__bad_password(self):
82
+        """
83
+        Check if validate_password can correctly check if password is
84
+        an uncorrect correct one
85
+        """
86
+        name = 'Damien'
87
+        email = 'tracim@trac.im'
88
+        password = 'my_secure_password'
89
+
90
+        user = User()
91
+        user.display_name = name
92
+        user.email = email
93
+        user.password = password
94
+
95
+        assert user.validate_password('uncorrect_password') is False
96
+
97
+    def test_unit__repr__ok__nominal_case(self):
98
+        name = 'Damien'
99
+        email = 'tracim@trac.im'
100
+
101
+        user = User()
102
+        user.display_name = name
103
+        user.email = email
104
+
105
+        assert user.__repr__() == "<User: email='tracim@trac.im', display='Damien'>"  # nopep8
106
+
107
+    def test_unit__unicode__ok__nominal_case(self):
108
+        name = 'Damien'
109
+        email = 'tracim@trac.im'
110
+
111
+        user = User()
112
+        user.display_name = name
113
+        user.email = email
114
+
115
+        assert user.__unicode__() == name
116
+
117
+    def test__unit__unicode__ok__no_display_name(self):
118
+
119
+        email = 'tracim@trac.im'
120
+
121
+        user = User()
122
+        user.email = email
123
+
124
+        assert user.__unicode__() == email