1
1
import { BaseProvider } from '../../src/BaseProvider' ;
2
2
import { DEFAULT_PROVIDERS } from '../../src/BaseProvider' ;
3
+ import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager' ;
3
4
import { get_secret , SecretsProvider } from '../../src/SecretsProvider' ;
4
- import { GetSecretValueCommand , SecretsManagerClient } from '@aws-sdk/client-secrets-manager' ;
5
5
6
6
const defaultProviderGetSpy = jest . spyOn ( DEFAULT_PROVIDERS , 'get' ) ;
7
7
const defaultProviderHasSpy = jest . spyOn ( DEFAULT_PROVIDERS , 'has' ) ;
8
- jest . spyOn ( SecretsManagerClient . prototype , 'send' ) . mockImplementation ( ( ) => ( { SecretString : 'foo' , } ) ) ;
8
+ const clientSpy = jest . spyOn ( SecretsManagerClient . prototype , 'send' ) . mockImplementation ( ( ) => ( { SecretString : 'foo' , } ) ) ;
9
9
10
10
describe ( 'Class: SecretsProvider' , ( ) => {
11
11
@@ -24,6 +24,11 @@ describe('Class: SecretsProvider', () => {
24
24
25
25
// Assess
26
26
expect ( value ) . toEqual ( 'foo' ) ;
27
+ expect ( clientSpy ) . toBeCalledWith ( expect . objectContaining ( {
28
+ input : expect . objectContaining ( {
29
+ SecretId : 'my-parameter'
30
+ } )
31
+ } ) ) ;
27
32
28
33
} ) ;
29
34
@@ -39,6 +44,7 @@ describe('Class: SecretsProvider', () => {
39
44
40
45
// Assess
41
46
expect ( value ) . toEqual ( 'bar' ) ;
47
+ expect ( clientSpy ) . toBeCalledTimes ( 0 ) ;
42
48
43
49
} ) ;
44
50
@@ -54,24 +60,48 @@ describe('Class: SecretsProvider', () => {
54
60
55
61
// Assess
56
62
expect ( value ) . toEqual ( 'foo' ) ;
63
+ expect ( clientSpy ) . toBeCalledTimes ( 1 ) ;
57
64
58
65
} ) ;
59
66
60
67
test ( 'when called with custom sdkOptions, it uses them, and it returns a value from remote' , async ( ) => {
61
-
62
68
// Prepare
63
69
const provider = new SecretsProvider ( ) ;
64
- const customCommand = new GetSecretValueCommand ( {
65
- SecretId : 'A' ,
70
+
71
+ // Act
72
+ const value = await provider . get ( 'my-parameter' , { sdkOptions : {
66
73
VersionId : '7a9155b8-2dc9-466e-b4f6-5bc46516c84d'
67
- } ) ;
74
+ } } ) ;
75
+
76
+ // Assess
77
+ expect ( value ) . toEqual ( 'foo' ) ;
78
+ expect ( clientSpy ) . toBeCalledWith ( expect . objectContaining ( {
79
+ input : expect . objectContaining ( {
80
+ SecretId : 'my-parameter' ,
81
+ VersionId : '7a9155b8-2dc9-466e-b4f6-5bc46516c84d'
82
+ } )
83
+ } ) ) ;
84
+
85
+ } ) ;
86
+
87
+ test ( 'when called with custom sdkOptions that should be overwritten, it use the correct ones, and it returns a value from remote' , async ( ) => {
88
+ // Prepare
89
+ const provider = new SecretsProvider ( ) ;
68
90
69
91
// Act
70
- const value = await provider . get ( 'my-parameter' , { sdkOptions : customCommand } ) ;
92
+ const value = await provider . get ( 'my-parameter' , { sdkOptions : {
93
+ SecretId : 'THIS_SHOULD_BE_OVERWRITTEN' ,
94
+ VersionId : '7a9155b8-2dc9-466e-b4f6-5bc46516c84d'
95
+ } } ) ;
71
96
72
97
// Assess
73
98
expect ( value ) . toEqual ( 'foo' ) ;
74
- expect ( provider . store . has ( [ 'my-parameter' , undefined ] . toString ( ) ) ) . toBe ( true ) ;
99
+ expect ( clientSpy ) . toBeCalledWith ( expect . objectContaining ( {
100
+ input : expect . objectContaining ( {
101
+ SecretId : 'my-parameter' ,
102
+ VersionId : '7a9155b8-2dc9-466e-b4f6-5bc46516c84d'
103
+ } )
104
+ } ) ) ;
75
105
76
106
} ) ;
77
107
0 commit comments