@@ -6,6 +6,9 @@ import { ConnectionRepository } from '../repositories/connection.repository';
66import { CredentialVaultService } from '../services/credential-vault.service' ;
77import { OAuthCredentialsService } from '../services/oauth-credentials.service' ;
88import { IntegrationSyncLoggerService } from '../services/integration-sync-logger.service' ;
9+ import { GenericEmployeeSyncService } from '../services/generic-employee-sync.service' ;
10+ import { DynamicIntegrationRepository } from '../repositories/dynamic-integration.repository' ;
11+ import { CheckRunRepository } from '../repositories/check-run.repository' ;
912import { db } from '@db' ;
1013
1114jest . mock ( '@db' , ( ) => ( {
@@ -99,6 +102,9 @@ describe('SyncController - Google Workspace employees', () => {
99102 provide : IntegrationSyncLoggerService ,
100103 useValue : { logSync : jest . fn ( ) } ,
101104 } ,
105+ { provide : GenericEmployeeSyncService , useValue : { } } ,
106+ { provide : DynamicIntegrationRepository , useValue : { } } ,
107+ { provide : CheckRunRepository , useValue : { } } ,
102108 ] ,
103109 } )
104110 . overrideGuard ( HybridAuthGuard )
@@ -596,9 +602,12 @@ describe('SyncController - Google Workspace employees', () => {
596602 // ── Exclude filter mode ────────────────────────────────────────
597603
598604 describe ( 'exclude filter mode' , ( ) => {
599- it ( 'should NOT deactivate excluded members in exclude mode ' , async ( ) => {
605+ it ( 'should deactivate existing non-privileged members excluded from sync ' , async ( ) => {
600606 setupSync ( {
601- gwUsers : [ makeGwUser ( 'kept@example.com' ) ] ,
607+ gwUsers : [
608+ makeGwUser ( 'kept@example.com' ) ,
609+ makeGwUser ( 'excluded@example.com' ) ,
610+ ] ,
602611 variables : {
603612 sync_user_filter_mode : 'exclude' ,
604613 sync_excluded_emails : 'excluded@example.com' ,
@@ -613,7 +622,6 @@ describe('SyncController - Google Workspace employees', () => {
613622 makeMember ( 'kept@example.com' , { userId : 'user_kept' } ) ,
614623 ) ;
615624
616- // Excluded member is in the org but not in the GWS active list
617625 ( mockedDb . member . findMany as jest . Mock ) . mockResolvedValue ( [
618626 makeMember ( 'kept@example.com' ) ,
619627 makeMember ( 'excluded@example.com' ) ,
@@ -629,7 +637,14 @@ describe('SyncController - Google Workspace employees', () => {
629637 const deactivatedEmails = result . details
630638 . filter ( ( d ) => d . status === 'deactivated' )
631639 . map ( ( d ) => d . email ) ;
632- expect ( deactivatedEmails ) . not . toContain ( 'excluded@example.com' ) ;
640+ expect ( deactivatedEmails ) . toContain ( 'excluded@example.com' ) ;
641+ expect ( result . details ) . toContainEqual (
642+ expect . objectContaining ( {
643+ email : 'excluded@example.com' ,
644+ status : 'deactivated' ,
645+ reason : 'User is excluded from Google Workspace sync' ,
646+ } ) ,
647+ ) ;
633648 } ) ;
634649
635650 it ( 'should exclude users from import by email match' , async ( ) => {
0 commit comments