@livekit/components-core
Version:
66 lines (59 loc) • 2.14 kB
text/typescript
import { describe, test } from 'vitest';
import { createEmailRegExp } from './emailRegex';
const fixtures = [
'livekit@gmail.com',
'foo@bar',
'test@about.museum',
'test@nominet.org.uk',
'test.test@livekit.io',
'test@255.255.255.255',
'a@livekit.io',
'test@e.com',
'test@xn--hxajbheg2az3al.xn--jxalpdlp',
'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghiklm@livekit.io',
'!#$%&`*+/=?^`{|}~@livekit.io',
'test@g--a.com',
'a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hij',
'123@livekit.io',
'"\\a"@livekit.io',
'""@livekit.io',
'"test"@livekit.io',
'"\\""@livekit.io',
'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghiklmn@livekit.io',
'test@iana.co-uk',
'a@a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v',
'test@foo-bar.com',
'foo@x.solutions',
'foo@[IPv6:2001:db8::2]',
];
const fixturesNot = [
'@',
'@io',
'@livekit.io',
'test..livekit.io',
'test@iana..com',
'test@livekit.io.',
'.test@livekit.io',
'livekit@livekit@livekit.com',
'mailto:livekit@gmail.com',
'foo.example.com',
'test.@example.com',
];
describe('Email regex tests', () => {
test('extract', (t) => {
for (const fixture of fixtures) {
t.expect((createEmailRegExp().exec(`foo ${fixture} bar`) || [])[0]).toBe(fixture);
}
t.expect(createEmailRegExp().exec('mailto:livekit@gmail.com')?.[0]).toBe('livekit@gmail.com');
});
test('exact', (t) => {
for (const fixture of fixtures) {
t.expect(createEmailRegExp({ exact: true }).test(fixture)).toBeTruthy();
}
});
test('failures', (t) => {
for (const fixture of fixturesNot) {
t.expect(createEmailRegExp({ exact: true }).test(fixture)).toBeFalsy();
}
});
});