2020-02-03 10:24:25 +01:00
|
|
|
const statusCodes = require("../utilities/statusCodes")
|
|
|
|
const constructHierarchy = require("../utilities/constructHierarchy")
|
|
|
|
const { readFile } = require("fs-extra")
|
|
|
|
const { hierarchy } = require("@budibase/core")
|
|
|
|
const { take } = require("lodash/fp")
|
2019-06-28 23:59:27 +02:00
|
|
|
const masterAppDefinition = constructHierarchy(
|
2020-02-03 10:24:25 +01:00
|
|
|
require("../appPackages/_master/appDefinition.json")
|
|
|
|
)
|
|
|
|
const { getApisWithFullAccess } = require("../utilities/budibaseApi")
|
|
|
|
const { createTarGzPackage } = require("../utilities/targzAppPackage")
|
|
|
|
const { timeout } = require("./helpers")
|
|
|
|
|
|
|
|
module.exports = app => {
|
|
|
|
let _master
|
|
|
|
const getmaster = async () => {
|
|
|
|
if (!_master)
|
|
|
|
_master = await getApisWithFullAccess({}, app.masterAppPackage)
|
|
|
|
return _master
|
|
|
|
}
|
|
|
|
|
|
|
|
let newAppKey = ""
|
|
|
|
it("create new application should be successful for owner", async () => {
|
|
|
|
const master = await getmaster()
|
|
|
|
const newApp = master.recordApi.getNew("/applications", "application")
|
|
|
|
newApp.name = app.testAppInfo.name
|
|
|
|
newAppKey = newApp.key
|
|
|
|
app.apps.testApp1.key = newAppKey
|
|
|
|
await app
|
|
|
|
.post(`/_master/api/record/${newApp.key}`, newApp)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
const response = await app
|
|
|
|
.get(`/_master/api/record/${newApp.key}`)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
expect(response.body.name).toBe(newApp.name)
|
|
|
|
})
|
|
|
|
|
|
|
|
let version1Key = ""
|
|
|
|
it("should be able to upload new version including package files", async () => {
|
|
|
|
jest.setTimeout(30000)
|
|
|
|
const master = await getmaster()
|
|
|
|
const version1 = master.recordApi.getNew(`${newAppKey}/versions`, "version")
|
|
|
|
version1.name = "v1"
|
|
|
|
version1.defaultAccessLevel = "owner"
|
|
|
|
version1Key = version1.key
|
|
|
|
|
|
|
|
const { path, size } = await createTarGzPackage(app.config, "testApp")
|
|
|
|
|
|
|
|
version1.package = { relativePath: "package.tar.gz", size }
|
|
|
|
|
|
|
|
await app
|
|
|
|
.post(`/_master/api/record/${version1.key}`, version1)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
await app
|
|
|
|
.post(`/_master/api/files/${version1.key}`)
|
|
|
|
.attach("file", path, "package.tar.gz")
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
const savedAppResponse = await app
|
|
|
|
.get(`/_master/api/record/${newAppKey}`)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
|
|
|
|
const savedApp = savedAppResponse.body
|
|
|
|
savedApp.defaultVersion = version1
|
|
|
|
await app
|
|
|
|
.post(`/_master/api/record/${newAppKey}`, savedApp)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
app.apps.testApp1.version1 = version1
|
|
|
|
})
|
|
|
|
|
|
|
|
let instance1
|
|
|
|
it("should be able to create new instance of app", async () => {
|
|
|
|
const master = await getmaster()
|
|
|
|
instance1 = master.recordApi.getNew(`${newAppKey}/instances`, "instance")
|
|
|
|
instance1.name = "instance 1"
|
|
|
|
instance1.active = true
|
|
|
|
instance1.version = {
|
|
|
|
key: version1Key,
|
|
|
|
name: "v1",
|
|
|
|
defaultAccessLevel: "owner",
|
2019-06-28 23:59:27 +02:00
|
|
|
}
|
2019-07-18 09:05:16 +02:00
|
|
|
|
2020-02-03 10:24:25 +01:00
|
|
|
await app
|
|
|
|
.post(`/_master/api/record/${instance1.key}`, instance1)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
const loadInstanceResponse = await app
|
|
|
|
.get(`/_master/api/record/${instance1.key}`)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
instance1 = loadInstanceResponse.body
|
|
|
|
app.apps.testApp1.instance1 = instance1
|
|
|
|
})
|
|
|
|
|
|
|
|
let user1_instance1
|
|
|
|
it("should be able to create new user on instance, via master", async () => {
|
|
|
|
const master = await getmaster()
|
|
|
|
user1_instance1 = master.recordApi.getNew(`${newAppKey}/users`, "user")
|
|
|
|
user1_instance1.name = app.credentials.testAppUser1.username
|
|
|
|
user1_instance1.createdByMaster = true
|
|
|
|
master.recordApi.setCustomId(user1_instance1, user1_instance1.name)
|
|
|
|
/*const lookupResponse = await app.get(`/_master/api/lookup_field/${user1_instance1.key}?fields=instance`)
|
2019-07-11 10:43:47 +02:00
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
2019-07-05 17:56:53 +02:00
|
|
|
.expect(statusCodes.OK);
|
|
|
|
*/
|
2020-02-03 10:24:25 +01:00
|
|
|
user1_instance1.instance = instance1
|
|
|
|
user1_instance1.active = true
|
|
|
|
//await timeout(100);
|
|
|
|
await app
|
|
|
|
.post(`/_master/api/record/${user1_instance1.key}`, user1_instance1)
|
|
|
|
.set("cookie", app.credentials.masterOwner.cookie)
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
})
|
|
|
|
|
|
|
|
it("should be able to set password for new user using temporary code", async () => {
|
|
|
|
const testUserTempCode = await readFile(
|
|
|
|
`./tests/.data/tempaccess${user1_instance1.name}`,
|
|
|
|
"utf8"
|
|
|
|
)
|
|
|
|
user1_instance1.password = app.credentials.testAppUser1.password
|
|
|
|
|
|
|
|
await app
|
|
|
|
.post("/testApp/api/setPasswordFromTemporaryCode", {
|
|
|
|
username: app.credentials.testAppUser1.username,
|
|
|
|
tempCode: testUserTempCode,
|
|
|
|
newPassword: app.credentials.testAppUser1.password,
|
|
|
|
})
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
const response = await app
|
|
|
|
.post("/testApp/api/authenticate", {
|
|
|
|
username: app.credentials.testAppUser1.username,
|
|
|
|
password: app.credentials.testAppUser1.password,
|
|
|
|
})
|
|
|
|
.expect(statusCodes.OK)
|
|
|
|
|
|
|
|
app.credentials.testAppUser1.cookie = response.header["set-cookie"]
|
|
|
|
})
|
|
|
|
}
|