settingsdb: merge blob get/set into settings.js

This commit is contained in:
Girish Ramakrishnan
2021-08-18 15:31:07 -07:00
parent 3806b3b3ff
commit 4671396889
7 changed files with 147 additions and 263 deletions

View File

@@ -10,193 +10,103 @@ const BoxError = require('../boxerror.js'),
expect = require('expect.js'),
fs = require('fs'),
network = require('../network.js'),
paths = require('../paths.js');
paths = require('../paths.js'),
safe = require('safetydance');
describe('Network', function () {
const { setup, cleanup } = common;
const { setup, cleanup, auditSource } = common;
before(setup);
after(cleanup);
describe('Blocklist', function () {
before(function () {
fs.writeFileSync(paths.FIREWALL_BLOCKLIST_FILE, '', 'utf8');
});
it('can get empty blocklist', function (done) {
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('');
done();
});
it('can get empty blocklist', async function () {
const result = await network.getBlocklist();
expect(result).to.equal('');
});
it('can set empty blocklist', function (done) {
network.setBlocklist('', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('');
done();
});
});
it('can set empty blocklist', async function () {
await network.setBlocklist('', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('');
});
it('can set single IPv4 in blocklist', function (done) {
network.setBlocklist('192.168.178.1', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('192.168.178.1');
done();
});
});
it('can set single IPv4 in blocklist', async function () {
await network.setBlocklist('192.168.178.1', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('192.168.178.1');
});
it('can set single IPv6 in blocklist', function (done) {
network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8');
done();
});
});
it('can set single IPv6 in blocklist', async function () {
await network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8');
});
it('can set mixed IPs with comment in blocklist', function (done) {
network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1');
done();
});
});
it('can set mixed IPs with comment in blocklist', async function () {
await network.setBlocklist('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('2a02:8106:2f:bb00:7afc:5703:ee71:3ef8\n# some comment\n192.168.178.1');
});
it('can set single IPv4 range in blocklist', function (done) {
network.setBlocklist('192.168.178.1/24', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('192.168.178.1/24');
done();
});
});
it('can set single IPv4 range in blocklist', async function () {
await network.setBlocklist('192.168.178.1/24', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('192.168.178.1/24');
});
it('can set single IPv6 range in blocklist', function (done) {
network.setBlocklist('2001:db8::', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('2001:db8::');
done();
});
});
it('can set single IPv6 range in blocklist', async function () {
await network.setBlocklist('2001:db8::', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('2001:db8::');
});
it('cannot set IPv4 in blocklist if source is same', function (done) {
network.setBlocklist('127.0.0.1', { ip: '127.0.0.1' }, function (error) {
expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(BoxError.BAD_FIELD);
done();
});
it('cannot set IPv4 in blocklist if source is same', async function () {
const [error] = await safe(network.setBlocklist('127.0.0.1', { ip: '127.0.0.1' }));
expect(error.reason).to.equal(BoxError.BAD_FIELD);
});
it('cannot set IPv6 in blocklist if source is same', function (done) {
network.setBlocklist('2001:db8:1234::1', { ip: '2001:db8:1234::1' }, function (error) {
expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(BoxError.BAD_FIELD);
done();
});
it('cannot set IPv6 in blocklist if source is same', async function () {
const [error] = await safe(network.setBlocklist('2001:db8:1234::1', { ip: '2001:db8:1234::1' }));
expect(error.reason).to.equal(BoxError.BAD_FIELD);
});
it('cannot set IPv4 range in blocklist if source is same', function (done) {
network.setBlocklist('127.0.0.1/32', { ip: '127.0.0.1' }, function (error) {
expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(BoxError.BAD_FIELD);
done();
});
it('cannot set IPv4 range in blocklist if source is same', async function () {
const [error] = await safe(network.setBlocklist('127.0.0.1/32', { ip: '127.0.0.1' }));
expect(error.reason).to.equal(BoxError.BAD_FIELD);
});
it('cannot set IPv6 range in blocklist if source is same', function (done) {
network.setBlocklist('2001:db8:1234:::', { ip: '2001:db8:1234::1' }, function (error) {
expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(BoxError.BAD_FIELD);
done();
});
it('cannot set IPv6 range in blocklist if source is same', async function () {
const [error] = await safe(network.setBlocklist('2001:db8:1234:::', { ip: '2001:db8:1234::1' }));
expect(error.reason).to.equal(BoxError.BAD_FIELD);
});
it('can set IPv4 in blocklist if source is IPv6', function (done) {
network.setBlocklist('192.168.178.1', { ip: '2001:db8:1234::1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('192.168.178.1');
done();
});
});
it('can set IPv4 in blocklist if source is IPv6', async function () {
await network.setBlocklist('192.168.178.1', { ip: '2001:db8:1234::1' });
const result = await network.getBlocklist();
expect(result).to.equal('192.168.178.1');
});
it('can set IPv6 in blocklist if source is IPv4', function (done) {
network.setBlocklist('2001:db8:1234::1', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('2001:db8:1234::1');
done();
});
});
it('can set IPv6 in blocklist if source is IPv4', async function () {
await network.setBlocklist('2001:db8:1234::1', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('2001:db8:1234::1');
});
it('can set IPv4 range in blocklist if source is IPv6', function (done) {
network.setBlocklist('192.168.178.1/32', { ip: '2001:db8:1234::1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('192.168.178.1/32');
done();
});
});
it('can set IPv4 range in blocklist if source is IPv6', async function () {
await network.setBlocklist('192.168.178.1/32', { ip: '2001:db8:1234::1' });
const result = await network.getBlocklist();
expect(result).to.equal('192.168.178.1/32');
});
it('can set IPv6 range in blocklist if source is IPv4', function (done) {
network.setBlocklist('2001:db8:1234::', { ip: '127.0.0.1' }, function (error) {
expect(error).to.equal(null);
network.getBlocklist(function (error, result) {
expect(error).to.equal(null);
expect(result).to.equal('2001:db8:1234::');
done();
});
});
it('can set IPv6 range in blocklist if source is IPv4', async function () {
await network.setBlocklist('2001:db8:1234::', auditSource);
const result = await network.getBlocklist();
expect(result).to.equal('2001:db8:1234::');
});
});
});

View File

@@ -70,12 +70,9 @@ describe('Settings', function () {
});
});
it('can get default cloudron avatar', function (done) {
settings.getCloudronAvatar(function (error, gravatar) {
expect(error).to.be(null);
expect(gravatar).to.be.a(Buffer);
done();
});
it('can get default cloudron avatar', async function () {
const avatar = await settings.getCloudronAvatar();
expect(avatar).to.be.a(Buffer);
});
it('can get backup config', function (done) {