4
4
from flask_restplus ._http import HTTPStatus
5
5
from pytest_mock import MockFixture
6
6
7
- from time_tracker_api .security import current_user_tenant_id
8
-
9
7
fake = Faker ()
10
8
11
9
valid_activity_data = {
19
17
}).update (valid_activity_data )
20
18
21
19
22
- def test_create_activity_should_succeed_with_valid_request (client : FlaskClient , mocker : MockFixture ):
20
+ def test_create_activity_should_succeed_with_valid_request (client : FlaskClient ,
21
+ mocker : MockFixture ,
22
+ valid_header : dict ):
23
23
from time_tracker_api .activities .activities_namespace import activity_dao
24
24
repository_create_mock = mocker .patch .object (activity_dao .repository ,
25
25
'create' ,
26
26
return_value = fake_activity )
27
27
28
- response = client .post ("/activities" , json = valid_activity_data , follow_redirects = True )
28
+ response = client .post ("/activities" ,
29
+ headers = valid_header ,
30
+ json = valid_activity_data ,
31
+ follow_redirects = True )
29
32
30
33
assert HTTPStatus .CREATED == response .status_code
31
34
repository_create_mock .assert_called_once ()
32
35
33
36
34
- def test_create_activity_should_reject_bad_request (client : FlaskClient , mocker : MockFixture ):
37
+ def test_create_activity_should_reject_bad_request (client : FlaskClient ,
38
+ mocker : MockFixture ,
39
+ valid_header : dict ):
35
40
from time_tracker_api .activities .activities_namespace import activity_dao
36
41
repository_create_mock = mocker .patch .object (activity_dao .repository ,
37
42
'create' ,
38
43
return_value = fake_activity )
39
44
40
- response = client .post ("/activities" , json = None , follow_redirects = True )
45
+ response = client .post ("/activities" ,
46
+ headers = valid_header ,
47
+ json = None ,
48
+ follow_redirects = True )
41
49
42
50
assert HTTPStatus .BAD_REQUEST == response .status_code
43
51
repository_create_mock .assert_not_called ()
44
52
45
53
46
- def test_list_all_activities (client : FlaskClient , mocker : MockFixture ):
54
+ def test_list_all_activities (client : FlaskClient ,
55
+ mocker : MockFixture ,
56
+ tenant_id : str ,
57
+ valid_header : dict ):
47
58
from time_tracker_api .activities .activities_namespace import activity_dao
48
59
repository_find_all_mock = mocker .patch .object (activity_dao .repository ,
49
60
'find_all' ,
50
61
return_value = [])
51
62
52
- response = client .get ("/activities" , follow_redirects = True )
63
+ response = client .get ("/activities" ,
64
+ headers = valid_header ,
65
+ follow_redirects = True )
53
66
54
67
assert HTTPStatus .OK == response .status_code
55
68
json_data = json .loads (response .data )
56
69
assert [] == json_data
57
- repository_find_all_mock .assert_called_once ( )
70
+ repository_find_all_mock .assert_called_once_with ( partition_key_value = tenant_id )
58
71
59
72
60
- def test_get_activity_should_succeed_with_valid_id (client : FlaskClient , mocker : MockFixture ):
73
+ def test_get_activity_should_succeed_with_valid_id (client : FlaskClient ,
74
+ mocker : MockFixture ,
75
+ tenant_id : str ,
76
+ valid_header : dict ):
61
77
from time_tracker_api .activities .activities_namespace import activity_dao
62
78
63
79
valid_id = fake .random_int (1 , 9999 )
@@ -66,15 +82,19 @@ def test_get_activity_should_succeed_with_valid_id(client: FlaskClient, mocker:
66
82
'find' ,
67
83
return_value = fake_activity )
68
84
69
- response = client .get ("/activities/%s" % valid_id , follow_redirects = True )
85
+ response = client .get ("/activities/%s" % valid_id ,
86
+ headers = valid_header ,
87
+ follow_redirects = True )
70
88
71
89
assert HTTPStatus .OK == response .status_code
72
90
fake_activity == json .loads (response .data )
73
- repository_find_mock .assert_called_once_with (str (valid_id ),
74
- partition_key_value = current_user_tenant_id ())
91
+ repository_find_mock .assert_called_once_with (str (valid_id ), partition_key_value = tenant_id )
75
92
76
93
77
- def test_get_activity_should_return_not_found_with_invalid_id (client : FlaskClient , mocker : MockFixture ):
94
+ def test_get_activity_should_return_not_found_with_invalid_id (client : FlaskClient ,
95
+ mocker : MockFixture ,
96
+ tenant_id : str ,
97
+ valid_header : dict ):
78
98
from time_tracker_api .activities .activities_namespace import activity_dao
79
99
from werkzeug .exceptions import NotFound
80
100
@@ -84,14 +104,17 @@ def test_get_activity_should_return_not_found_with_invalid_id(client: FlaskClien
84
104
'find' ,
85
105
side_effect = NotFound )
86
106
87
- response = client .get ("/activities/%s" % invalid_id , follow_redirects = True )
107
+ response = client .get ("/activities/%s" % invalid_id ,
108
+ headers = valid_header ,
109
+ follow_redirects = True )
88
110
89
111
assert HTTPStatus .NOT_FOUND == response .status_code
90
112
repository_find_mock .assert_called_once_with (str (invalid_id ),
91
- partition_key_value = current_user_tenant_id () )
113
+ partition_key_value = tenant_id )
92
114
93
115
94
- def test_get_activity_should_return_422_for_invalid_id_format (client : FlaskClient , mocker : MockFixture ):
116
+ def test_get_activity_should_return_422_for_invalid_id_format (client : FlaskClient ,
117
+ mocker : MockFixture ):
95
118
from time_tracker_api .activities .activities_namespace import activity_dao
96
119
from werkzeug .exceptions import UnprocessableEntity
97
120
@@ -104,41 +127,54 @@ def test_get_activity_should_return_422_for_invalid_id_format(client: FlaskClien
104
127
response = client .get ("/activities/%s" % invalid_id , follow_redirects = True )
105
128
106
129
assert HTTPStatus .UNPROCESSABLE_ENTITY == response .status_code
107
- repository_find_mock .assert_called_once_with (str (invalid_id ),
108
- partition_key_value = current_user_tenant_id ())
130
+ repository_find_mock .assert_not_called ()
109
131
110
132
111
- def test_update_activity_should_succeed_with_valid_data (client : FlaskClient , mocker : MockFixture ):
133
+ def test_update_activity_should_succeed_with_valid_data (client : FlaskClient ,
134
+ tenant_id : str ,
135
+ mocker : MockFixture ,
136
+ valid_header : dict ):
112
137
from time_tracker_api .activities .activities_namespace import activity_dao
113
138
114
139
repository_update_mock = mocker .patch .object (activity_dao .repository ,
115
140
'partial_update' ,
116
141
return_value = fake_activity )
117
142
118
- valid_id = fake .random_int (1 , 9999 )
119
- response = client .put ("/activities/%s" % valid_id , json = valid_activity_data , follow_redirects = True )
143
+ valid_id = fake .uuid4 ()
144
+ response = client .put ("/activities/%s" % valid_id ,
145
+ headers = valid_header ,
146
+ json = valid_activity_data ,
147
+ follow_redirects = True )
120
148
121
149
assert HTTPStatus .OK == response .status_code
122
150
fake_activity == json .loads (response .data )
123
151
repository_update_mock .assert_called_once_with (str (valid_id ),
124
152
changes = valid_activity_data ,
125
- partition_key_value = current_user_tenant_id () )
153
+ partition_key_value = tenant_id )
126
154
127
155
128
- def test_update_activity_should_reject_bad_request (client : FlaskClient , mocker : MockFixture ):
156
+ def test_update_activity_should_reject_bad_request (client : FlaskClient ,
157
+ mocker : MockFixture ,
158
+ valid_header : dict ):
129
159
from time_tracker_api .activities .activities_namespace import activity_dao
130
160
repository_update_mock = mocker .patch .object (activity_dao .repository ,
131
161
'partial_update' ,
132
162
return_value = fake_activity )
133
163
134
164
valid_id = fake .random_int (1 , 9999 )
135
- response = client .put ("/activities/%s" % valid_id , json = None , follow_redirects = True )
165
+ response = client .put ("/activities/%s" % valid_id ,
166
+ headers = valid_header ,
167
+ json = None ,
168
+ follow_redirects = True )
136
169
137
170
assert HTTPStatus .BAD_REQUEST == response .status_code
138
171
repository_update_mock .assert_not_called ()
139
172
140
173
141
- def test_update_activity_should_return_not_found_with_invalid_id (client : FlaskClient , mocker : MockFixture ):
174
+ def test_update_activity_should_return_not_found_with_invalid_id (client : FlaskClient ,
175
+ tenant_id : str ,
176
+ mocker : MockFixture ,
177
+ valid_header : dict ):
142
178
from time_tracker_api .activities .activities_namespace import activity_dao
143
179
from werkzeug .exceptions import NotFound
144
180
@@ -149,16 +185,20 @@ def test_update_activity_should_return_not_found_with_invalid_id(client: FlaskCl
149
185
side_effect = NotFound )
150
186
151
187
response = client .put ("/activities/%s" % invalid_id ,
188
+ headers = valid_header ,
152
189
json = valid_activity_data ,
153
190
follow_redirects = True )
154
191
155
192
assert HTTPStatus .NOT_FOUND == response .status_code
156
193
repository_update_mock .assert_called_once_with (str (invalid_id ),
157
194
changes = valid_activity_data ,
158
- partition_key_value = current_user_tenant_id () )
195
+ partition_key_value = tenant_id )
159
196
160
197
161
- def test_delete_activity_should_succeed_with_valid_id (client : FlaskClient , mocker : MockFixture ):
198
+ def test_delete_activity_should_succeed_with_valid_id (client : FlaskClient ,
199
+ mocker : MockFixture ,
200
+ tenant_id : str ,
201
+ valid_header : dict ):
162
202
from time_tracker_api .activities .activities_namespace import activity_dao
163
203
164
204
valid_id = fake .random_int (1 , 9999 )
@@ -167,15 +207,20 @@ def test_delete_activity_should_succeed_with_valid_id(client: FlaskClient, mocke
167
207
'delete' ,
168
208
return_value = None )
169
209
170
- response = client .delete ("/activities/%s" % valid_id , follow_redirects = True )
210
+ response = client .delete ("/activities/%s" % valid_id ,
211
+ headers = valid_header ,
212
+ follow_redirects = True )
171
213
172
214
assert HTTPStatus .NO_CONTENT == response .status_code
173
215
assert b'' == response .data
174
216
repository_remove_mock .assert_called_once_with (str (valid_id ),
175
- partition_key_value = current_user_tenant_id () )
217
+ partition_key_value = tenant_id )
176
218
177
219
178
- def test_delete_activity_should_return_not_found_with_invalid_id (client : FlaskClient , mocker : MockFixture ):
220
+ def test_delete_activity_should_return_not_found_with_invalid_id (client : FlaskClient ,
221
+ mocker : MockFixture ,
222
+ tenant_id : str ,
223
+ valid_header : dict ):
179
224
from time_tracker_api .activities .activities_namespace import activity_dao
180
225
from werkzeug .exceptions import NotFound
181
226
@@ -185,14 +230,19 @@ def test_delete_activity_should_return_not_found_with_invalid_id(client: FlaskCl
185
230
'delete' ,
186
231
side_effect = NotFound )
187
232
188
- response = client .delete ("/activities/%s" % invalid_id , follow_redirects = True )
233
+ response = client .delete ("/activities/%s" % invalid_id ,
234
+ headers = valid_header ,
235
+ follow_redirects = True )
189
236
190
237
assert HTTPStatus .NOT_FOUND == response .status_code
191
238
repository_remove_mock .assert_called_once_with (str (invalid_id ),
192
- partition_key_value = current_user_tenant_id () )
239
+ partition_key_value = tenant_id )
193
240
194
241
195
- def test_delete_activity_should_return_422_for_invalid_id_format (client : FlaskClient , mocker : MockFixture ):
242
+ def test_delete_activity_should_return_422_for_invalid_id_format (client : FlaskClient ,
243
+ mocker : MockFixture ,
244
+ tenant_id : str ,
245
+ valid_header : dict ):
196
246
from time_tracker_api .activities .activities_namespace import activity_dao
197
247
from werkzeug .exceptions import UnprocessableEntity
198
248
@@ -202,8 +252,10 @@ def test_delete_activity_should_return_422_for_invalid_id_format(client: FlaskCl
202
252
'delete' ,
203
253
side_effect = UnprocessableEntity )
204
254
205
- response = client .delete ("/activities/%s" % invalid_id , follow_redirects = True )
255
+ response = client .delete ("/activities/%s" % invalid_id ,
256
+ headers = valid_header ,
257
+ follow_redirects = True )
206
258
207
259
assert HTTPStatus .UNPROCESSABLE_ENTITY == response .status_code
208
260
repository_remove_mock .assert_called_once_with (str (invalid_id ),
209
- partition_key_value = current_user_tenant_id () )
261
+ partition_key_value = tenant_id )
0 commit comments