@@ -54,6 +54,13 @@ def test_api_document_mask_authenticated_post_allowed(reach, has_role):
54
54
if has_role :
55
55
models .DocumentAccess .objects .create (document = document , user = user )
56
56
57
+ # Try masking the document without a link trace
58
+ response = client .post (f"/api/v1.0/documents/{ document .id !s} /mask/" )
59
+ assert response .status_code == 400
60
+ assert response .json () == {"detail" : "User never accessed this document before." }
61
+ assert not models .LinkTrace .objects .filter (document = document , user = user ).exists ()
62
+
63
+ models .LinkTrace .objects .create (document = document , user = user )
57
64
# Mask document
58
65
response = client .post (f"/api/v1.0/documents/{ document .id !s} /mask/" )
59
66
@@ -211,6 +218,10 @@ def test_api_document_mask_authenticated_delete_allowed(reach, has_role):
211
218
response = client .delete (f"/api/v1.0/documents/{ document .id !s} /mask/" )
212
219
213
220
assert response .status_code == 204
221
+ assert response .content == b"" # No body
222
+ assert response .text == "" # Empty decoded text
223
+ assert "Content-Type" not in response .headers # No Content-Type for 204
224
+
214
225
assert models .LinkTrace .objects .filter (
215
226
document = document , user = user , is_masked = False
216
227
).exists ()
@@ -259,14 +270,21 @@ def test_api_document_mask_authenticated_delete_not_masked_allowed(reach, has_ro
259
270
if has_role :
260
271
models .DocumentAccess .objects .create (document = document , user = user )
261
272
262
- # Try to unmask when no entry exists
273
+ # Try unmasking the document without a link trace
274
+ response = client .delete (f"/api/v1.0/documents/{ document .id !s} /mask/" )
275
+ assert response .status_code == 400
276
+ assert response .json () == {"detail" : "User never accessed this document before." }
277
+ assert not models .LinkTrace .objects .filter (document = document , user = user ).exists ()
278
+
279
+ models .LinkTrace .objects .create (document = document , user = user , is_masked = False )
280
+ # Unmask document
263
281
response = client .delete (f"/api/v1.0/documents/{ document .id !s} /mask/" )
264
282
265
283
assert response .status_code == 200
266
284
assert response .json () == {"detail" : "Document was already not masked" }
267
- assert (
268
- models . LinkTrace . objects . filter ( document = document , user = user ). exists () is False
269
- )
285
+ assert models . LinkTrace . objects . filter (
286
+ document = document , user = user , is_masked = False
287
+ ). exists ()
270
288
271
289
272
290
def test_api_document_mask_authenticated_delete_not_masked_forbidden ():
@@ -310,6 +328,7 @@ def test_api_document_mask_authenticated_post_unmark_then_mark_again_allowed(
310
328
document = factories .DocumentFactory (link_reach = reach )
311
329
if has_role :
312
330
models .DocumentAccess .objects .create (document = document , user = user )
331
+ models .LinkTrace .objects .create (document = document , user = user , is_masked = False )
313
332
314
333
url = f"/api/v1.0/documents/{ document .id !s} /mask/"
315
334
@@ -320,6 +339,9 @@ def test_api_document_mask_authenticated_post_unmark_then_mark_again_allowed(
320
339
# Unmask document
321
340
response = client .delete (url )
322
341
assert response .status_code == 204
342
+ assert response .content == b"" # No body
343
+ assert response .text == "" # Empty decoded text
344
+ assert "Content-Type" not in response .headers # No Content-Type for 204
323
345
324
346
# Mask document again
325
347
response = client .post (url )
0 commit comments