Test fixes
This commit is contained in:
parent
630f29444d
commit
0f29b0cb03
|
@ -1,120 +0,0 @@
|
|||
jest.mock("../../db")
|
||||
jest.mock("../../utilities/usageQuota")
|
||||
jest.mock("@budibase/backend-core/tenancy", () => ({
|
||||
getTenantId: () => "testing123"
|
||||
}))
|
||||
|
||||
const usageQuotaMiddleware = require("../usageQuota")
|
||||
const usageQuota = require("../../utilities/usageQuota")
|
||||
|
||||
jest.mock("@budibase/backend-core/db")
|
||||
const { dangerousGetDB } = require("@budibase/backend-core/db")
|
||||
|
||||
const env = require("../../environment")
|
||||
|
||||
class TestConfiguration {
|
||||
constructor() {
|
||||
this.throw = jest.fn()
|
||||
this.next = jest.fn()
|
||||
this.middleware = usageQuotaMiddleware
|
||||
this.ctx = {
|
||||
throw: this.throw,
|
||||
next: this.next,
|
||||
appId: "test",
|
||||
request: {
|
||||
body: {}
|
||||
},
|
||||
req: {
|
||||
method: "POST",
|
||||
url: "/applications"
|
||||
}
|
||||
}
|
||||
usageQuota.useQuotas = () => true
|
||||
}
|
||||
|
||||
executeMiddleware() {
|
||||
return this.middleware(this.ctx, this.next)
|
||||
}
|
||||
|
||||
setProd(bool) {
|
||||
if (bool) {
|
||||
env.isDev = () => false
|
||||
env.isProd = () => true
|
||||
this.ctx.user = { tenantId: "test" }
|
||||
} else {
|
||||
env.isDev = () => true
|
||||
env.isProd = () => false
|
||||
}
|
||||
}
|
||||
|
||||
setMethod(method) {
|
||||
this.ctx.req.method = method
|
||||
}
|
||||
|
||||
setUrl(url) {
|
||||
this.ctx.req.url = url
|
||||
}
|
||||
|
||||
setBody(body) {
|
||||
this.ctx.request.body = body
|
||||
}
|
||||
|
||||
setFiles(files) {
|
||||
this.ctx.request.files = { file: files }
|
||||
}
|
||||
}
|
||||
|
||||
describe("usageQuota middleware", () => {
|
||||
let config
|
||||
|
||||
beforeEach(() => {
|
||||
config = new TestConfiguration()
|
||||
})
|
||||
|
||||
it("skips the middleware if there is no usage property or method", async () => {
|
||||
await config.executeMiddleware()
|
||||
expect(config.next).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it("passes through to next middleware if document already exists", async () => {
|
||||
config.setProd(true)
|
||||
config.setBody({
|
||||
_id: "test",
|
||||
_rev: "test",
|
||||
})
|
||||
|
||||
dangerousGetDB.mockImplementationOnce(() => ({
|
||||
get: async () => true
|
||||
}))
|
||||
|
||||
await config.executeMiddleware()
|
||||
|
||||
expect(config.next).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it("throws if request has _id, but the document no longer exists", async () => {
|
||||
config.setBody({
|
||||
_id: "123",
|
||||
_rev: "test",
|
||||
})
|
||||
config.setProd(true)
|
||||
|
||||
dangerousGetDB.mockImplementationOnce(() => ({
|
||||
get: async () => {
|
||||
throw new Error()
|
||||
}
|
||||
}))
|
||||
|
||||
await config.executeMiddleware()
|
||||
expect(config.throw).toHaveBeenCalledWith(404, `${config.ctx.request.body._id} does not exist`)
|
||||
})
|
||||
|
||||
it("calculates and persists the correct usage quota for the relevant action", async () => {
|
||||
config.setUrl("/rows")
|
||||
|
||||
await config.executeMiddleware()
|
||||
|
||||
expect(usageQuota.update).toHaveBeenCalledWith("rows", 1)
|
||||
expect(config.next).toHaveBeenCalled()
|
||||
})
|
||||
})
|
|
@ -1,41 +0,0 @@
|
|||
const { doInTenant, getGlobalDB } = require("@budibase/backend-core/tenancy")
|
||||
const TestConfig = require("../../../../tests/utilities/TestConfiguration")
|
||||
const { TENANT_ID } = require("../../../../tests/utilities/structures")
|
||||
const { getUsageQuotaDoc, update, Properties } = require("../../../../utilities/usageQuota")
|
||||
const syncApps = require("../syncApps")
|
||||
const env = require("../../../../environment")
|
||||
|
||||
describe("syncApps", () => {
|
||||
|
||||
let config = new TestConfig(false)
|
||||
|
||||
beforeEach(async () => {
|
||||
await config.init()
|
||||
env._set("USE_QUOTAS", 1)
|
||||
})
|
||||
|
||||
afterAll(config.end)
|
||||
|
||||
it("runs successfully", async () => {
|
||||
await doInTenant(TENANT_ID, async () => {
|
||||
const db = getGlobalDB()
|
||||
// create the usage quota doc and mock usages
|
||||
await getUsageQuotaDoc(db)
|
||||
await update(Properties.APPS, 3)
|
||||
|
||||
let usageDoc = await getUsageQuotaDoc(db)
|
||||
expect(usageDoc.usageQuota.apps).toEqual(3)
|
||||
|
||||
// create an extra app to test the migration
|
||||
await config.createApp("quota-test")
|
||||
|
||||
// migrate
|
||||
await syncApps.run()
|
||||
|
||||
// assert the migration worked
|
||||
usageDoc = await getUsageQuotaDoc(db)
|
||||
expect(usageDoc.usageQuota.apps).toEqual(2)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
const { doInTenant, getGlobalDB } = require("@budibase/backend-core/tenancy")
|
||||
const TestConfig = require("../../../../tests/utilities/TestConfiguration")
|
||||
const { TENANT_ID } = require("../../../../tests/utilities/structures")
|
||||
const { getUsageQuotaDoc, update, Properties } = require("../../../../utilities/usageQuota")
|
||||
const syncRows = require("../syncRows")
|
||||
const env = require("../../../../environment")
|
||||
|
||||
describe("syncRows", () => {
|
||||
let config = new TestConfig(false)
|
||||
|
||||
beforeEach(async () => {
|
||||
await config.init()
|
||||
env._set("USE_QUOTAS", 1)
|
||||
})
|
||||
|
||||
afterAll(config.end)
|
||||
|
||||
it("runs successfully", async () => {
|
||||
await doInTenant(TENANT_ID, async () => {
|
||||
const db = getGlobalDB()
|
||||
await getUsageQuotaDoc(db)
|
||||
await update(Properties.ROW, 300)
|
||||
|
||||
let usageDoc = await getUsageQuotaDoc(db)
|
||||
expect(usageDoc.usageQuota.rows).toEqual(300)
|
||||
|
||||
// app 1
|
||||
await config.createTable()
|
||||
await config.createRow()
|
||||
// app 2
|
||||
await config.createApp("second-app")
|
||||
await config.createTable()
|
||||
await config.createRow()
|
||||
await config.createRow()
|
||||
|
||||
// migrate
|
||||
await syncRows.run()
|
||||
|
||||
// assert the migration worked
|
||||
usageDoc = await getUsageQuotaDoc(db)
|
||||
expect(usageDoc.usageQuota.rows).toEqual(3)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue