Files
gridpilot.gg/core/identity/EmailValidation.test.ts
2025-12-16 12:14:06 +01:00

34 lines
1.1 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { validateEmail, isDisposableEmail } from '@core/identity/domain/value-objects/EmailAddress';
describe('identity-domain email validation', () => {
it('accepts a valid email and normalizes it', () => {
const result = validateEmail(' USER@example.com ');
expect(result.success).toBe(true);
expect(result.email).toBe('user@example.com');
expect(result.error).toBeUndefined();
});
it('rejects an invalid email format', () => {
const result = validateEmail('not-an-email');
expect(result.success).toBe(false);
expect(result.email).toBeUndefined();
expect(result.error).toBeTypeOf('string');
});
it('rejects an email that is too short', () => {
const result = validateEmail('a@b');
expect(result.success).toBe(false);
expect(result.error).toContain('too short');
});
it('detects disposable email domains', () => {
expect(isDisposableEmail('foo@tempmail.com')).toBe(true);
expect(isDisposableEmail('bar@mailinator.com')).toBe(true);
expect(isDisposableEmail('user@example.com')).toBe(false);
});
});