budibase/packages/server/src/api/routes/tests/routing.spec.js

84 lines
2.5 KiB
JavaScript
Raw Normal View History

2021-03-08 15:49:19 +01:00
const setup = require("./utilities")
const { basicScreen } = setup.structures
2021-03-08 15:49:19 +01:00
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
const route = "/test"
2021-03-08 15:49:19 +01:00
describe("/routing", () => {
let request = setup.getRequest()
let config = setup.getConfig()
let screen, screen2
afterAll(setup.afterAll)
beforeEach(async () => {
await config.init()
screen = basicScreen()
screen.routing.route = route
screen = await config.createScreen(screen)
2021-03-08 15:49:19 +01:00
screen2 = basicScreen()
screen2.routing.roleId = BUILTIN_ROLE_IDS.POWER
screen2.routing.route = route
2021-03-08 15:49:19 +01:00
screen2 = await config.createScreen(screen2)
})
describe("fetch", () => {
it("returns the correct routing for basic user", async () => {
const res = await request
.get(`/api/routing/client`)
.set(await config.roleHeaders("basic@test.com", BUILTIN_ROLE_IDS.BASIC))
.expect("Content-Type", /json/)
.expect(200)
expect(res.body.routes).toBeDefined()
expect(res.body.routes[route]).toEqual({
2021-03-08 15:49:19 +01:00
subpaths: {
[route]: {
2021-03-08 15:49:19 +01:00
screenId: screen._id,
roleId: screen.routing.roleId
}
}
})
})
it("returns the correct routing for power user", async () => {
const res = await request
.get(`/api/routing/client`)
.set(await config.roleHeaders("basic@test.com", BUILTIN_ROLE_IDS.POWER))
.expect("Content-Type", /json/)
.expect(200)
expect(res.body.routes).toBeDefined()
expect(res.body.routes[route]).toEqual({
2021-03-08 15:49:19 +01:00
subpaths: {
[route]: {
2021-03-08 15:49:19 +01:00
screenId: screen2._id,
roleId: screen2.routing.roleId
}
}
})
})
})
describe("fetch all", () => {
it("should fetch all routes for builder", async () => {
const res = await request
.get(`/api/routing`)
.set(config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(200)
expect(res.body.routes).toBeDefined()
expect(res.body.routes[route].subpaths[route]).toBeDefined()
const subpath = res.body.routes[route].subpaths[route]
expect(subpath.screens[screen2.routing.roleId]).toEqual(screen2._id)
expect(subpath.screens[screen.routing.roleId]).toEqual(screen._id)
2021-03-08 15:49:19 +01:00
})
it("make sure it is a builder only endpoint", async () => {
await checkBuilderEndpoint({
config,
method: "GET",
url: `/api/routing`,
})
})
})
})