more async'ification

This commit is contained in:
Girish Ramakrishnan
2021-09-07 09:57:49 -07:00
parent e7f51d992f
commit 7709e155e0
15 changed files with 267 additions and 400 deletions

View File

@@ -1,7 +1,6 @@
'use strict';
const async = require('async'),
constants = require('../../constants.js'),
const constants = require('../../constants.js'),
database = require('../../database.js'),
delay = require('delay'),
expect = require('expect.js'),
@@ -12,8 +11,7 @@ const async = require('async'),
settings = require('../../settings.js'),
support = require('../../support.js'),
superagent = require('superagent'),
tokens = require('../../tokens.js'),
util = require('util');
tokens = require('../../tokens.js');
exports = module.exports = {
setup,
@@ -47,72 +45,48 @@ exports = module.exports = {
serverUrl: `http://localhost:${constants.PORT}`,
};
function setupServer(done) {
async.series([
server.start.bind(null),
database._clear,
settings._setApiServerOrigin.bind(null, exports.mockApiServerOrigin),
], done);
async function setupServer() {
await server.start();
await database._clear();
await settings._setApiServerOrigin(exports.mockApiServerOrigin);
}
function setup(done) {
async function setup() {
const owner = exports.owner, serverUrl = exports.serverUrl, user = exports.user;
async.series([
setupServer,
async () => await safe(fs.promises.unlink(support._sshInfo().filePath)),
settings.setCloudronToken.bind(null, exports.appstoreToken),
await setupServer();
await safe(fs.promises.unlink(support._sshInfo().filePath));
await settings.setCloudronToken(exports.appstoreToken);
function setup(callback) {
superagent.post(`${serverUrl}/api/v1/cloudron/setup`)
.send({ dnsConfig: { provider: 'noop', domain: exports.dashboardDomain, config: {}, tlsConfig: { provider: 'fallback' } } })
.end(function (error, result) {
expect(result).to.be.ok();
expect(result.statusCode).to.eql(200);
// setup
let response = await superagent.post(`${serverUrl}/api/v1/cloudron/setup`)
.send({ dnsConfig: { provider: 'noop', domain: exports.dashboardDomain, config: {}, tlsConfig: { provider: 'fallback' } } });
expect(response.status).to.eql(200);
setTimeout(callback, 2000);
});
},
await delay(2000);
function createAdmin(callback) {
superagent.post(`${serverUrl}/api/v1/cloudron/activate`)
.query({ setupToken: 'somesetuptoken' })
.send({ username: owner.username, password: owner.password, email: owner.email })
.end(function (error, result) {
expect(result).to.be.ok();
expect(result.statusCode).to.eql(201);
// create admin
response = await superagent.post(`${serverUrl}/api/v1/cloudron/activate`)
.query({ setupToken: 'somesetuptoken' })
.send({ username: owner.username, password: owner.password, email: owner.email });
expect(response.status).to.eql(201);
owner.token = response.body.token;
owner.id = response.body.userId;
// stash token for further use
owner.token = result.body.token;
owner.id = result.body.userId;
callback();
});
},
function createUser(callback) {
superagent.post(`${serverUrl}/api/v1/users`)
.query({ access_token: owner.token })
.send({ username: user.username, email: user.email, password: user.password })
.end(async function (error, result) {
expect(error).to.not.be.ok();
expect(result.statusCode).to.equal(201);
user.id = result.body.id;
// HACK to get a token for second user (passwords are generated and the user should have gotten a password setup link...)
const token = await tokens.add({ identifier: user.id, clientId: 'test-client-id', expires: Date.now() + (60 * 60 * 1000), name: 'fromtest' });
user.token = token.accessToken;
callback();
});
}
], done);
// create user
response = await superagent.post(`${serverUrl}/api/v1/users`)
.query({ access_token: owner.token })
.send({ username: user.username, email: user.email, password: user.password });
expect(response.status).to.equal(201);
user.id = response.body.id;
// HACK to get a token for second user (passwords are generated and the user should have gotten a password setup link...)
const token = await tokens.add({ identifier: user.id, clientId: 'test-client-id', expires: Date.now() + (60 * 60 * 1000), name: 'fromtest' });
user.token = token.accessToken;
}
async function cleanup() {
await database._clear();
await util.promisify(server.stop)();
await server.stop();
}
function clearMailQueue() {