diff --git a/src/routes/test/cloudron-test.js b/src/routes/test/cloudron-test.js index b8ec2a469..063450924 100644 --- a/src/routes/test/cloudron-test.js +++ b/src/routes/test/cloudron-test.js @@ -186,7 +186,6 @@ describe('Cloudron', function () { expect(result.body.webServerOrigin).to.eql('https://cloudron.io'); expect(result.body.adminFqdn).to.eql(settings.adminFqdn()); expect(result.body.version).to.eql(constants.VERSION); - expect(result.body.memory).to.eql(os.totalmem()); expect(result.body.cloudronName).to.be.a('string'); done(); @@ -271,4 +270,75 @@ describe('Cloudron', function () { req.on('error', done); }); }); + + describe('misc routes', function () { + before(function (done) { + async.series([ + setup, + + function (callback) { + superagent.post(SERVER_URL + '/api/v1/cloudron/activate') + .query({ setupToken: 'somesetuptoken' }) + .send({ username: USERNAME, password: PASSWORD, email: EMAIL }) + .end(function (error, result) { + expect(result).to.be.ok(); + + // stash token for further use + token = result.body.token; + + callback(); + }); + }, + + function (callback) { + superagent.post(SERVER_URL + '/api/v1/users') + .query({ access_token: token }) + .send({ username: USERNAME_1, email: EMAIL_1, invite: false }) + .end(function (error, result) { + expect(result).to.be.ok(); + expect(result.statusCode).to.eql(201); + + token_1 = hat(8 * 32); + userId_1 = result.body.id; + + // HACK to get a token for second user (passwords are generated and the user should have gotten a password setup link...) + tokendb.add({ id: 'tid-1', accessToken: token_1, identifier: userId_1, clientId: 'test-client-id', expires: Date.now() + 100000, scope: 'cloudron', name: '' }, callback); + }); + } + ], done); + }); + + after(cleanup); + + describe('memory', function () { + it('cannot get without token', function (done) { + superagent.get(SERVER_URL + '/api/v1/cloudron/memory') + .end(function (error, result) { + expect(result.statusCode).to.equal(401); + done(); + }); + }); + + it('succeeds (admin)', function (done) { + superagent.get(SERVER_URL + '/api/v1/cloudron/memory') + .query({ access_token: token }) + .end(function (error, result) { + expect(result.statusCode).to.equal(200); + expect(result.body.memory).to.eql(os.totalmem()); + expect(result.body.swap).to.be.a('number'); + + done(); + }); + }); + + it('fails (non-admin)', function (done) { + superagent.get(SERVER_URL + '/api/v1/cloudron/memory') + .query({ access_token: token_1 }) + .end(function (error, result) { + expect(result.statusCode).to.equal(403); + done(); + }); + }); + }); + }); });