@@ -2,54 +2,37 @@ const aws = require('aws-sdk')
22const index = require ( './index.js' )
33
44describe ( 'get SecretString from AWS SecretsManager' , ( ) => {
5- let data = { }
6- describe ( 'get parsable data' , ( ) => {
7- beforeAll ( async ( ) => {
8- const INPUT_SECRET_NAME = process . env . SECRET_NAME
9-
10- const AWSConfig = {
11- accessKeyId : process . env . AWS_ACCESS_KEY_ID ,
12- secretAccessKey : process . env . AWS_SECRET_ACCESS_KEY ,
13- region : process . env . AWS_DEFAULT_REGION
14- }
5+ const secretsManager = new aws . SecretsManager ( {
6+ accessKeyId : 'fake-access-key-id' ,
7+ secretAccessKey : 'fake-secret' ,
8+ region : 'us-east-1'
9+ } )
1510
16- if ( process . env . AWS_SESSION_TOKEN ) {
17- AWSConfig . sessionToken = process . env . AWS_SESSION_TOKEN
18- }
11+ const secretName = 'secretName'
1912
20- const secretsManager = new aws . SecretsManager ( AWSConfig )
21- data = await index . getSecretValue ( secretsManager , INPUT_SECRET_NAME )
22- } )
13+ const secretString = JSON . stringify ( {
14+ key1 : 'value1' ,
15+ key2 : 'value2'
16+ } )
2317
24- test ( 'should have SecretString' , ( ) => {
25- expect ( data ) . toHaveProperty ( ' SecretString' )
26- } )
18+ const resp = {
19+ SecretString : secretString
20+ }
2721
28- test ( 'should have parsed values' , ( ) => {
29- const parsedData = JSON . parse ( data . SecretString )
30- expect ( parsedData . SCIENTIFIC_NAME ) . toEqual ( 'Pygoscelis adeliae' )
31- expect ( parsedData . MIN_HEIGHT ) . toEqual ( 46 )
32- expect ( parsedData . MAX_HEIGHT ) . toEqual ( 71 )
33- expect ( parsedData . MIN_WEIGHT ) . toEqual ( 3.6 )
34- expect ( parsedData . MAX_WEIGHT ) . toEqual ( 6 )
35- expect ( parsedData . SWIMMING_SPEED ) . toEqual ( 8 )
36- expect ( parsedData . LEAPING_METERS ) . toEqual ( 3 )
37- } )
22+ secretsManager . getSecretValue = jest . fn ( ) . mockReturnValue ( {
23+ promise : jest . fn ( ) . mockResolvedValue ( resp )
3824 } )
3925
40- describe ( 'get unparsable data' , ( ) => {
41- beforeAll ( async ( ) => {
42- const INPUT_SECRET_NAME = `${ process . env . SECRET_NAME } -unvalid`
43- const secretsManager = new aws . SecretsManager ( {
44- accessKeyId : process . env . AWS_ACCESS_KEY_ID ,
45- secretAccessKey : process . env . AWS_SECRET_ACCESS_KEY ,
46- region : process . env . AWS_DEFAULT_REGION
47- } )
48- data = await index . getSecretValue ( secretsManager , INPUT_SECRET_NAME )
49- } )
26+ it ( 'should have parsed values' , async ( ) => {
27+ await index . getSecretValue ( secretsManager , secretName )
28+ expect ( process . env . key1 ) . toEqual ( 'value1' )
29+ expect ( process . env . key2 ) . toEqual ( 'value2' )
30+ } )
5031
51- test ( 'should have SecretString' , ( ) => {
52- expect ( data ) . toHaveProperty ( 'SecretString' )
53- } )
32+ it ( 'should have written to file' , async ( ) => {
33+ const fs = require ( 'fs' )
34+ const outputPath = '.env'
35+ await index . getSecretValue ( secretsManager , secretName )
36+ expect ( fs . readFileSync ( outputPath , 'utf8' ) ) . toEqual ( 'key1=value1\nkey2=value2' )
5437 } )
5538} )
0 commit comments