4
4
from django .urls import reverse
5
5
6
6
from kobo .apps .audit_log .audit_actions import AuditAction
7
- from kobo .apps .audit_log .models import ProjectHistoryLog
7
+ from kobo .apps .audit_log .models import ADDED , NEW , OLD , REMOVED , ProjectHistoryLog
8
8
from kobo .apps .audit_log .tests .test_models import BaseAuditLogTestCase
9
9
from kobo .apps .kobo_auth .shortcuts import User
10
10
from kpi .models import Asset
@@ -173,8 +173,8 @@ def test_change_project_name_creates_log(self):
173
173
expected_action = AuditAction .UPDATE_NAME ,
174
174
)
175
175
176
- self .assertEqual (log_metadata ['name' ]['new' ], 'new_name' )
177
- self .assertEqual (log_metadata ['name' ]['old' ], old_name )
176
+ self .assertEqual (log_metadata ['name' ][NEW ], 'new_name' )
177
+ self .assertEqual (log_metadata ['name' ][OLD ], old_name )
178
178
179
179
def test_change_standard_project_settings_creates_log (self ):
180
180
old_settings = copy .deepcopy (self .asset .settings )
@@ -195,17 +195,15 @@ def test_change_standard_project_settings_creates_log(self):
195
195
196
196
# check non-list settings just store old and new information
197
197
settings_dict = log_metadata ['settings' ]
198
- self .assertEqual (
199
- settings_dict ['description' ]['old' ], old_settings ['description' ]
200
- )
201
- self .assertEqual (settings_dict ['description' ]['new' ], 'New description' )
198
+ self .assertEqual (settings_dict ['description' ][OLD ], old_settings ['description' ])
199
+ self .assertEqual (settings_dict ['description' ][NEW ], 'New description' )
202
200
# check list settings store added and removed fields
203
201
self .assertListEqual (
204
- settings_dict ['country' ]['added' ],
202
+ settings_dict ['country' ][ADDED ],
205
203
[{'label' : 'Albania' , 'value' : 'ALB' }],
206
204
)
207
205
self .assertListEqual (
208
- settings_dict ['country' ]['removed' ],
206
+ settings_dict ['country' ][REMOVED ],
209
207
[{'label' : 'United States' , 'value' : 'USA' }],
210
208
)
211
209
# check default settings not recorded if not included in request
@@ -265,7 +263,6 @@ def test_nullify_settings_creates_log(self):
265
263
request_data = {'settings' : {}},
266
264
expected_action = AuditAction .UPDATE_SETTINGS ,
267
265
)
268
-
269
266
for setting , old_value in old_settings .items ():
270
267
if setting in Asset .STANDARDIZED_SETTINGS :
271
268
# if the setting is one of the standard ones, the new value after
@@ -283,14 +280,14 @@ def test_nullify_settings_creates_log(self):
283
280
removed_values = [val for val in old_value if val not in new_value ]
284
281
added_values = [val for val in new_value if val not in old_value ]
285
282
self .assertListEqual (
286
- log_metadata ['settings' ][setting ]['added' ], added_values
283
+ log_metadata ['settings' ][setting ][ADDED ], added_values
287
284
)
288
285
self .assertListEqual (
289
- log_metadata ['settings' ][setting ]['removed' ], removed_values
286
+ log_metadata ['settings' ][setting ][REMOVED ], removed_values
290
287
)
291
288
else :
292
- self .assertEqual (log_metadata ['settings' ][setting ]['new' ], new_value )
293
- self .assertEqual (log_metadata ['settings' ][setting ]['old' ], old_value )
289
+ self .assertEqual (log_metadata ['settings' ][setting ][NEW ], new_value )
290
+ self .assertEqual (log_metadata ['settings' ][setting ][OLD ], old_value )
294
291
295
292
def test_add_new_settings_creates_log (self ):
296
293
log_metadata = self ._base_endpoint_test (
@@ -301,5 +298,80 @@ def test_add_new_settings_creates_log(self):
301
298
expected_action = AuditAction .UPDATE_SETTINGS ,
302
299
)
303
300
304
- self .assertEqual (log_metadata ['settings' ]['new_setting' ]['new' ], 'new_value' )
305
- self .assertEqual (log_metadata ['settings' ]['new_setting' ]['old' ], None )
301
+ self .assertEqual (log_metadata ['settings' ]['new_setting' ][NEW ], 'new_value' )
302
+ self .assertEqual (log_metadata ['settings' ]['new_setting' ][OLD ], None )
303
+
304
+ def test_enable_sharing_creates_log (self ):
305
+ log_metadata = self ._base_endpoint_test (
306
+ patch = True ,
307
+ url_name = self .detail_url ,
308
+ request_data = {'data_sharing' : {'enabled' : True , 'fields' : []}},
309
+ expected_action = AuditAction .ENABLE_SHARING ,
310
+ )
311
+ self .assertEqual (log_metadata ['shared_fields' ][ADDED ], [])
312
+
313
+ def test_truthy_field_creates_sharing_enabled_log (self ):
314
+ log_metadata = self ._base_endpoint_test (
315
+ patch = True ,
316
+ url_name = self .detail_url ,
317
+ request_data = {'data_sharing' : {'enabled' : 'truthy' }},
318
+ expected_action = AuditAction .ENABLE_SHARING ,
319
+ )
320
+ self .assertEqual (log_metadata ['shared_fields' ][ADDED ], [])
321
+
322
+ def test_disable_sharing_creates_log (self ):
323
+ self .asset .data_sharing = {
324
+ 'enabled' : True ,
325
+ 'fields' : [],
326
+ }
327
+ self .asset .save ()
328
+
329
+ self ._base_endpoint_test (
330
+ patch = True ,
331
+ url_name = self .detail_url ,
332
+ request_data = {'data_sharing' : {'enabled' : False }},
333
+ expected_action = AuditAction .DISABLE_SHARING ,
334
+ )
335
+
336
+ def test_nullify_sharing_creates_sharing_disabled_log (self ):
337
+ self .asset .data_sharing = {
338
+ 'enabled' : True ,
339
+ 'fields' : [],
340
+ }
341
+ self .asset .save ()
342
+
343
+ self ._base_endpoint_test (
344
+ patch = True ,
345
+ url_name = self .detail_url ,
346
+ request_data = {'data_sharing' : {}},
347
+ expected_action = AuditAction .DISABLE_SHARING ,
348
+ )
349
+
350
+ def test_falsy_field_creates_sharing_disabled_log (self ):
351
+ self .asset .data_sharing = {
352
+ 'enabled' : True ,
353
+ 'fields' : [],
354
+ }
355
+ self .asset .save ()
356
+
357
+ self ._base_endpoint_test (
358
+ patch = True ,
359
+ url_name = self .detail_url ,
360
+ request_data = {'data_sharing' : {'enabled' : 0 }},
361
+ expected_action = AuditAction .DISABLE_SHARING ,
362
+ )
363
+
364
+ def test_modify_sharing_creates_log (self ):
365
+ self .asset .data_sharing = {
366
+ 'enabled' : True ,
367
+ 'fields' : ['q1' ],
368
+ }
369
+ self .asset .save ()
370
+ log_metadata = self ._base_endpoint_test (
371
+ patch = True ,
372
+ url_name = self .detail_url ,
373
+ request_data = {'data_sharing' : {'enabled' : True , 'fields' : ['q2' ]}},
374
+ expected_action = AuditAction .MODIFY_SHARING ,
375
+ )
376
+ self .assertEqual (log_metadata ['shared_fields' ][ADDED ], ['q2' ])
377
+ self .assertEqual (log_metadata ['shared_fields' ][REMOVED ], ['q1' ])
0 commit comments