sorry i ever left you dear mocha node:test has two major issues: * --bail does not work and requires strange modules and incantations. I was able to work around this with a custom module. * the test reporter reports _after_ the suite is run. this makes debugging really hard. the debugs that we print all happen before the test suite summary. poor design overall.
84 lines
3.1 KiB
JavaScript
84 lines
3.1 KiB
JavaScript
import { describe, it, before, after } from 'mocha';
|
|
import applinks from '../../applinks.js';
|
|
import common from './common.js';
|
|
import assert from 'node:assert/strict';
|
|
import superagent from '@cloudron/superagent';
|
|
|
|
|
|
describe('AppLinks API', function () {
|
|
const { setup, cleanup, serverUrl, owner } = common;
|
|
|
|
before(setup);
|
|
after(cleanup);
|
|
|
|
let applinkId;
|
|
|
|
it('can add applink', async function () {
|
|
const response = await superagent.post(`${serverUrl}/api/v1/applinks`)
|
|
.query({ access_token: owner.token })
|
|
.send({ label: 'Berlin', tags: ['city'], upstreamUri: 'https://www.berlin.de', accessRestriction: null });
|
|
assert.equal(response.status, 201);
|
|
assert.ok(response.body.id);
|
|
|
|
applinkId = response.body.id;
|
|
});
|
|
|
|
it('cannot get random applink', async function () {
|
|
const response = await superagent.get(`${serverUrl}/api/v1/applinks/random`)
|
|
.query({ access_token: owner.token })
|
|
.ok(() => true);
|
|
assert.equal(response.status, 404);
|
|
});
|
|
|
|
it('cannot get valid applink', async function () {
|
|
const response = await superagent.get(`${serverUrl}/api/v1/applinks/${applinkId}`)
|
|
.query({ access_token: owner.token })
|
|
.ok(() => true);
|
|
assert.equal(response.status, 200);
|
|
assert.equal(response.body.upstreamUri, 'https://www.berlin.de');
|
|
});
|
|
|
|
it('can get get icon', async function () {
|
|
const response = await superagent.get(`${serverUrl}/api/v1/applinks/${applinkId}/icon`)
|
|
.query({ access_token: owner.token })
|
|
.ok(() => true);
|
|
assert.equal(response.status, 200);
|
|
assert.equal(response.headers['content-type'], 'application/octet-stream');
|
|
});
|
|
|
|
it('can update applink tags', async function () {
|
|
const response = await superagent.post(`${serverUrl}/api/v1/applinks/${applinkId}`)
|
|
.query({ access_token: owner.token })
|
|
.send({ tags: ['city', 'germany'] });
|
|
assert.equal(response.status, 200);
|
|
|
|
const result = await applinks.get(applinkId);
|
|
assert.deepEqual(result.tags, ['city', 'germany']);
|
|
});
|
|
|
|
it('can list applinks', async function () {
|
|
const response = await superagent.get(`${serverUrl}/api/v1/applinks`)
|
|
.query({ access_token: owner.token });
|
|
assert.equal(response.status, 200);
|
|
assert.equal(response.body.applinks.length, 1);
|
|
assert.equal(response.body.applinks[0].upstreamUri, 'https://www.berlin.de');
|
|
});
|
|
|
|
it('cannot del random applink', async function () {
|
|
const response = await superagent.del(`${serverUrl}/api/v1/applinks/random`)
|
|
.query({ access_token: owner.token })
|
|
.ok(() => true);
|
|
assert.equal(response.status, 404);
|
|
});
|
|
|
|
it('can del applink', async function () {
|
|
const response = await superagent.del(`${serverUrl}/api/v1/applinks/${applinkId}`)
|
|
.query({ access_token: owner.token })
|
|
.ok(() => true);
|
|
assert.equal(response.status, 204);
|
|
|
|
const result = await applinks.get(applinkId);
|
|
assert.equal(result, null);
|
|
});
|
|
});
|