From 37b794b89d1660ac306352819a0432a436ad67a0 Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Wed, 5 Jun 2024 14:24:33 +0200 Subject: [PATCH] chore: Move upload tests to HTTP layer (#7610) --- .../__tests__/upload/admin/upload.spec.ts} | 15 ++++----------- integration-tests/http/medusa-config.js | 19 +++++++++++++++++++ .../file-local/src/services/local-file.ts | 7 ++----- 3 files changed, 25 insertions(+), 16 deletions(-) rename integration-tests/{api/__tests__/admin/upload.ts => http/__tests__/upload/admin/upload.spec.ts} (89%) diff --git a/integration-tests/api/__tests__/admin/upload.ts b/integration-tests/http/__tests__/upload/admin/upload.spec.ts similarity index 89% rename from integration-tests/api/__tests__/admin/upload.ts rename to integration-tests/http/__tests__/upload/admin/upload.spec.ts index c860326d54..893ddd4d45 100644 --- a/integration-tests/api/__tests__/admin/upload.ts +++ b/integration-tests/http/__tests__/upload/admin/upload.spec.ts @@ -1,11 +1,12 @@ import { medusaIntegrationTestRunner } from "medusa-test-utils" import FormData from "form-data" import fs from "fs/promises" +import os from "os" import path from "path" import { adminHeaders, createAdminUser, -} from "../../../helpers/create-admin-user" +} from "../../../../helpers/create-admin-user" jest.setTimeout(30000) @@ -27,24 +28,16 @@ const getUploadReq = (files: { name: string; content: string }[]) => { } medusaIntegrationTestRunner({ - env: { - MEDUSA_FF_MEDUSA_V2: true, - }, testSuite: ({ dbConnection, getContainer, api }) => { - let appContainer - beforeAll(() => {}) afterAll(async () => { - await fs.rm(path.join(process.cwd(), "uploads"), { recursive: true }) + await fs.rm(path.join(os.tmpdir(), "uploads"), { recursive: true }) }) beforeEach(async () => { - appContainer = getContainer() - await createAdminUser(dbConnection, adminHeaders, appContainer) + await createAdminUser(dbConnection, adminHeaders, getContainer()) }) describe("POST /admin/uploads", () => { - beforeEach(async () => {}) - it("uploads a single file successfully", async () => { const { form, meta } = getUploadReq([ { name: "first.jpeg", content: "first content" }, diff --git a/integration-tests/http/medusa-config.js b/integration-tests/http/medusa-config.js index c719ef6ffd..56c5bf92ec 100644 --- a/integration-tests/http/medusa-config.js +++ b/integration-tests/http/medusa-config.js @@ -1,4 +1,7 @@ const { defineConfig, Modules } = require("@medusajs/utils") +const os = require("os") +const path = require("path") + const DB_HOST = process.env.DB_HOST const DB_USERNAME = process.env.DB_USERNAME const DB_PASSWORD = process.env.DB_PASSWORD @@ -32,5 +35,21 @@ module.exports = defineConfig({ providers: [customFulfillmentProvider], }, }, + [Modules.FILE]: { + resolve: "@medusajs/file", + options: { + providers: [ + { + resolve: "@medusajs/file-local-next", + options: { + config: { + // This is the directory where we can reliably write in CI environments + local: { upload_dir: path.join(os.tmpdir(), "uploads") }, + }, + }, + }, + ], + }, + }, }, }) diff --git a/packages/modules/providers/file-local/src/services/local-file.ts b/packages/modules/providers/file-local/src/services/local-file.ts index 8b7dcbe598..322707c56e 100644 --- a/packages/modules/providers/file-local/src/services/local-file.ts +++ b/packages/modules/providers/file-local/src/services/local-file.ts @@ -10,7 +10,7 @@ export class LocalFileService extends AbstractFileProviderService { constructor(_, options: LocalFileServiceOptions) { super() - this.uploadDir_ = options?.upload_dir || "uploads" + this.uploadDir_ = options?.upload_dir || path.join(__dirname, "uploads") this.backendUrl_ = options?.backend_url || "http://localhost:9000" } @@ -29,10 +29,7 @@ export class LocalFileService extends AbstractFileProviderService { } const parsedFilename = path.parse(file.filename) - - if (parsedFilename.dir) { - this.ensureDirExists(parsedFilename.dir) - } + await this.ensureDirExists(parsedFilename.dir) const fileKey = path.join( parsedFilename.dir,