def test_delete_folders_recursively(self, mock_send_task_delete_document): # A # * B # * B2 # * C folder_a = setup_folder(self.org, name="A") folder_a_b = setup_folder(self.org, name="B", parent=folder_a) folder_a_b2 = setup_folder(self.org, name="B2", parent=folder_a) folder_a_b2_c = setup_folder(self.org, name="B2", parent=folder_a_b2) doc_folder_a = setup_document(self.org, self.user, ftl_folder=folder_a) doc_folder_a_b2 = setup_document(self.org, self.user, ftl_folder=folder_a_b2) doc_folder_a_b2_c = setup_document( self.org, self.user, ftl_folder=folder_a_b2_c ) response = self.client.delete(f"/app/api/v1/folders/{folder_a.id}") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) doc_folder_a.refresh_from_db() doc_folder_a_b2.refresh_from_db() doc_folder_a_b2_c.refresh_from_db() self.assertTrue(doc_folder_a.deleted) self.assertTrue(doc_folder_a_b2.deleted) self.assertTrue(doc_folder_a_b2_c.deleted)
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 setUp(self): self.org_with_docs = setup_org() setup_admin(self.org_with_docs) self.user = setup_user(self.org_with_docs) self.doc = setup_document(self.org_with_docs, self.user) self.doc_bis = setup_document(self.org_with_docs, self.user, title=tv.DOCUMENT2_TITLE) self.first_level_folder = setup_folder(self.org_with_docs, name="First level folder") self.doc_in_folder = setup_document( self.org_with_docs, self.user, title="Document in folder", ftl_folder=self.first_level_folder, ) self.org_with_folders = setup_org(name=tv.ORG_NAME_2, slug=tv.ORG_SLUG_2) setup_folder(self.org_with_folders) self.org_without_docs_1 = setup_org(name=tv.ORG_NAME_3, slug=tv.ORG_SLUG_3) self.org_without_docs_2 = setup_org(name=tv.ORG_NAME_4, slug=tv.ORG_SLUG_4)
def setUp(self): self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) self.folder_root = setup_folder(self.org, name="First level folder") self.folder_root_subfolder = setup_folder( self.org, name="Second level folder", parent=self.folder_root ) self.client.login( request=HttpRequest(), email=tv.USER1_EMAIL, password=tv.USER1_PASS )
def setUp(self): self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) self.doc = setup_document( self.org, self.user, title=tv.DOCUMENT_DOCX_TITLE, note=tv.DOCUMENT_DOCX_NOTE, text_content=tv.DOCUMENT_DOCX_CONTENT, binary=tv.DOCUMENT_DOCX_BINARY_PATH, file_type= "application/vnd.openxmlformats-officedocument.wordprocessingml.document", ) self.first_level_folder = setup_folder(self.org, name="First level folder") self.doc_in_folder = setup_document( self.org, self.user, title="Document in folder", ftl_folder=self.first_level_folder, ) self.client.login(request=HttpRequest(), email=tv.USER1_EMAIL, password=tv.USER1_PASS)
def setUp(self, **kwargs): # first org, admin, user are already created, user is already logged on home page super().setUp() self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) self.folder = setup_folder(self.org) self.visit(LoginPage.url) self.log_user()
def test_delete_folder(self): folder_to_be_delete = setup_folder(self.org, name="Folder to delete") client_delete = self.client.delete( f"/app/api/v1/folders/{folder_to_be_delete.id}" ) self.assertEqual(client_delete.status_code, status.HTTP_204_NO_CONTENT) with self.assertRaises(core.models.FTLFolder.DoesNotExist): FTLFolder.objects.get(id=folder_to_be_delete.id)
def setUp(self): self.org = setup_org("To delete A", "to-delete-a") self.user_a = setup_admin(self.org, "*****@*****.**", "aaa") self.folder = setup_folder(self.org, "Folder 1") self.doc = setup_document(self.org, self.user_a, self.folder, title="Doc 1") self.devices = setup_2fa_static_device( self.user_a, codes_list=["AA1222", "BB1222"] ) self.org_no_delete = setup_org("Not delete A", "not-delete-a") self.user_no_delete_a = setup_admin( self.org_no_delete, "*****@*****.**", "bbb" ) self.folder_no_delete = setup_folder(self.org_no_delete, "Folder 1 no delete") self.doc_no_delete = setup_document( self.org_no_delete, self.user_no_delete_a, self.folder_no_delete, title="Doc 1 no delete", ) self.devices_no_delete = setup_2fa_static_device( self.user_no_delete_a, codes_list=["AA1222", "BB1222"] )
def test_create_same_folder_name_at_same_level(self): # Specific test for an issue where a sub folder at the same level but not the same parent can be created # A # * X # B # * X folder_a = setup_folder(self.org, name="A") folder_a_x = setup_folder(self.org, name="X", parent=folder_a) folder_b = setup_folder(self.org, name="B") # A `X` folders can be created below `B` response = self.client.post( "/app/api/v1/folders", {"name": "X", "parent": folder_b.id}, format="json" ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) # But not created below `A` response = self.client.post( "/app/api/v1/folders", {"name": "X", "parent": folder_a.id}, format="json" ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def setUp(self): self.org = setup_org() setup_admin(self.org) self.user = setup_user(self.org) self.doc = setup_document(self.org, self.user) self.doc_bis = setup_document(self.org, self.user, title=tv.DOCUMENT2_TITLE) self.first_level_folder = setup_folder(self.org, name="First level folder") self.doc_in_folder = setup_document( self.org, self.user, title="Document in folder", ftl_folder=self.first_level_folder, ) self.client.login( request=HttpRequest(), email=tv.USER1_EMAIL, password=tv.USER1_PASS )
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"])