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