Files
cloudron-box/src/routes/test/support-test.js
T
2025-07-10 10:56:05 +02:00

87 lines
3.3 KiB
JavaScript

/* global it:false */
/* global describe:false */
/* global before:false */
/* global after:false */
'use strict';
const common = require('./common.js'),
expect = require('expect.js'),
fs = require('fs'),
nock = require('nock'),
support = require('../../support.js'),
superagent = require('@cloudron/superagent');
describe('Support API', function () {
const { setup, cleanup, serverUrl, owner, mockApiServerOrigin, appstoreToken, user, admin } = common;
before(setup);
before(() => { if (!nock.isActive()) nock.activate(); });
after(cleanup);
const authorizedKeysFile = support._sshInfo().filePath;
describe('remote support', function () {
it('get remote support', async function () {
const response = await superagent.get(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token });
expect(response.status).to.equal(200);
expect(response.body.enabled).to.be(false);
});
it('enable remote support', async function () {
const response = await superagent.post(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token })
.send({ enabled: true });
expect(response.status).to.equal(202);
let data = await fs.promises.readFile(authorizedKeysFile, 'utf8');
let count = (data.match(/support@cloudron.io/g) || []).length;
expect(count).to.be(1);
});
it('returns true when remote support enabled', async function () {
const response = await superagent.get(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token });
expect(response.status).to.equal(200);
expect(response.body.enabled).to.be(true);
});
it('enable remote support (again)', async function () {
const response = await superagent.post(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token })
.send({ enabled: true });
expect(response.status).to.equal(202);
let data = await fs.promises.readFile(authorizedKeysFile, 'utf8');
let count = (data.match(/support@cloudron.io/g) || []).length;
expect(count).to.be(1);
});
it('disable remote support', async function () {
const response = await superagent.post(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token })
.send({ enabled: false });
expect(response.status).to.equal(202);
let data = await fs.promises.readFile(authorizedKeysFile, 'utf8');
let count = (data.match(/support@cloudron.io/g) || []).length;
expect(count).to.be(0);
});
it('disable remote support (again)', async function () {
const response = await superagent.post(`${serverUrl}/api/v1/support/remote_support`)
.query({ access_token: owner.token })
.send({ enabled: false });
expect(response.status).to.equal(202);
const data = await fs.promises.readFile(authorizedKeysFile, 'utf8');
const count = (data.match(/support@cloudron.io/g) || []).length;
expect(count).to.be(0);
});
});
});