no-disposable-email
Version:
A fast, reliable tool to check if an email address uses a disposable domain. Includes an Express API, CLI, and utility function. Perfect for validation in web apps, and scripts.
48 lines (40 loc) • 1.44 kB
JavaScript
const request = require('supertest');
const express = require('express');
jest.mock('./utility');
const { isDisposable } = require('./utility');
let app, server;
beforeAll(() => {
const index = require('./index');
app = index.app;
server = index.server;
});
afterAll((done) => {
server.close(done);
});
describe('GET /check', () => {
beforeEach(() => {
isDisposable.mockReset();
});
it('returns 400 if email is missing', async () => {
const res = await request(app).get('/check');
expect(res.status).toBe(400);
expect(res.body.error).toMatch(/Missing email/);
});
it('returns 400 for invalid email format', async () => {
const res = await request(app).get('/check?email=notanemail');
expect(res.status).toBe(400);
expect(res.body.error).toMatch(/Invalid email format/);
});
it('returns disposable true for disposable email', async () => {
isDisposable.mockReturnValue(true);
const res = await request(app).get('/check?email=test@mailinator.com');
expect(res.status).toBe(200);
expect(res.body).toEqual({ email: 'test@mailinator.com', disposable: true });
});
it('returns disposable false for non-disposable email', async () => {
isDisposable.mockReturnValue(false);
const res = await request(app).get('/check?email=test@gmail.com');
expect(res.status).toBe(200);
expect(res.body).toEqual({ email: 'test@gmail.com', disposable: false });
});
});