Browse Source

add new tests and renaming for user_api

Guénaël Muller 6 years ago
parent
commit
2dd7f54f8c
1 changed files with 86 additions and 15 deletions
  1. 86 15
      tracim/tests/library/test_user_api.py

+ 86 - 15
tracim/tests/library/test_user_api.py View File

@@ -4,14 +4,17 @@ from sqlalchemy.orm.exc import NoResultFound
4 4
 
5 5
 import transaction
6 6
 
7
+from tracim.exceptions import UserNotExist, AuthenticationFailed
7 8
 from tracim.lib.core.user import UserApi
9
+from tracim.models import User
10
+from tracim.models.context_models import UserInContext
8 11
 from tracim.tests import DefaultTest
9 12
 from tracim.tests import eq_
10 13
 
11 14
 
12 15
 class TestUserApi(DefaultTest):
13 16
 
14
-    def test_create_and_update_user(self):
17
+    def test_unit__create_and_update_user__ok__nominal_case(self):
15 18
         api = UserApi(
16 19
             current_user=None,
17 20
             session=self.session,
@@ -25,7 +28,7 @@ class TestUserApi(DefaultTest):
25 28
         eq_('bob@bob', nu.email)
26 29
         eq_('bob', nu.display_name)
27 30
 
28
-    def test_user_with_email_exists(self):
31
+    def test_unit__user_with_email_exists__ok__nominal_case(self):
29 32
         api = UserApi(
30 33
             current_user=None,
31 34
             session=self.session,
@@ -38,7 +41,7 @@ class TestUserApi(DefaultTest):
38 41
         eq_(True, api.user_with_email_exists('bibi@bibi'))
39 42
         eq_(False, api.user_with_email_exists('unknown'))
40 43
 
41
-    def test_get_one_by_email(self):
44
+    def test_unit__get_one_by_email__ok__nominal_case(self):
42 45
         api = UserApi(
43 46
             current_user=None,
44 47
             session=self.session,
@@ -51,7 +54,7 @@ class TestUserApi(DefaultTest):
51 54
 
52 55
         eq_(uid, api.get_one_by_email('bibi@bibi').user_id)
53 56
 
54
-    def test_get_one_by_email_exception(self):
57
+    def test_unit__get_one_by_email__err__user_does_not_exist(self):
55 58
         api = UserApi(
56 59
             current_user=None,
57 60
             session=self.session,
@@ -60,26 +63,94 @@ class TestUserApi(DefaultTest):
60 63
         with pytest.raises(NoResultFound):
61 64
             api.get_one_by_email('unknown')
62 65
 
63
-    def test_get_all(self):
64
-        # TODO - G.M - 29-03-2018 Check why this method is not enabled
66
+    # def test_unit__get_all__ok__nominal_case(self):
67
+    #     # TODO - G.M - 29-03-2018 Check why this method is not enabled
68
+    #     api = UserApi(
69
+    #         current_user=None,
70
+    #         session=self.session,
71
+    #         config=self.config,
72
+    #     )
73
+    #     u1 = api.create_user(True)
74
+    #     u2 = api.create_user(True)
75
+    #     users = api.get_all()
76
+    #     assert 2==len(users)
77
+
78
+    def test_unit__get_one__ok__nominal_case(self):
65 79
         api = UserApi(
66 80
             current_user=None,
67 81
             session=self.session,
68 82
             config=self.config,
69 83
         )
70
-        # u1 = api.create_user(True)
71
-        # u2 = api.create_user(True)
84
+        u = api.create_user()
85
+        api.update(u, 'titi', 'titi@titi', True)
86
+        one = api.get_one(u.user_id)
87
+        eq_(u.user_id, one.user_id)
72 88
 
73
-        # users = api.get_all()
74
-        # ok_(2==len(users))
89
+    def test_unit__get_correct_user_type__ok__no_context(self):
90
+        user = User(email='admin@tracim.tracim')
91
+        api = UserApi(
92
+            current_user=None,
93
+            session=self.session,
94
+            config=self.config,
95
+        )
96
+        new_user = api._get_correct_user_type(user, in_context=False)
97
+        assert isinstance(new_user, User)
98
+        assert user == new_user
75 99
 
76
-    def test_get_one(self):
100
+    def test_unit__get_correct_user_type__ok__with_context(self):
101
+        user = User(email='admin@tracim.tracim')
77 102
         api = UserApi(
78 103
             current_user=None,
79 104
             session=self.session,
80 105
             config=self.config,
81 106
         )
82
-        u = api.create_user()
83
-        api.update(u, 'titi', 'titi@titi', True)
84
-        one = api.get_one(u.user_id)
85
-        eq_(u.user_id, one.user_id)
107
+        new_user = api._get_correct_user_type(user, in_context=True)
108
+        assert isinstance(new_user, UserInContext)
109
+        assert user != new_user
110
+        assert new_user.user == user
111
+
112
+    def test_unit__get_current__ok__nominal_case(self):
113
+        user = User(email='admin@tracim.tracim')
114
+        api = UserApi(
115
+            current_user=user,
116
+            session=self.session,
117
+            config=self.config,
118
+        )
119
+        assert api.get_current().email == 'admin@tracim.tracim'
120
+
121
+    def test_unit__get_current__err__user_not_exist(self):
122
+        api = UserApi(
123
+            current_user=None,
124
+            session=self.session,
125
+            config=self.config,
126
+        )
127
+        with pytest.raises(UserNotExist):
128
+            api.get_current()
129
+
130
+    def test_unit__authenticate_user___ok__nominal_case(self):
131
+        api = UserApi(
132
+            current_user=None,
133
+            session=self.session,
134
+            config=self.config,
135
+        )
136
+        user = api.authenticate_user('admin@admin.admin', 'admin@admin.admin')
137
+        assert isinstance(user, User)
138
+        assert user.email == 'admin@admin.admin'
139
+
140
+    def test_unit__authenticate_user___err__bad_password(self):
141
+        api = UserApi(
142
+            current_user=None,
143
+            session=self.session,
144
+            config=self.config,
145
+        )
146
+        with pytest.raises(AuthenticationFailed):
147
+            api.authenticate_user('admin@admin.admin', 'bad_password')
148
+
149
+    def test_unit__authenticate_user___err__bad_user(self):
150
+        api = UserApi(
151
+            current_user=None,
152
+            session=self.session,
153
+            config=self.config,
154
+        )
155
+        with pytest.raises(AuthenticationFailed):
156
+            api.authenticate_user('unknown_user', 'bad_password')