@@ -12,7 +12,7 @@ vi.mock('@sim/db', () => ({
1212 db : { select : vi . fn ( ( ) => ( { from : vi . fn ( ( ) => ( { where : mockWhere } ) ) } ) ) } ,
1313 user : { id : 'id' , email : 'email' , banned : 'banned' , banExpires : 'banExpires' } ,
1414} ) )
15- vi . mock ( 'drizzle-orm' , ( ) => ( { inArray : vi . fn ( ) } ) )
15+ vi . mock ( 'drizzle-orm' , ( ) => ( { inArray : vi . fn ( ) , sql : vi . fn ( ) } ) )
1616vi . mock ( '@/lib/core/config/appconfig' , ( ) => ( { fetchAppConfigProfile : vi . fn ( ) } ) )
1717vi . mock ( '@/lib/core/config/env' , ( ) => ( {
1818 get env ( ) {
@@ -21,7 +21,7 @@ vi.mock('@/lib/core/config/env', () => ({
2121} ) )
2222vi . mock ( '@/lib/core/config/feature-flags' , ( ) => ( { isAppConfigEnabled : false } ) )
2323
24- import { getActivelyBannedUserIds , isBanActive , isEmailDomainBlocked } from '@/lib/auth/ban'
24+ import { getActivelyBannedUserIds , isBanActive , isEmailBlocked } from '@/lib/auth/ban'
2525
2626describe ( 'isBanActive' , ( ) => {
2727 it ( 'returns true for a permanent ban' , ( ) => {
@@ -42,20 +42,28 @@ describe('isBanActive', () => {
4242 } )
4343} )
4444
45- describe ( 'isEmailDomainBlocked ' , ( ) => {
45+ describe ( 'isEmailBlocked ' , ( ) => {
4646 beforeEach ( ( ) => {
47+ vi . clearAllMocks ( )
4748 envRef . BLOCKED_SIGNUP_DOMAINS = 'bad.com'
49+ mockWhere . mockResolvedValue ( [ ] )
50+ } )
51+
52+ it ( 'returns true for blocked domains and subdomains without querying users' , async ( ) => {
53+ expect ( await isEmailBlocked ( 'a@bad.com' ) ) . toBe ( true )
54+ expect ( await isEmailBlocked ( 'a@mail.bad.com' ) ) . toBe ( true )
55+ expect ( mockWhere ) . not . toHaveBeenCalled ( )
4856 } )
4957
50- it ( 'returns true for blocked domains and subdomains ' , async ( ) => {
51- expect ( await isEmailDomainBlocked ( 'a@bad.com' ) ) . toBe ( true )
52- expect ( await isEmailDomainBlocked ( 'a@mail.bad .com' ) ) . toBe ( true )
58+ it ( 'returns true when the email belongs to an actively banned account ' , async ( ) => {
59+ mockWhere . mockResolvedValue ( [ { banned : true , banExpires : null } ] )
60+ expect ( await isEmailBlocked ( 'a@good .com' ) ) . toBe ( true )
5361 } )
5462
55- it ( 'returns false for clean domains and missing emails' , async ( ) => {
56- expect ( await isEmailDomainBlocked ( 'a@good.com' ) ) . toBe ( false )
57- expect ( await isEmailDomainBlocked ( null ) ) . toBe ( false )
58- expect ( await isEmailDomainBlocked ( undefined ) ) . toBe ( false )
63+ it ( 'returns false for clean accounts and missing emails' , async ( ) => {
64+ expect ( await isEmailBlocked ( 'a@good.com' ) ) . toBe ( false )
65+ expect ( await isEmailBlocked ( null ) ) . toBe ( false )
66+ expect ( await isEmailBlocked ( undefined ) ) . toBe ( false )
5967 } )
6068} )
6169
0 commit comments