11import { Test , TestingModule } from '@nestjs/testing' ;
22import { ExecutionContext , ForbiddenException } from '@nestjs/common' ;
3+ import { ConfigService } from '@nestjs/config' ;
34import { Request } from 'express' ;
45import { AdminController } from './admin.controller' ;
56import { AdminService } from './admin.service' ;
67import { AuditService } from './audit.service' ;
78import { AdminRoleGuard } from './guards/admin-role.guard' ;
89import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard' ;
10+ import { PrivacyService } from '../maintenance/privacy.service' ;
11+ import { RateLimitService } from '../rate-limit/rate-limit.service' ;
912
1013const mockAdminService = { enqueueReindex : jest . fn ( ) , setFeatureFlag : jest . fn ( ) , getFeatureFlags : jest . fn ( ) } ;
1114const mockAuditService = { write : jest . fn ( ) , findAll : jest . fn ( ) } ;
15+ const mockConfigService = {
16+ get : jest . fn ( ( key : string , def ?: string ) => ( key === 'STELLAR_NETWORK' ? 'testnet' : def ) ) ,
17+ } ;
1218
1319const adminReq = ( role = 'admin' ) => ( { user : { walletAddress : 'GADMIN' , role } , ip : '127.0.0.1' } ) ;
1420const toExecutionContext = ( role ?: string ) : ExecutionContext =>
@@ -26,6 +32,9 @@ describe('AdminController', () => {
2632 providers : [
2733 { provide : AdminService , useValue : mockAdminService } ,
2834 { provide : AuditService , useValue : mockAuditService } ,
35+ { provide : ConfigService , useValue : mockConfigService } ,
36+ { provide : PrivacyService , useValue : { } } ,
37+ { provide : RateLimitService , useValue : { } } ,
2938 ] ,
3039 } )
3140 . overrideGuard ( JwtAuthGuard ) . useValue ( { canActivate : ( ) => true } )
@@ -43,12 +52,30 @@ describe('AdminController', () => {
4352 it ( 'enqueues job and writes audit row' , async ( ) => {
4453 mockAdminService . enqueueReindex . mockResolvedValue ( 'job-123' ) ;
4554 const result = await controller . reindex ( { fromLedger : 500 } , adminReq ( ) as unknown as Request ) ;
46- expect ( result ) . toEqual ( { jobId : 'job-123' , fromLedger : 500 , status : 'queued' } ) ;
47- expect ( mockAdminService . enqueueReindex ) . toHaveBeenCalledWith ( 500 ) ;
55+ expect ( result ) . toEqual ( {
56+ jobId : 'job-123' ,
57+ fromLedger : 500 ,
58+ network : 'testnet' ,
59+ status : 'queued' ,
60+ } ) ;
61+ expect ( mockAdminService . enqueueReindex ) . toHaveBeenCalledWith ( 500 , 'testnet' ) ;
4862 expect ( mockAuditService . write ) . toHaveBeenCalledWith (
49- expect . objectContaining ( { actor : 'GADMIN' , action : 'reindex' , payload : expect . objectContaining ( { fromLedger : 500 } ) } ) ,
63+ expect . objectContaining ( {
64+ actor : 'GADMIN' ,
65+ action : 'reindex' ,
66+ payload : expect . objectContaining ( { fromLedger : 500 , network : 'testnet' } ) ,
67+ } ) ,
5068 ) ;
5169 } ) ;
70+
71+ it ( 'passes explicit network to enqueue' , async ( ) => {
72+ mockAdminService . enqueueReindex . mockResolvedValue ( 'job-456' ) ;
73+ await controller . reindex (
74+ { fromLedger : 100 , network : 'public' } ,
75+ adminReq ( ) as unknown as Request ,
76+ ) ;
77+ expect ( mockAdminService . enqueueReindex ) . toHaveBeenCalledWith ( 100 , 'public' ) ;
78+ } ) ;
5279 } ) ;
5380
5481 describe ( 'GET /admin/audits' , ( ) => {
0 commit comments