owncast/test/automated/api/federation.test.js
Meisam fd683f0a72
refactor chatuser api tests (#2416)
* block and unblock ipv6 explicitly

* refactor admin api tests

* use sendAdminPayload() for chatuser tests

* fix sendAdminRequests

* add getAdminResponse() to api test lib/admin.js

* some admin apis don't have response body

* cleanup test/automated/api/chatusers.test.js

* cleanup test/automated/api/chatusers.test.js

use getAdminResponse() to access admin apis
2022-12-08 10:07:54 -08:00

128 lines
4.0 KiB
JavaScript

var request = require('supertest');
const jsonfile = require('jsonfile');
const Ajv = require('ajv-draft-04');
const sendAdminRequest = require('./lib/admin').sendAdminRequest;
request = request('http://127.0.0.1:8080');
var ajv = new Ajv();
var nodeInfoSchema = jsonfile.readFileSync('schema/nodeinfo_2.0.json');
const serverURL = 'owncast.server.test'
const fediUsername = 'streamer'
test('disable federation', async (done) => {
const res = await sendAdminRequest('config/federation/enable', false);
done();
});
test('verify responses of /.well-known/webfinger when federation is disabled', async (done) => {
const res = request.get('/.well-known/webfinger').expect(405);
done();
});
test('verify responses of /.well-known/host-meta when federation is disabled', async (done) => {
const res = request.get('/.well-known/host-meta').expect(405);
done();
});
test('verify responses of /.well-known/nodeinfo when federation is disabled', async (done) => {
const res = request.get('/.well-known/nodeinfo').expect(405);
done();
});
test('verify responses of /.well-known/x-nodeinfo2 when federation is disabled', async (done) => {
const res = request.get('/.well-known/x-nodeinfo2').expect(405);
done();
});
test('verify responses of /nodeinfo/2.0 when federation is disabled', async (done) => {
const res = request.get('/nodeinfo/2.0').expect(405);
done();
});
test('verify responses of /api/v1/instance when federation is disabled', async (done) => {
const res = request.get('/api/v1/instance').expect(405);
done();
});
test('verify responses of /federation/user/ when federation is disabled', async (done) => {
const res = request.get('/federation/user/').expect(405);
done();
});
test('verify responses of /federation/ when federation is disabled', async (done) => {
const res = request.get('/federation/').expect(405);
done();
});
test('set required parameters and enable federation', async (done) => {
const res1 = await sendAdminRequest(
'config/serverurl',
serverURL
);
const res2 = await sendAdminRequest(
'config/federation/username',
fediUsername
);
const res3 = await sendAdminRequest('config/federation/enable', true);
done();
});
test('verify responses of /.well-known/webfinger when federation is enabled', async (done) => {
const resNoResource = request.get('/.well-known/webfinger').expect(400);
const resBadResource = request.get(
'/.well-known/webfinger?resource=' + fediUsername + '@' + serverURL
).expect(400);
const resBadServer = request.get(
'/.well-known/webfinger?resource=acct:' + fediUsername + '@not.my.server.lol'
).expect(404);
const resBadUser = request.get(
'/.well-known/webfinger?resource=acct:not' + fediUsername + '@' + serverURL
).expect(404);
const res = request.get(
'/.well-known/webfinger?resource=acct:' + fediUsername + '@' + serverURL
).expect(200);
done();
});
test('verify responses of /.well-known/host-meta when federation is enabled', async (done) => {
const res = request.get('/.well-known/host-meta').expect(200);
done();
});
test('verify responses of /.well-known/nodeinfo when federation is enabled', async (done) => {
const res = request.get('/.well-known/nodeinfo').expect(200);
done();
});
test('verify responses of /.well-known/x-nodeinfo2 when federation is enabled', async (done) => {
const res = request.get('/.well-known/x-nodeinfo2').expect(200);
done();
});
test('verify responses of /nodeinfo/2.0 when federation is enabled', async (done) => {
const res = request
.get('/nodeinfo/2.0')
.expect(200)
.then((res) => {
expect(ajv.validate(nodeInfoSchema, res.body)).toBe(true);
done();
});
});
test('verify responses of /api/v1/instance when federation is enabled', async (done) => {
const res = request.get('/api/v1/instance').expect(200);
done();
});
test('verify responses of /federation/user/ when federation is enabled', async (done) => {
const res = request.get('/federation/user/').expect(200);
done();
});
test('verify responses of /federation/ when federation is enabled', async (done) => {
const res = request.get('/federation/').expect(200);
done();
});