158 lines
3.9 KiB
JavaScript
158 lines
3.9 KiB
JavaScript
const app = require("../app")
|
|
const { remove, mkdir } = require("fs-extra")
|
|
const createMasterDb = require("../initialise/createMasterDb")
|
|
const request = require("supertest")
|
|
const fs = require("fs")
|
|
const {
|
|
masterAppPackage,
|
|
applictionVersionPackage,
|
|
} = require("../utilities/createAppPackage")
|
|
const buildAppContext = require("../initialise/buildAppContext")
|
|
var enableDestroy = require("server-destroy")
|
|
|
|
const masterOwnerName = "test_master"
|
|
const masterOwnerPassword = "test_master_pass"
|
|
|
|
const extraMasterPlugins = {
|
|
test_plugins: {
|
|
outputToFile: ({ filename, content }) => {
|
|
fs.writeFile(`./tests/.data/${filename}`, content, { encoding: "utf8" })
|
|
},
|
|
},
|
|
}
|
|
|
|
const customizeMaster = appDefinition => {
|
|
appDefinition.actions.push({
|
|
name: "outputToFile",
|
|
behaviourSource: "test_plugins",
|
|
behaviourName: "outputToFile",
|
|
initialOptions: {},
|
|
})
|
|
|
|
appDefinition.triggers.push({
|
|
actionName: "outputToFile",
|
|
eventName: "authApi:createTemporaryAccess:onComplete",
|
|
optionsCreator:
|
|
'return ({filename:"tempaccess" + context.userName, content:context.result})',
|
|
condition: "",
|
|
})
|
|
|
|
return appDefinition
|
|
}
|
|
|
|
const config = {
|
|
datastore: "local",
|
|
datastoreConfig: {
|
|
rootPath: "./tests/.data",
|
|
},
|
|
keys: ["secret1", "secret2"],
|
|
port: 4002,
|
|
latestPackagesFolder: "./appPackages",
|
|
extraMasterPlugins,
|
|
customizeMaster,
|
|
dev: true,
|
|
}
|
|
|
|
module.exports = () => {
|
|
let server
|
|
|
|
return {
|
|
start: async () => {
|
|
try {
|
|
await reInitialize()
|
|
const budibaseContext = await buildAppContext(config, true)
|
|
server = await app(budibaseContext)
|
|
} catch (e) {
|
|
console.log(e.stack)
|
|
}
|
|
enableDestroy(server)
|
|
},
|
|
config,
|
|
server: () => server,
|
|
post: (url, body) => postRequest(server, url, body),
|
|
patch: (url, body) => patchRequest(server, url, body),
|
|
get: url => getRequest(server, url),
|
|
delete: url => deleteRequest(server, url),
|
|
credentials: {
|
|
masterOwner: {
|
|
username: masterOwnerName,
|
|
password: masterOwnerPassword,
|
|
cookie: "",
|
|
},
|
|
testAppUser1: {
|
|
username: "testAppUser1",
|
|
password: "user1_instance1_password",
|
|
cookie: "",
|
|
},
|
|
testAppUser2: {
|
|
username: "testAppUser2",
|
|
password: "user1_instance2_password",
|
|
cookie: "",
|
|
},
|
|
user1_versionlessInstance: {
|
|
username: "user1_versionlessInstance",
|
|
password: "user1_versionlessInstance_password",
|
|
cookie: "",
|
|
},
|
|
},
|
|
apps: {
|
|
testApp1: {
|
|
key: null,
|
|
instance1: null,
|
|
instance2: null,
|
|
version1: null,
|
|
},
|
|
},
|
|
testAppInfo: {
|
|
name: "testApp",
|
|
},
|
|
destroy: () => server && server.destroy(),
|
|
masterAppPackage: masterAppPackage({ config }),
|
|
testAppInstance1AppPackage: async app =>
|
|
applictionVersionPackage(
|
|
await buildAppContext(config, true),
|
|
"testApp",
|
|
app.apps.testApp1.instance1.version.id,
|
|
app.apps.testApp1.instance1.key
|
|
),
|
|
}
|
|
}
|
|
|
|
const patchRequest = (server, url, body) =>
|
|
request(server)
|
|
.patch(url)
|
|
.send(body)
|
|
.set("Accept", "application/json")
|
|
|
|
const postRequest = (server, url, body) =>
|
|
request(server)
|
|
.post(url)
|
|
.send(body)
|
|
.set("Accept", "application/json")
|
|
|
|
const deleteRequest = (server, url) =>
|
|
request(server)
|
|
.delete(url)
|
|
.set("Accept", "application/json")
|
|
|
|
const getRequest = (server, url) =>
|
|
request(server)
|
|
.get(url)
|
|
.set("Accept", "application/json")
|
|
|
|
const reInitialize = async () => {
|
|
await remove(config.datastoreConfig.rootPath)
|
|
|
|
await mkdir(config.datastoreConfig.rootPath)
|
|
|
|
const datastoreModule = require("../../datastores/datastores/" +
|
|
config.datastore)
|
|
const budibaseContext = await buildAppContext(config, false)
|
|
await createMasterDb(
|
|
budibaseContext,
|
|
datastoreModule,
|
|
masterOwnerName,
|
|
masterOwnerPassword
|
|
)
|
|
}
|