fix(medusa): Add allowed relations to order retrieval (#2370)
**What** Add allowed relations to list orders and get order to throw appropriate error message + status code **Test** - Integration: Throw on invalid relation provided to list orders - Integration: Add test suite get order - Successfully retrieve order with expand + fields - Throw on invalid relation provided
This commit is contained in:
1 parent
642902aaeb
commit
1c688ec499
2 files changed
+69
-2
No files matched your search
@@ -1431,6 +1431,22 @@ describe("/admin/orders", () => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("throws on invalid relation", async () => {
|
||||||
|
const api = useApi()
|
||||||
|
|
||||||
|
try {
|
||||||
|
await api.get("/admin/orders?fields=id&expand=variants", {
|
||||||
|
headers: {
|
||||||
|
authorization: "Bearer test_token",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
expect(error.response.data.message).toBe(
|
||||||
|
"Relations [variants] are not valid"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
it("lists all orders with a fulfillment status = fulfilled and payment status = captured", async () => {
|
it("lists all orders with a fulfillment status = fulfilled and payment status = captured", async () => {
|
||||||
const api = useApi()
|
const api = useApi()
|
||||||
|
|
||||||
@@ -2236,4 +2252,52 @@ describe("/admin/orders", () => {
|
|||||||
await expectCancelToReturn({ code: 200 })
|
await expectCancelToReturn({ code: 200 })
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("GET /admin/orders/:id", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await adminSeeder(dbConnection)
|
||||||
|
await orderSeeder(dbConnection)
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
const db = useDb()
|
||||||
|
await db.teardown()
|
||||||
|
})
|
||||||
|
|
||||||
|
it("retrieves an order with fields and expand", async () => {
|
||||||
|
const api = useApi()
|
||||||
|
|
||||||
|
const order = await api.get(
|
||||||
|
"/admin/orders/test-order?fields=id&expand=region",
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: "Bearer test_token",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(order.status).toEqual(200)
|
||||||
|
expect(order.data.order).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
id: "test-order",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("throws on invalid relation", async () => {
|
||||||
|
const api = useApi()
|
||||||
|
|
||||||
|
try {
|
||||||
|
await api.get("/admin/orders/test-order?fields=id&expand=variants", {
|
||||||
|
headers: {
|
||||||
|
authorization: "Bearer test_token",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
expect(error.response.data.message).toBe(
|
||||||
|
"Relations [variants] are not valid"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
import "reflect-metadata"
|
import "reflect-metadata"
|
||||||
import { Order } from "../../../.."
|
import { Order } from "../../../.."
|
||||||
|
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
||||||
import {
|
import {
|
||||||
DeleteResponse,
|
DeleteResponse,
|
||||||
FindParams,
|
FindParams,
|
||||||
PaginatedResponse,
|
PaginatedResponse,
|
||||||
} from "../../../../types/common"
|
} from "../../../../types/common"
|
||||||
|
import { FlagRouter } from "../../../../utils/flag-router"
|
||||||
import middlewares, { transformQuery } from "../../../middlewares"
|
import middlewares, { transformQuery } from "../../../middlewares"
|
||||||
import { AdminGetOrdersParams } from "./list-orders"
|
import { AdminGetOrdersParams } from "./list-orders"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@ export default (app, featureFlagRouter: FlagRouter) => {
|
|||||||
defaultRelations: relations,
|
defaultRelations: relations,
|
||||||
defaultFields: defaultAdminOrdersFields,
|
defaultFields: defaultAdminOrdersFields,
|
||||||
allowedFields: allowedAdminOrdersFields,
|
allowedFields: allowedAdminOrdersFields,
|
||||||
|
allowedRelations: allowedAdminOrdersRelations,
|
||||||
isList: true,
|
isList: true,
|
||||||
}),
|
}),
|
||||||
middlewares.wrap(require("./list-orders").default)
|
middlewares.wrap(require("./list-orders").default)
|
||||||
@@ -44,6 +45,7 @@ export default (app, featureFlagRouter: FlagRouter) => {
|
|||||||
defaultRelations: relations,
|
defaultRelations: relations,
|
||||||
defaultFields: defaultAdminOrdersFields,
|
defaultFields: defaultAdminOrdersFields,
|
||||||
allowedFields: allowedAdminOrdersFields,
|
allowedFields: allowedAdminOrdersFields,
|
||||||
|
allowedRelations: allowedAdminOrdersRelations,
|
||||||
isList: false,
|
isList: false,
|
||||||
}),
|
}),
|
||||||
middlewares.wrap(require("./get-order").default)
|
middlewares.wrap(require("./get-order").default)
|
||||||
@@ -342,6 +344,7 @@ export const allowedAdminOrdersFields = [
|
|||||||
export const allowedAdminOrdersRelations = [
|
export const allowedAdminOrdersRelations = [
|
||||||
"customer",
|
"customer",
|
||||||
"region",
|
"region",
|
||||||
|
"sales_channel",
|
||||||
"billing_address",
|
"billing_address",
|
||||||
"shipping_address",
|
"shipping_address",
|
||||||
"discounts",
|
"discounts",
|
||||||
|
|||||||
Reference in new issue
Block a user