@@ -4,6 +4,7 @@ import { PaymentsController } from './payments.controller';
44import { PaymentsService } from './payments.service' ;
55import { ApiKeyGuard } from '../api-keys/api-key.guard' ;
66import { RateLimitGuard } from '../rate-limit/rate-limit.guard' ;
7+ import { FeatureFlagGuard } from '../common/feature-flags/feature-flag.guard' ;
78import { PaymentStatus } from './entities/payment.entity' ;
89
910describe ( 'PaymentsController' , ( ) => {
@@ -27,6 +28,8 @@ describe('PaymentsController', () => {
2728 . useValue ( { canActivate : ( ) => true } )
2829 . overrideGuard ( RateLimitGuard )
2930 . useValue ( { canActivate : ( ) => true } )
31+ . overrideGuard ( FeatureFlagGuard )
32+ . useValue ( { canActivate : ( ) => true } )
3033 . compile ( ) ;
3134
3235 controller = module . get < PaymentsController > ( PaymentsController ) ;
@@ -77,6 +80,30 @@ describe('PaymentsController', () => {
7780 } ) ;
7881 } ) ;
7982
83+ describe ( 'feature flag guard' , ( ) => {
84+ it ( 'should deny access when feature flag is disabled' , async ( ) => {
85+ const restrictedModule = await Test . createTestingModule ( {
86+ controllers : [ PaymentsController ] ,
87+ providers : [ { provide : PaymentsService , useValue : paymentsService } ] ,
88+ } )
89+ . overrideGuard ( ApiKeyGuard )
90+ . useValue ( { canActivate : ( ) => true } )
91+ . overrideGuard ( RateLimitGuard )
92+ . useValue ( { canActivate : ( ) => true } )
93+ . overrideGuard ( FeatureFlagGuard )
94+ . useValue ( {
95+ canActivate : ( ) => {
96+ throw new Error ( 'Feature not available' ) ;
97+ } ,
98+ } )
99+ . compile ( ) ;
100+
101+ const restrictedController =
102+ restrictedModule . get < PaymentsController > ( PaymentsController ) ;
103+ expect ( restrictedController ) . toBeDefined ( ) ;
104+ } ) ;
105+ } ) ;
106+
80107 describe ( 'swagger decorators' , ( ) => {
81108 it ( 'should have @ApiResponse decorators on all routes' , ( ) => {
82109 const routes = [ 'create' , 'findAll' , 'findOne' , 'update' , 'remove' ] ;
0 commit comments