2019-06-14 11:05:46 +02:00
|
|
|
const app = require("../app");
|
2019-07-26 18:08:59 +02:00
|
|
|
const { remove, mkdir } = require("fs-extra");
|
2019-06-14 11:05:46 +02:00
|
|
|
const createMasterDb = require("../initialise/createMasterDb");
|
|
|
|
const request = require("supertest");
|
|
|
|
const fs = require("fs");
|
2019-07-11 10:43:47 +02:00
|
|
|
const { masterAppPackage, applictionVersionPackage } = require("../utilities/createAppPackage");
|
2019-07-09 08:29:50 +02:00
|
|
|
const buildAppContext = require("../initialise/buildAppContext");
|
2019-06-14 11:05:46 +02:00
|
|
|
var enableDestroy = require('server-destroy');
|
|
|
|
|
|
|
|
const masterOwnerName = "test_master";
|
|
|
|
const masterOwnerPassword = "test_master_pass";
|
|
|
|
|
2019-06-28 23:59:27 +02:00
|
|
|
const extraMasterPlugins = {
|
2019-07-01 23:49:13 +02:00
|
|
|
test_plugins: {
|
2019-06-25 23:48:22 +02:00
|
|
|
outputToFile : ({filename, content}) => {
|
2019-06-26 23:29:28 +02:00
|
|
|
fs.writeFile(`./tests/.data/${filename}`, content, {encoding:"utf8"});
|
2019-06-25 23:48:22 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const customizeMaster = appDefinition => {
|
|
|
|
|
|
|
|
appDefinition.actions.outputToFile = {
|
|
|
|
name: 'outputToFile',
|
2019-07-01 23:49:13 +02:00
|
|
|
behaviourSource: 'test_plugins',
|
2019-06-25 23:48:22 +02:00
|
|
|
behaviourName: 'outputToFile',
|
|
|
|
initialOptions: {}
|
|
|
|
};
|
|
|
|
|
|
|
|
appDefinition.triggers.push({
|
|
|
|
actionName: 'outputToFile',
|
|
|
|
eventName: 'authApi:createTemporaryAccess:onComplete',
|
|
|
|
optionsCreator: 'return ({filename:"tempaccess" + context.userName, content:context.result})',
|
|
|
|
condition: ''
|
|
|
|
});
|
|
|
|
|
|
|
|
return appDefinition;
|
|
|
|
}
|
|
|
|
|
2019-06-14 11:05:46 +02:00
|
|
|
const config = {
|
|
|
|
datastore: "local",
|
|
|
|
datastoreConfig: {
|
|
|
|
rootPath: "./tests/.data"
|
|
|
|
},
|
|
|
|
keys: ["secret1", "secret2"],
|
2019-06-25 23:48:22 +02:00
|
|
|
port: 4002,
|
2019-07-13 11:35:57 +02:00
|
|
|
latestPackagesFolder: "./appPackages",
|
2019-06-28 23:59:27 +02:00
|
|
|
extraMasterPlugins,
|
2019-07-26 16:13:15 +02:00
|
|
|
customizeMaster,
|
|
|
|
dev:true
|
2019-06-14 11:05:46 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = () => {
|
|
|
|
|
|
|
|
let server;
|
|
|
|
|
|
|
|
return ({
|
|
|
|
start: async () => {
|
2019-06-19 23:05:53 +02:00
|
|
|
try {
|
|
|
|
await reInitialize();
|
2019-07-09 08:29:50 +02:00
|
|
|
const budibaseContext = await buildAppContext(config, true);
|
|
|
|
server = await app(budibaseContext);
|
2019-06-19 23:05:53 +02:00
|
|
|
} catch(e) {
|
2019-07-13 11:35:57 +02:00
|
|
|
console.log(e.stack);
|
2019-06-19 23:05:53 +02:00
|
|
|
}
|
2019-06-14 11:05:46 +02:00
|
|
|
enableDestroy(server);
|
|
|
|
},
|
|
|
|
config,
|
|
|
|
server:() => server,
|
|
|
|
post: (url, body) => postRequest(server,url,body),
|
2019-07-27 08:31:31 +02:00
|
|
|
patch: (url, body) => patchRequest(server,url,body),
|
2019-06-15 00:03:01 +02:00
|
|
|
get: (url) => getRequest(server, url),
|
2019-07-27 08:43:03 +02:00
|
|
|
delete: (url) => deleteRequest(server, url),
|
2019-07-07 10:03:37 +02:00
|
|
|
credentials: {
|
2019-07-11 10:43:47 +02:00
|
|
|
masterOwner: {
|
2019-07-07 10:03:37 +02:00
|
|
|
username: masterOwnerName,
|
|
|
|
password: masterOwnerPassword,
|
|
|
|
cookie: ""
|
|
|
|
},
|
2019-07-11 10:43:47 +02:00
|
|
|
testAppUser1: {
|
2019-07-07 10:03:37 +02:00
|
|
|
username: "testAppUser1",
|
|
|
|
password: "user1_instance1_password",
|
|
|
|
cookie: ""
|
2019-07-11 10:43:47 +02:00
|
|
|
},
|
|
|
|
testAppUser2: {
|
|
|
|
username: "testAppUser2",
|
|
|
|
password: "user1_instance2_password",
|
|
|
|
cookie: ""
|
2019-07-07 10:03:37 +02:00
|
|
|
}
|
2019-06-28 23:59:27 +02:00
|
|
|
},
|
2019-07-11 10:43:47 +02:00
|
|
|
apps: {
|
|
|
|
testApp1: {
|
|
|
|
key:null,
|
|
|
|
instance1:null,
|
|
|
|
instance2:null,
|
|
|
|
version1:null,
|
|
|
|
}
|
|
|
|
},
|
2019-06-28 23:59:27 +02:00
|
|
|
testAppInfo: {
|
|
|
|
name: "testApp"
|
2019-06-14 18:01:01 +02:00
|
|
|
},
|
2019-09-12 16:55:36 +02:00
|
|
|
destroy: () => server && server.destroy(),
|
2019-07-11 10:43:47 +02:00
|
|
|
masterAppPackage: masterAppPackage({ config }),
|
|
|
|
testAppInstance1AppPackage: async (app) => applictionVersionPackage(
|
|
|
|
await buildAppContext(config, true),
|
|
|
|
"testApp",
|
|
|
|
app.apps.testApp1.instance1.version.id,
|
|
|
|
app.apps.testApp1.instance1.key)
|
2019-06-14 11:05:46 +02:00
|
|
|
})
|
|
|
|
};
|
|
|
|
|
2019-07-27 08:31:31 +02:00
|
|
|
const patchRequest = (server, url, body) =>
|
|
|
|
request(server)
|
|
|
|
.patch(url)
|
|
|
|
.send(body)
|
|
|
|
.set('Accept', 'application/json');
|
2019-06-28 23:59:27 +02:00
|
|
|
|
2019-06-14 11:05:46 +02:00
|
|
|
const postRequest = (server, url, body) =>
|
2019-06-14 18:01:01 +02:00
|
|
|
request(server)
|
2019-06-14 11:05:46 +02:00
|
|
|
.post(url)
|
|
|
|
.send(body)
|
|
|
|
.set('Accept', 'application/json');
|
|
|
|
|
2019-07-27 08:43:03 +02:00
|
|
|
|
|
|
|
const deleteRequest = (server, url) =>
|
|
|
|
request(server)
|
|
|
|
.delete(url)
|
|
|
|
.set('Accept', 'application/json');
|
|
|
|
|
2019-06-15 00:03:01 +02:00
|
|
|
const getRequest = (server, url) =>
|
|
|
|
request(server)
|
|
|
|
.get(url)
|
|
|
|
.set('Accept', 'application/json');
|
2019-06-14 11:05:46 +02:00
|
|
|
|
|
|
|
const reInitialize = async () => {
|
|
|
|
try {
|
2019-07-26 18:08:59 +02:00
|
|
|
await remove(config.datastoreConfig.rootPath);
|
2019-06-14 11:05:46 +02:00
|
|
|
} catch(_){}
|
|
|
|
|
|
|
|
await mkdir(config.datastoreConfig.rootPath);
|
|
|
|
|
|
|
|
const datastoreModule = require("../../datastores/datastores/" + config.datastore);
|
2019-07-09 08:29:50 +02:00
|
|
|
const budibaseContext = await buildAppContext(config, false);
|
2019-06-14 11:05:46 +02:00
|
|
|
await createMasterDb(
|
2019-07-09 08:29:50 +02:00
|
|
|
budibaseContext,
|
2019-06-14 11:05:46 +02:00
|
|
|
datastoreModule,
|
|
|
|
masterOwnerName,
|
2019-07-09 08:29:50 +02:00
|
|
|
masterOwnerPassword
|
2019-06-14 11:05:46 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2019-07-09 08:29:50 +02:00
|
|
|
|