@@ -7,13 +7,14 @@ import { SecretManagerService } from './secretmanager.service'
77jest . mock ( './secretloader.service' )
88describe ( 'SecretManagerService' , ( ) => {
99 let secretManagerService : SecretManagerService
10+ let secretLoaderService : SecretLoaderService
1011 const preloadedSecrets = {
1112 'project/test-project/secrets/some-secret/versions/latest' : 'some-secret' ,
1213 }
1314 beforeEach ( async ( ) => {
1415 jest . resetAllMocks ( )
1516 // eslint-disable-next-line @typescript-eslint/no-explicit-any
16- const secretLoaderService = new SecretLoaderService ( null as any )
17+ secretLoaderService = new SecretLoaderService ( null as any )
1718 ; ( secretLoaderService . loadSecret as jest . Mock ) . mockImplementationOnce ( ( ) => 'some-secret' )
1819
1920 const moduleRef = await Test . createTestingModule ( {
@@ -60,4 +61,16 @@ describe('SecretManagerService', () => {
6061 await secretManagerService . loadSecretDynamic ( secret )
6162 expect ( secretManagerService . getSecret ( secret ) ) . toEqual ( 'some-secret' )
6263 } )
64+
65+ it ( 'does not do external lookups for cached secrets' , async ( ) => {
66+ const secret = 'project/test-project/secrets/no-secret/versions/latest'
67+ expect ( ( ) => {
68+ secretManagerService . getSecret ( secret )
69+ } ) . toThrow ( SecretNotLoadedException )
70+
71+ await secretManagerService . loadSecretDynamic ( secret )
72+ await secretManagerService . loadSecretDynamic ( secret )
73+ expect ( secretLoaderService . loadSecret ) . toHaveBeenCalledTimes ( 1 )
74+ expect ( secretManagerService . getSecret ( secret ) ) . toEqual ( 'some-secret' )
75+ } )
6376} )
0 commit comments