def test_delete_document(self): self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) # Create a custom document and thumbnail specific to this test because we don't want to delete test files binary_f = setup_temporary_file().name thumbnail_f = setup_temporary_file().name document_to_be_deleted = FTLDocument.objects.create( org=self.org, ftl_user=self.user, title="Test document to be deleted", binary=binary_f, thumbnail_binary=thumbnail_f, ) document_to_be_deleted.delete() with self.assertRaises(core.models.FTLDocument.DoesNotExist): FTLDocument.objects.get(pid=document_to_be_deleted.pid) # File has been deleted. self.assertTrue(not os.path.exists(binary_f)) self.assertTrue(not os.path.exists(thumbnail_f))
def test_mark_delete_document(self, mocked_send_task): self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) binary_f = setup_temporary_file().name thumbnail_f = setup_temporary_file().name document_to_be_deleted = FTLDocument.objects.create( org=self.org, ftl_user=self.user, title="Test document to be deleted", binary=binary_f, thumbnail_binary=thumbnail_f, ) document_to_be_deleted.mark_delete() self.assertTrue(document_to_be_deleted.deleted) self.assertIsNone(document_to_be_deleted.ftl_folder) mocked_send_task.assert_called_with( "core.tasks.delete_document", args=[ document_to_be_deleted.pid, document_to_be_deleted.org.pk, document_to_be_deleted.ftl_user.pk, ], )
def test_delete_folders(self, mock_send_task_delete_document): org = setup_org() setup_admin(org) user = setup_user(org) folder = setup_folder(org) folder_sub = setup_folder(org, parent=folder) document_1 = setup_document(org, user, binary=setup_temporary_file().name) document_2 = setup_document(org, user, folder, binary=setup_temporary_file().name) document_3 = setup_document(org, user, folder_sub, binary=setup_temporary_file().name) self.assertEqual(FTLDocument.objects.filter(deleted=False).count(), 3) self.assertEqual(FTLFolder.objects.count(), 2) folder.delete() self.assertEqual(FTLDocument.objects.filter(deleted=False).count(), 1) self.assertEqual(FTLFolder.objects.count(), 0) self.assertIsNotNone(FTLDocument.objects.get(pid=document_1.pid)) doc_marked_as_deleted_2 = FTLDocument.objects.get(pid=document_2.pid) self.assertTrue(doc_marked_as_deleted_2.deleted) doc_marked_as_deleted_3 = FTLDocument.objects.get(pid=document_3.pid) self.assertTrue(doc_marked_as_deleted_3.deleted)
def test_delete_document(self, mock_send_task_delete_document): binary_f = setup_temporary_file().name document_to_be_deleted = FTLDocument.objects.create( org=self.org, ftl_user=self.user, title="Test document to be deleted", binary=binary_f, # We don't want to delete the test pdf file ) client_delete = self.client.delete( f"/app/api/v1/documents/{str(document_to_be_deleted.pid)}" ) self.assertEqual(client_delete.status_code, status.HTTP_204_NO_CONTENT) document_marked_as_deleted = FTLDocument.objects.get( pid=document_to_be_deleted.pid ) self.assertTrue(document_marked_as_deleted.deleted) # File has not been deleted. self.assertTrue(os.path.exists(binary_f))
def test_batch_delete_document(self): binary_f = setup_temporary_file().name ftl_document = FTLDocument.objects.create( org=self.org_with_docs, ftl_user=self.user, title="Test document to be deleted", binary=binary_f, # We don't want to delete the test pdf file ) self.assertIsNotNone(ftl_document.pid) initial_doc_count = FTLDocument.objects.count() ftl_document.deleted = True ftl_document.save() batch_delete_doc() with self.assertRaises(FTLDocument.DoesNotExist): FTLDocument.objects.get(pid=ftl_document.pid) self.assertEqual( FTLDocument.objects.count(), initial_doc_count - 1, "Only one doc should have been deleted", )
def setUp(self, **kwargs): # orgs, admin, users are already created super().setUp() self.admin_org = setup_org(name="admin-org", slug="admin-org") self.admin = setup_admin(self.admin_org) self.user1_org = setup_org(name=tv.ORG_NAME_1, slug=tv.ORG_SLUG_1) self.user1 = setup_user(self.user1_org, email=tv.USER1_EMAIL, password=tv.USER1_PASS) self.user2_org = setup_org(name=tv.ORG_NAME_2, slug=tv.ORG_SLUG_2) self.user2 = setup_user(self.user2_org, email=tv.USER2_EMAIL, password=tv.USER2_PASS) # mock OTPMiddleware._verify_user() to skip check page self.middleware_patcher = patch.object(OTPMiddleware, "_verify_user", mocked_verify_user) self.middleware_patcher.start() self.addCleanup( patch.stopall ) # ensure mock is remove after each test, even if the test crash self.addCleanup(totp_time_setter.reset_mock, side_effect=True) # admin, user1 and user2 have added documents, folders, otp devices self.admin_resources = {} self.admin_resources["folder1"] = setup_folder(self.admin_org) self.admin_resources["sub_folder1"] = setup_folder( self.admin_org, parent=self.admin_resources["folder1"]) self.admin_resources["doc1"] = setup_document( self.admin_org, ftl_user=self.admin, binary=setup_temporary_file().name) self.admin_resources["doc2"] = setup_document( self.admin_org, ftl_user=self.admin, ftl_folder=self.admin_resources["folder1"], binary=setup_temporary_file().name, ) self.admin_resources["doc3"] = setup_document( self.admin_org, ftl_user=self.admin, ftl_folder=self.admin_resources["sub_folder1"], binary=setup_temporary_file().name, ) self.admin_resources["totp_device"] = setup_2fa_totp_device( self.admin, secret_key=TOTP_DEVICE_SECRET_KEY) self.admin_resources["fido2_device"] = setup_2fa_fido2_device( self.admin) self.admin_resources["static_device"] = setup_2fa_static_device( self.admin, codes_list=["AAA"]) self.user1_resources = {} self.user1_resources["folder1"] = setup_folder(self.user1_org) self.user1_resources["sub_folder1"] = setup_folder( self.user1_org, parent=self.user1_resources["folder1"]) self.user1_resources["doc1"] = setup_document( self.user1_org, ftl_user=self.user1, binary=setup_temporary_file().name) self.user1_resources["doc2"] = setup_document( self.user1_org, ftl_user=self.user1, ftl_folder=self.user1_resources["folder1"], binary=setup_temporary_file().name, ) self.user1_resources["doc3"] = setup_document( self.user1_org, ftl_user=self.user1, ftl_folder=self.user1_resources["sub_folder1"], binary=setup_temporary_file().name, ) self.user1_resources["totp_device"] = setup_2fa_totp_device( self.user1, secret_key=TOTP_DEVICE_SECRET_KEY) self.user1_resources["fido2_device"] = setup_2fa_fido2_device( self.user1) self.user1_resources["static_device"] = setup_2fa_static_device( self.user1, codes_list=["AAA"]) self.user2_resources = {} self.user2_resources["folder1"] = setup_folder(self.user2_org) self.user2_resources["sub_folder1"] = setup_folder( self.user2_org, parent=self.user2_resources["folder1"]) self.user2_resources["doc1"] = setup_document(self.user2_org, ftl_user=self.user2) self.user2_resources["doc2"] = setup_document( self.user2_org, ftl_user=self.user2, ftl_folder=self.user2_resources["folder1"], ) self.user2_resources["doc3"] = setup_document( self.user2_org, ftl_user=self.user2, ftl_folder=self.user2_resources["sub_folder1"], ) self.user2_resources["totp_device"] = setup_2fa_totp_device( self.user2, secret_key=TOTP_DEVICE_SECRET_KEY) self.user2_resources["fido2_device"] = setup_2fa_fido2_device( self.user2) self.user2_resources["static_device"] = setup_2fa_static_device( self.user2, codes_list=["AAA"])
def setUp(self, **kwargs): # orgs, admin, users are already created super().setUp() self.admin_org = setup_org(name="admin-org", slug="admin-org") self.admin = setup_admin(self.admin_org) self.user1_org = setup_org(name=tv.ORG_NAME_1, slug=tv.ORG_SLUG_1) self.user1 = setup_user(self.user1_org, email=tv.USER1_EMAIL, password=tv.USER1_PASS) self.user2_org = setup_org(name=tv.ORG_NAME_2, slug=tv.ORG_SLUG_2) self.user2 = setup_user(self.user2_org, email=tv.USER2_EMAIL, password=tv.USER2_PASS) # admin, user1 and user2 have added documents, some documents are shared self.admin_resources = {} self.admin_resources["doc1"] = setup_document( self.admin_org, ftl_user=self.admin, binary=setup_temporary_file().name) self.admin_resources["doc2"] = setup_document( self.admin_org, ftl_user=self.admin, binary=setup_temporary_file().name, ) self.admin_resources["doc3"] = setup_document( self.admin_org, ftl_user=self.admin, binary=setup_temporary_file().name, ) self.admin_resources["share_links"] = [ setup_document_share(self.admin_resources["doc3"]) ] self.user1_resources = {} self.user1_resources["doc1"] = setup_document( self.user1_org, ftl_user=self.user1, binary=setup_temporary_file().name) self.user1_resources["doc2"] = setup_document( self.user1_org, ftl_user=self.user1, binary=setup_temporary_file().name, ) self.user1_resources["doc3"] = setup_document( self.user1_org, ftl_user=self.user1, binary=setup_temporary_file().name, ) self.user1_resources["share_links"] = [ setup_document_share(self.user1_resources["doc2"]) ] self.user2_resources = {} self.user2_resources["doc1"] = setup_document(self.user2_org, ftl_user=self.user2) self.user2_resources["doc2"] = setup_document( self.user2_org, ftl_user=self.user2, ) self.user2_resources["doc3"] = setup_document( self.user2_org, ftl_user=self.user2, ) self.user2_resources["share_links"] = [ setup_document_share(self.user2_resources["doc1"]) ]