Skip to content

Commit

Permalink
🐛 Fixed problem with deleting files uploaded by an application (#793)
Browse files Browse the repository at this point in the history
  • Loading branch information
shepilov authored Jan 27, 2025
1 parent 5bace9c commit 20d128d
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -419,9 +419,9 @@ export const getItemScope = async (
context: CompanyExecutionContext,
): Promise<"personal" | "shared"> => {
let scope: "personal" | "shared";
if (item.parent_id.startsWith("user_")) {
if (item.parent_id.startsWith("user_") || item.parent_id.startsWith("trash_")) {
scope = "personal";
} else if (item.parent_id === "root") {
} else if (item.parent_id === "root" || item.parent_id === "trash") {
scope = "shared";
} else {
const driveItemParent = await repository.findOne(
Expand Down
3 changes: 2 additions & 1 deletion tdrive/backend/node/src/services/documents/services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,8 @@ export class DocumentsService {
// Check item belongs to someone
if (item.creator !== context?.user?.id) {
const creator = await this.userRepository.findOne({ id: item.creator });
if (creator.type === "anonymous") {
//if the file was created by an application or anonymous user
if (creator == null || creator.type === "anonymous") {
const loadedCreators = new Map<string, User>();
let firstOwnedItem: DriveFile | undefined;
for (let i = path.length - 1; i >= 0; i--) {
Expand Down
23 changes: 23 additions & 0 deletions tdrive/backend/node/test/e2e/documents/documents.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
DriveItemDetailsMockClass,
} from "../common/entities/mock_entities";
import { Open } from "unzipper";
import { randomUUID } from "crypto";

describe("the Drive feature", () => {
let platform: TestPlatform;
Expand Down Expand Up @@ -121,6 +122,28 @@ describe("the Drive feature", () => {
expect(zip.files.map(f => f.path).sort()).toEqual(fileNames.sort())
});


it("Delete document that was uploaded by an application", async () => {
const doc = await currentUser.uploadRandomFileAndCreateDocument();
expect(doc.id).toBeDefined();

//update creator files
const update = await currentUser.platform.documentService.repository.findOne({id: doc.id})
update.creator = randomUUID();
await currentUser.platform.documentService.repository.save(update)

const updated = await currentUser.getDocumentOKCheck(doc.id);

expect(updated.item.creator).toBe(update.creator);

let deleteResponse = await currentUser.delete(doc.id);
expect(deleteResponse.statusCode).toEqual(200);

//delete from trash
deleteResponse = await currentUser.delete(doc.id);
expect(deleteResponse.statusCode).toEqual(200);
});

it("did create a version for a drive item", async () => {
const item = await currentUser.createDefaultDocument();
const fileUploadResponse = await e2e_createDocumentFile(platform);
Expand Down
3 changes: 3 additions & 0 deletions tdrive/backend/node/test/e2e/setup/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import StorageAPI from "../../../src/core/platform/services/storage/provider";
import {SearchServiceAPI} from "../../../src/core/platform/services/search/api";
import Session from "../../../src/services/console/entities/session";
import EmailPusherAPI from "../../../src/core/platform/services/email-pusher/provider";
import { DocumentsService } from "../../../src/services/documents/services";

type TokenPayload = {
sub: string;
Expand Down Expand Up @@ -48,6 +49,7 @@ export interface TestPlatform {
messageQueue: MessageQueueServiceAPI;
authService: AuthServiceAPI;
filesService: FileServiceImpl;
documentService: DocumentsService;
auth: {
getJWTToken(payload?: TokenPayload): Promise<string>;
};
Expand Down Expand Up @@ -102,6 +104,7 @@ export async function init(
currentSession: uuidv1(),
authService: auth,
filesService: globalResolver.services.files,
documentService: globalResolver.services.documents.documents,
auth: {
getJWTToken,
},
Expand Down

0 comments on commit 20d128d

Please sign in to comment.