UNPKG

@petition-blitz/email-verifiers

Version:

Unified interface for checking email address deliverability

51 lines (42 loc) 1.58 kB
const assert = require('assert'); const fetchMock = require('fetch-mock'); const createVerifier = require('../../src/verifiers/mailgun'); function mockResponse (address, risk) { const url = 'https://api.mailgun.net/v4/address/validate?address=' + encodeURIComponent(address); const res = { status: 200, body: { address, is_disposable_address: false, is_role_address: false, reason: [], result: 'deliverable', risk } }; fetchMock.mock(url, res); } describe('mailgun', function () { describe('verify()', function () { const verify = createVerifier({ apiKey: 'MOCK_API_KEY', accept: ['low', 'medium', 'unknown'] }); afterEach(() => fetchMock.restore()); it('returns a Promise', function () { mockResponse('test1@example.com', 'low'); assert(verify({ email: 'test1@example.com' }) instanceof Promise); }); it('resolves to true for acceptable risks', async function () { mockResponse('test1@example.com', 'low'); mockResponse('test2@example.com', 'medium'); mockResponse('test3@example.com', 'unknown'); assert.strictEqual(true, await verify({ email: 'test1@example.com' })); assert.strictEqual(true, await verify({ email: 'test2@example.com' })); assert.strictEqual(true, await verify({ email: 'test3@example.com' })); }); it('resolves to false for unacceptable risks', async function () { mockResponse('test4@example.com', 'high'); assert.strictEqual(false, await verify({ email: 'test4@example.com' })); }); }); });