2021-03-10 01:39:32 +13:00
|
|
|
const {
|
|
|
|
paramResource,
|
|
|
|
paramSubResource,
|
|
|
|
bodyResource,
|
|
|
|
bodySubResource,
|
|
|
|
ResourceIdGetter
|
|
|
|
} = require("../resourceId")
|
|
|
|
|
|
|
|
class TestConfiguration {
|
|
|
|
constructor(middleware) {
|
|
|
|
this.middleware = middleware
|
|
|
|
this.ctx = {
|
|
|
|
request: {},
|
|
|
|
}
|
|
|
|
this.next = jest.fn()
|
|
|
|
}
|
|
|
|
|
|
|
|
setParams(params) {
|
|
|
|
this.ctx.params = params
|
|
|
|
}
|
|
|
|
|
|
|
|
setBody(body) {
|
|
|
|
this.ctx.body = body
|
|
|
|
}
|
|
|
|
|
|
|
|
executeMiddleware() {
|
|
|
|
return this.middleware(this.ctx, this.next)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
describe("resourceId middleware", () => {
|
|
|
|
it("calls next() when there is no request object to parse", () => {
|
|
|
|
const config = new TestConfiguration(paramResource("main"))
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.next).toHaveBeenCalled()
|
|
|
|
expect(config.ctx.resourceId).toBeUndefined()
|
|
|
|
})
|
|
|
|
|
|
|
|
it("generates a resourceId middleware for context query parameters", () => {
|
|
|
|
const config = new TestConfiguration(paramResource("main"))
|
|
|
|
config.setParams({
|
|
|
|
main: "test"
|
|
|
|
})
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.ctx.resourceId).toEqual("test")
|
|
|
|
})
|
|
|
|
|
|
|
|
it("generates a resourceId middleware for context query sub parameters", () => {
|
|
|
|
const config = new TestConfiguration(paramSubResource("main", "sub"))
|
|
|
|
config.setParams({
|
|
|
|
main: "main",
|
|
|
|
sub: "test"
|
|
|
|
})
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.ctx.resourceId).toEqual("main")
|
|
|
|
expect(config.ctx.subResourceId).toEqual("test")
|
|
|
|
})
|
|
|
|
|
|
|
|
it("generates a resourceId middleware for context request body", () => {
|
|
|
|
const config = new TestConfiguration(bodyResource("main"))
|
|
|
|
config.setBody({
|
|
|
|
main: "test"
|
|
|
|
})
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.ctx.resourceId).toEqual("test")
|
|
|
|
})
|
|
|
|
|
|
|
|
it("generates a resourceId middleware for context request body sub fields", () => {
|
|
|
|
const config = new TestConfiguration(bodySubResource("main", "sub"))
|
|
|
|
config.setBody({
|
|
|
|
main: "main",
|
|
|
|
sub: "test"
|
|
|
|
})
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.ctx.resourceId).toEqual("main")
|
|
|
|
expect(config.ctx.subResourceId).toEqual("test")
|
|
|
|
})
|
|
|
|
|
|
|
|
it("parses resourceIds correctly for custom middlewares", () => {
|
|
|
|
const middleware = new ResourceIdGetter("body")
|
|
|
|
.mainResource("custom")
|
|
|
|
.subResource("customSub")
|
|
|
|
.build()
|
2021-06-02 04:09:26 +12:00
|
|
|
let config = new TestConfiguration(middleware)
|
2021-03-10 01:39:32 +13:00
|
|
|
config.setBody({
|
|
|
|
custom: "test",
|
|
|
|
customSub: "subtest"
|
|
|
|
})
|
|
|
|
|
|
|
|
config.executeMiddleware()
|
|
|
|
|
|
|
|
expect(config.ctx.resourceId).toEqual("test")
|
|
|
|
expect(config.ctx.subResourceId).toEqual("subtest")
|
|
|
|
})
|
|
|
|
})
|