From 14864ab60c60759b7699260577b4760da5cf14a0 Mon Sep 17 00:00:00 2001 From: Anton SHEPILOV Date: Mon, 27 May 2024 17:32:40 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8FAdded=20one=20more=20testcase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../node/src/services/documents/types.ts | 2 +- .../backend/node/test/e2e/common/user-api.ts | 20 +++++++++++++++- .../node/test/e2e/documents/trash.spec.ts | 23 ++++++++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/tdrive/backend/node/src/services/documents/types.ts b/tdrive/backend/node/src/services/documents/types.ts index f943c8a9..733c83c5 100644 --- a/tdrive/backend/node/src/services/documents/types.ts +++ b/tdrive/backend/node/src/services/documents/types.ts @@ -28,7 +28,7 @@ export type DriveItemDetails = { export type BrowseDetails = DriveItemDetails & { nextPage: Paginable }; export type DriveFileAccessLevel = "read" | "write" | "manage"; -export type publicAccessLevel = "write" | "read" | "none"; +export type publicAccessLevel = "write" | "read" | "none" | "manage"; export type RootType = "root"; export type TrashType = "trash"; diff --git a/tdrive/backend/node/test/e2e/common/user-api.ts b/tdrive/backend/node/test/e2e/common/user-api.ts index f8d5aeac..e0baac94 100644 --- a/tdrive/backend/node/test/e2e/common/user-api.ts +++ b/tdrive/backend/node/test/e2e/common/user-api.ts @@ -18,7 +18,7 @@ import { } from "./entities/mock_entities"; import { logger } from "../../../src/core/platform/framework"; import { expect } from "@jest/globals"; -import { publicAccessLevel } from "../../../src/services/documents/types"; +import { DriveFileAccessLevel, publicAccessLevel } from "../../../src/services/documents/types"; import { UserQuota } from "../../../src/services/user/web/types"; import { Api } from "../utils.api"; import { OidcJwtVerifier } from "../../../src/services/console/clients/remote-jwks-verifier"; @@ -285,6 +285,23 @@ export default class UserApi { }); } + async shareWithPublicLinkWithOkCheck(doc: Partial & { id: string }, accessLevel: publicAccessLevel) { + const shareResponse = await this.shareWithPublicLink(doc, accessLevel); + expect(shareResponse.statusCode).toBe(200); + return deserialize(DriveFile, shareResponse.body); + } + + async shareWithPermissions(doc: Partial & { id: string }, toUserId: string, permissions: DriveFileAccessLevel) { + doc.access_info.entities.push({ + type: "user", + id: toUserId, + level: permissions, + grantor: null, + }); + console.log(`INFO:: ${doc.access_info}`); + return await this.updateDocument(doc.id, doc); + } + async getPublicLinkAccessToken(doc: Partial) { const accessRes = await this.platform.app.inject({ method: "POST", @@ -434,6 +451,7 @@ export default class UserApi { expect(response.statusCode).toBe(200); const doc = deserialize(DriveItemDetailsMockClass, response.body); expect(doc.item?.id).toBe(id); + return doc; }; async sharedWithMeDocuments( diff --git a/tdrive/backend/node/test/e2e/documents/trash.spec.ts b/tdrive/backend/node/test/e2e/documents/trash.spec.ts index e06ac4a2..683e1ae0 100644 --- a/tdrive/backend/node/test/e2e/documents/trash.spec.ts +++ b/tdrive/backend/node/test/e2e/documents/trash.spec.ts @@ -102,7 +102,28 @@ describe("the Drive's documents' trash feature", () => { const deletionToTrashResponse = await currentUser.delete(anonymouslyUploadedDoc.id); expect(deletionToTrashResponse.statusCode).toBe(200); - expect((await getTrashContentIds()).indexOf(anonymouslyUploadedDoc.id)).toBeGreaterThanOrEqual(0); + expect((await getTrashContentIds())).toContain(anonymouslyUploadedDoc.id); }); + + it("If anonymous user deletes the files in should be in the users trash", async () => { + const publiclyWriteableFolder = await currentUser.createDirectory(); + const anonymousUser = await UserApi.getInstance(platform); + + const setPublicWriteableResponse = await currentUser.shareWithPublicLink(publiclyWriteableFolder, "manage"); + expect(setPublicWriteableResponse.statusCode).toBe(200); + + anonymousUser.jwt = (await anonymousUser.getPublicLinkAccessToken(publiclyWriteableFolder)).value; + const anonymouslyUploadedDoc = await anonymousUser.uploadRandomFileAndCreateDocument(publiclyWriteableFolder.id); + + const deletionToTrashResponse = await anonymousUser.delete(anonymouslyUploadedDoc.id); + expect(deletionToTrashResponse.statusCode).toBe(200); + + expect((await getTrashContentIds())).toContain(anonymouslyUploadedDoc.id); + }); + + it("if another user deletes the files it should be in the users trash", async () => { + //TODO + }); + }); }); \ No newline at end of file