chore: move v2 api behind ff (#6213)

This commit is contained in:
Sebastian Rindom
2024-01-25 14:39:22 +00:00
committed by GitHub
parent 4c4c0f655b
commit 4ad761788b
31 changed files with 78 additions and 41 deletions
@@ -14,7 +14,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("/store/carts", () => { describe.skip("/store/carts", () => {
let dbConnection let dbConnection
let shutdownServer let shutdownServer
@@ -29,7 +29,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/price-lists/:id/prices/batch", () => { describe.skip("POST /admin/price-lists/:id/prices/batch", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -26,7 +26,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/price-lists", () => { describe.skip("POST /admin/price-lists", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -26,7 +26,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("DELETE /admin/price-lists/:id/products/:productId/batch", () => { describe.skip("DELETE /admin/price-lists/:id/products/:productId/batch", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("DELETE /admin/price-lists/:id/variants/:variantId/prices", () => { describe.skip("DELETE /admin/price-lists/:id/variants/:variantId/prices", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("DELETE /admin/price-lists/:id", () => { describe.skip("DELETE /admin/price-lists/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("DELETE /admin/price-lists/:id", () => { describe.skip("DELETE /admin/price-lists/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("GET /admin/price-lists/:id", () => { describe.skip("GET /admin/price-lists/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("GET /admin/price-lists/:id/products", () => { describe.skip("GET /admin/price-lists/:id/products", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("GET /admin/price-lists", () => { describe.skip("GET /admin/price-lists", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -30,7 +30,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/price-lists/:id", () => { describe.skip("POST /admin/price-lists/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -32,7 +32,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("GET /store/products/:id", () => { describe.skip("GET /store/products/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -28,7 +28,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("Link Modules", () => { describe.skip("Link Modules", () => {
let medusaContainer let medusaContainer
let dbConnection let dbConnection
let shutdownServer let shutdownServer
@@ -26,7 +26,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/products/:id/variants", () => { describe.skip("POST /admin/products/:id/variants", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -23,7 +23,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/products", () => { describe.skip("POST /admin/products", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -24,7 +24,7 @@ const env: Record<any, any> = {
jest.setTimeout(180000) jest.setTimeout(180000)
describe("Batch job of product-export type", () => { describe.skip("Batch job of product-export type", () => {
let medusaProcess let medusaProcess
let dbConnection let dbConnection
let exportFilePath = "" let exportFilePath = ""
@@ -49,7 +49,7 @@ const env: Record<any, any> = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("Product import batch job", () => { describe.skip("Product import batch job", () => {
let dbConnection let dbConnection
let shutdownServer let shutdownServer
let medusaProcess let medusaProcess
@@ -28,7 +28,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("/admin/products", () => { describe.skip("/admin/products", () => {
let dbConnection let dbConnection
let shutdownServer let shutdownServer
let medusaContainer let medusaContainer
@@ -25,7 +25,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/products/:id/variants/:id", () => { describe.skip("POST /admin/products/:id/variants/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -23,7 +23,7 @@ const env = {
MEDUSA_FF_MEDUSA_V2: true, MEDUSA_FF_MEDUSA_V2: true,
} }
describe("POST /admin/products/:id", () => { describe.skip("POST /admin/products/:id", () => {
let dbConnection let dbConnection
let appContainer let appContainer
let shutdownServer let shutdownServer
@@ -7,6 +7,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
export const campaignsData = [ export const campaignsData = [
{ {
id: "campaign-id-1", id: "campaign-id-1",
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
export const campaignData = { export const campaignData = {
name: "campaign 1", name: "campaign 1",
description: "test description", description: "test description",
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
@@ -7,6 +7,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
@@ -8,6 +8,8 @@ import { getContainer } from "../../../../environment-helpers/use-container"
import { initDb, useDb } from "../../../../environment-helpers/use-db" import { initDb, useDb } from "../../../../environment-helpers/use-db"
import adminSeeder from "../../../../helpers/admin-seeder" import adminSeeder from "../../../../helpers/admin-seeder"
jest.setTimeout(50000)
const env = { MEDUSA_FF_MEDUSA_V2: true } const env = { MEDUSA_FF_MEDUSA_V2: true }
const adminHeaders = { const adminHeaders = {
headers: { "x-medusa-access-token": "test_token" }, headers: { "x-medusa-access-token": "test_token" },
+29 -1
View File
@@ -1,7 +1,10 @@
import path from "path"
import { FeatureFlagUtils, FlagRouter } from "@medusajs/utils"
import { AwilixContainer } from "awilix" import { AwilixContainer } from "awilix"
import bodyParser from "body-parser" import bodyParser from "body-parser"
import { Express } from "express" import { Express } from "express"
import qs from "qs" import qs from "qs"
import { RoutesLoader } from "./helpers/routing"
import routes from "../api" import routes from "../api"
import { ConfigModule } from "../types/global" import { ConfigModule } from "../types/global"
@@ -9,9 +12,15 @@ type Options = {
app: Express app: Express
container: AwilixContainer container: AwilixContainer
configModule: ConfigModule configModule: ConfigModule
featureFlagRouter?: FlagRouter
} }
export default async ({ app, container, configModule }: Options) => { export default async ({
app,
container,
configModule,
featureFlagRouter,
}: Options) => {
// This is a workaround for the issue described here: https://github.com/expressjs/express/issues/3454 // This is a workaround for the issue described here: https://github.com/expressjs/express/issues/3454
// We parse the url and get the qs to be parsed and override the query prop from the request // We parse the url and get the qs to be parsed and override the query prop from the request
app.use(function (req, res, next) { app.use(function (req, res, next) {
@@ -25,7 +34,26 @@ export default async ({ app, container, configModule }: Options) => {
}) })
app.use(bodyParser.json()) app.use(bodyParser.json())
if (featureFlagRouter?.isFeatureEnabled(FeatureFlagUtils.MedusaV2Flag.key)) {
// TODO: Figure out why this is causing issues with test when placed inside ./api.ts
// Adding this here temporarily
// Test: (packages/medusa/src/api/routes/admin/currencies/update-currency.ts)
try {
/**
* Register the Medusa CORE API routes using the file based routing.
*/
await new RoutesLoader({
app: app,
rootDir: path.join(__dirname, "../api-v2"),
configModule,
}).load()
} catch (err) {
throw Error("An error occurred while registering Medusa Core API Routes")
}
} else {
app.use("/", routes(container, configModule.projectConfig)) app.use("/", routes(container, configModule.projectConfig))
}
return app return app
} }
@@ -108,7 +108,12 @@ export const createServer = async (rootDir) => {
}).load() }).load()
// the apiLoader needs to be called after plugins otherwise the core middleware bleads into the plugins // the apiLoader needs to be called after plugins otherwise the core middleware bleads into the plugins
await apiLoader({ container, app: app, configModule: config }) await apiLoader({
container,
app: app,
configModule: config,
featureFlagRouter,
})
const superRequest = supertest(app) const superRequest = supertest(app)
+6 -18
View File
@@ -22,7 +22,6 @@ import loadConfig from "./config"
import defaultsLoader from "./defaults" import defaultsLoader from "./defaults"
import expressLoader from "./express" import expressLoader from "./express"
import featureFlagsLoader from "./feature-flags" import featureFlagsLoader from "./feature-flags"
import { RoutesLoader } from "./helpers/routing"
import Logger from "./logger" import Logger from "./logger"
import loadMedusaApp, { mergeDefaultModules } from "./medusa-app" import loadMedusaApp, { mergeDefaultModules } from "./medusa-app"
import modelsLoader from "./models" import modelsLoader from "./models"
@@ -197,22 +196,6 @@ export default async ({
next() next()
}) })
// TODO: Figure out why this is causing issues with test when placed inside ./api.ts
// Adding this here temporarily
// Test: (packages/medusa/src/api/routes/admin/currencies/update-currency.ts)
try {
/**
* Register the Medusa CORE API routes using the file based routing.
*/
await new RoutesLoader({
app: expressApp,
rootDir: path.join(__dirname, "../api-v2"),
configModule,
}).load()
} catch (err) {
throw Error("An error occurred while registering Medusa Core API Routes")
}
const pluginsActivity = Logger.activity(`Initializing plugins${EOL}`) const pluginsActivity = Logger.activity(`Initializing plugins${EOL}`)
track("PLUGINS_INIT_STARTED") track("PLUGINS_INIT_STARTED")
await pluginsLoader({ await pluginsLoader({
@@ -233,7 +216,12 @@ export default async ({
const apiActivity = Logger.activity(`Initializing API${EOL}`) const apiActivity = Logger.activity(`Initializing API${EOL}`)
track("API_INIT_STARTED") track("API_INIT_STARTED")
await apiLoader({ container, app: expressApp, configModule }) await apiLoader({
container,
app: expressApp,
configModule,
featureFlagRouter,
})
const apiAct = Logger.success(apiActivity, "API initialized") || {} const apiAct = Logger.success(apiActivity, "API initialized") || {}
track("API_INIT_COMPLETED", { duration: apiAct.duration }) track("API_INIT_COMPLETED", { duration: apiAct.duration })