third-party-web
Version:
Categorized data on third party entities on the web.
59 lines (52 loc) • 2.16 kB
JavaScript
const fs = require('fs')
const path = require('path')
const {createAPIFromDataset} = require('./create-entity-finder-api.js')
describe('getEntity', () => {
let api
beforeEach(() => {
api = createAPIFromDataset([
{
name: 'Domain',
domains: ['*.example.com', '*.example.co.uk'],
},
{
name: 'Subdomain',
domains: ['*.sub.example.com', '*.sub.example.co.uk'],
},
{
name: 'Subsubdomain',
domains: ['very.specific.example.com'],
},
])
})
it('should find direct domains', () => {
expect(api.getEntity('https://very.specific.example.com/path').name).toEqual('Subsubdomain')
})
it('should find wildcard subdomains', () => {
expect(api.getEntity('https://foo.sub.example.com/path').name).toEqual('Subdomain')
expect(api.getEntity('https://bar.sub.example.com/path').name).toEqual('Subdomain')
expect(api.getEntity('https://baz.bar.sub.example.com/path').name).toEqual('Subdomain')
expect(api.getEntity('https://foo.sub.example.co.uk/path').name).toEqual('Subdomain')
expect(api.getEntity('https://bar.sub.example.co.uk/path').name).toEqual('Subdomain')
expect(api.getEntity('https://baz.bar.sub.example.co.uk/path').name).toEqual('Subdomain')
})
it('should find wildcard domains', () => {
expect(api.getEntity('https://foo.example.com/path').name).toEqual('Domain')
expect(api.getEntity('https://bar.example.com/path').name).toEqual('Domain')
expect(api.getEntity('https://baz.bar.example.com/path').name).toEqual('Domain')
expect(api.getEntity('https://foo.example.co.uk/path').name).toEqual('Domain')
expect(api.getEntity('https://bar.example.co.uk/path').name).toEqual('Domain')
expect(api.getEntity('https://baz.bar.example.co.uk/path').name).toEqual('Domain')
})
it.skip('stress test', () => {
const urls = fs
.readFileSync(path.join(__dirname, '../data/random-urls.txt'), 'utf8')
.split('\n')
.filter(Boolean)
console.time('getEntity')
for (let i = 0; i < 1_000_000; i++) {
api.getEntity(urls[i % urls.length])
}
console.timeEnd('getEntity')
})
})