@@ -669,6 +669,63 @@ describe('Repos router', () => {
669669 } )
670670 } )
671671
672+ describe ( 'listMirror' , ( ) => {
673+ const fakeMirrorList = [ { name : 'mirror-1' } , { name : 'mirror-2' } ]
674+
675+ const setupListMirrorsMocks = ( ) => {
676+ vi . spyOn ( config , 'getConfig' ) . mockResolvedValue ( {
677+ publicOrg : 'github' ,
678+ privateOrg : 'github-test' ,
679+ } )
680+
681+ om . mockFunctions . rest . apps . getOrgInstallation . mockResolvedValue (
682+ fakeOrgInstallation ,
683+ )
684+ om . mockFunctions . rest . orgs . get . mockResolvedValue ( fakeOrg )
685+ om . mockFunctions . paginate . mockResolvedValue ( fakeMirrorList )
686+ }
687+
688+ it ( 'returns mirrorDeletionEnabled: true when DISABLE_MIRROR_DELETION is unset' , async ( ) => {
689+ const caller = t . createCallerFactory ( reposRouter ) ( createTestContext ( ) )
690+ setupListMirrorsMocks ( )
691+
692+ const res = await caller . listMirrors ( {
693+ orgId : 'test' ,
694+ forkName : 'fork-test' ,
695+ } )
696+
697+ expect ( res . mirrors ) . toEqual ( fakeMirrorList )
698+ expect ( res . mirrorDeletionEnabled ) . toBe ( true )
699+ } )
700+
701+ it ( 'returns mirrorDeletionEnabled: false when DISABLE_MIRROR_DELETION is "true"' , async ( ) => {
702+ const caller = t . createCallerFactory ( reposRouter ) ( createTestContext ( ) )
703+ setupListMirrorsMocks ( )
704+ vi . stubEnv ( 'DISABLE_MIRROR_DELETION' , 'true' )
705+
706+ const res = await caller . listMirrors ( {
707+ orgId : 'test' ,
708+ forkName : 'fork-test' ,
709+ } )
710+
711+ expect ( res . mirrors ) . toEqual ( fakeMirrorList )
712+ expect ( res . mirrorDeletionEnabled ) . toBe ( false )
713+ } )
714+
715+ it ( 'returns mirrorDeletionEnabled: true when DISABLE_MIRROR_DELETION is "false"' , async ( ) => {
716+ const caller = t . createCallerFactory ( reposRouter ) ( createTestContext ( ) )
717+ setupListMirrorsMocks ( )
718+ vi . stubEnv ( 'DISABLE_MIRROR_DELETION' , 'false' )
719+
720+ const res = await caller . listMirrors ( {
721+ orgId : 'test' ,
722+ forkName : 'fork-test' ,
723+ } )
724+
725+ expect ( res . mirrorDeletionEnabled ) . toBe ( true )
726+ } )
727+ } )
728+
672729 describe ( 'deleteMirror' , ( ) => {
673730 it ( 'deletes the mirror and the sync branch ref on the public fork' , async ( ) => {
674731 const caller = t . createCallerFactory ( reposRouter ) ( createTestContext ( ) )
@@ -704,6 +761,24 @@ describe('Repos router', () => {
704761 } )
705762 expect ( res . success ) . toBe ( true )
706763 } )
764+
765+ it ( 'throws FORBIDDEN when DISABLE_MIRROR_DELETION is "true"' , async ( ) => {
766+ const caller = t . createCallerFactory ( reposRouter ) ( createTestContext ( ) )
767+ vi . stubEnv ( 'DISABLE_MIRROR_DELETION' , 'true' )
768+
769+ await expect (
770+ caller . deleteMirror ( {
771+ orgId : 'test' ,
772+ mirrorName : 'to-delete' ,
773+ } ) ,
774+ ) . rejects . toMatchObject ( {
775+ code : 'FORBIDDEN' ,
776+ message : 'Mirror deletion is disabled' ,
777+ } )
778+
779+ expect ( om . mockFunctions . rest . repos . delete ) . not . toHaveBeenCalled ( )
780+ expect ( om . mockFunctions . rest . git . deleteRef ) . not . toHaveBeenCalled ( )
781+ } )
707782 } )
708783
709784 describe ( 'temp directory cleanup' , ( ) => {
0 commit comments