ilp-plugin-mini-accounts
Version:
Plugin that implements a mini ephemeral ledger
62 lines (50 loc) • 1.93 kB
JavaScript
/* eslint-env mocha */
const chai = require('chai')
chai.use(require('chai-as-promised'))
const assert = chai.assert
const OriginWhitelist = require('../src/lib/origin-whitelist').default
describe('Whitelist Spec', function () {
describe('constructor', function () {
it('instantiates an object with an empty whitelist', () => {
const o = new OriginWhitelist([])
assert.isObject(o)
assert.isArray(o._whitelist)
assert.isEmpty(o._whitelist)
})
it('takes an array of allowed origins', () => {
const allowedOrigins = [/chrome-extension:\/\/someextensionid/, 'http://example.com']
const w = new OriginWhitelist(allowedOrigins)
const exptectedWhitelist = allowedOrigins.map(i => new RegExp(i))
assert.deepEqual(w._whitelist, exptectedWhitelist)
})
it('validates paramter type', () => {
assert.throws(() => new OriginWhitelist('string literal'), 'parameter allowedOrigins must be an array')
})
})
describe('addOrigin', () => {
beforeEach(() => {
this.whitelist = new OriginWhitelist([])
})
it('adds an origin', () => {
const expectedOrigin = 'http://example.com'
this.whitelist.add(expectedOrigin)
assert.deepEqual(this.whitelist._whitelist, [ new RegExp(expectedOrigin) ])
})
})
describe('isOk', () => {
beforeEach(() => {
this.whitelist = new OriginWhitelist([])
this.whitelist.add('http://example.com')
})
it('returns true if an origin is whitelisted', () => {
assert.isTrue(this.whitelist.isOk('http://example.com'))
})
it('returns false if an origin is not whitelisted', () => {
assert.isFalse(this.whitelist.isOk('http://no-example.com'))
})
it('matches a regular expression', () => {
this.whitelist.add('chrome-extension://.*')
assert.isTrue(this.whitelist.isOk('chrome-extension://someextensionid'))
})
})
})