Bluesky app fork with some witchin' additions 💫
at cb54cd87bb36c92ebcd59cd0b2edb77245b1b999 82 lines 1.8 kB view raw
1import {describe, expect, it} from '@jest/globals' 2import tldts from 'tldts' 3 4import {isEmailMaybeInvalid} from '#/lib/strings/email' 5 6describe('emailTypoChecker', () => { 7 const invalidCases = [ 8 'gnail.com', 9 'gnail.co', 10 'gmaill.com', 11 'gmaill.co', 12 'gmai.com', 13 'gmai.co', 14 'gmal.com', 15 'gmal.co', 16 'gmail.co', 17 'iclod.com', 18 'iclod.co', 19 'outllok.com', 20 'outllok.co', 21 'outlook.co', 22 'yaoo.com', 23 'yaoo.co', 24 'yaho.com', 25 'yaho.co', 26 'yahooo.com', 27 'yahooo.co', 28 'yahoo.co', 29 'hithere.jul', 30 'agpowj.notshop', 31 'thisisnot.avalid.tld.nope', 32 // old tld for czechoslovakia 33 'czechoslovakia.cs', 34 // tlds that cbs was registering in 2024 but cancelled 35 'liveon.cbs', 36 'its.showtime', 37 ] 38 const validCases = [ 39 'gmail.com', 40 // subdomains (tests end of string) 41 'gnail.com.test.com', 42 'outlook.com', 43 'yahoo.com', 44 'icloud.com', 45 'firefox.com', 46 'firefox.co', 47 'hello.world.com', 48 'buy.me.a.coffee.shop', 49 'mayotte.yt', 50 'aland.ax', 51 'bouvet.bv', 52 'uk.gb', 53 'chad.td', 54 'somalia.so', 55 'plane.aero', 56 'cute.cat', 57 'together.coop', 58 'findme.jobs', 59 'nightatthe.museum', 60 'industrial.mil', 61 'czechrepublic.cz', 62 'lovakia.sk', 63 // new gtlds in 2024 64 'whatsinyour.locker', 65 'letsmakea.deal', 66 'skeet.now', 67 'everyone.みんな', 68 'bourgeois.lifestyle', 69 'california.living', 70 'skeet.ing', 71 'listeningto.music', 72 'createa.meme', 73 ] 74 75 it.each(invalidCases)(`should be invalid: abcde@%s`, domain => { 76 expect(isEmailMaybeInvalid(`abcde@${domain}`, tldts)).toEqual(true) 77 }) 78 79 it.each(validCases)(`should be valid: abcde@%s`, domain => { 80 expect(isEmailMaybeInvalid(`abcde@${domain}`, tldts)).toEqual(false) 81 }) 82})