Skip to content

Commit 79ebbd0

Browse files
committed
Spy on STS constructor to ensure proper source profile is used
1 parent fc4d210 commit 79ebbd0

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

lib/credentials/shared_ini_file_credentials.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var AWS = require('../core');
22
var path = require('path');
33
var SharedIniFile = require('../shared_ini');
4-
var STS = require('../../clients/sts');
4+
require('../../clients/sts');
55

66
/**
77
* Represents credentials loaded from shared credentials file
@@ -176,7 +176,7 @@ AWS.SharedIniFileCredentials = AWS.util.inherit(AWS.Credentials, {
176176
);
177177
}
178178

179-
var sts = new STS({
179+
var sts = new AWS.STS({
180180
credentials: new AWS.Credentials(sourceCredentials)
181181
});
182182

test/credentials.spec.coffee

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
helpers = require('./helpers')
22
AWS = helpers.AWS
3+
STS = require('../clients/sts')
34

45
validateCredentials = (creds, key, secret, session) ->
56
expect(creds.accessKeyId).to.equal(key || 'akid')
@@ -272,12 +273,6 @@ if AWS.util.isNode()
272273

273274
it 'prefers credentials from ~/.aws/credentials if AWS_SDK_LOAD_CONFIG is set', ->
274275
process.env.AWS_SDK_LOAD_CONFIG = '1'
275-
mock = '''
276-
[default]
277-
aws_access_key_id = akid
278-
aws_secret_access_key = secret
279-
aws_session_token = session
280-
'''
281276
helpers.spyOn(AWS.util, 'readFileSync').andCallFake (path) ->
282277
if path.match(/[\/\\]home[\/\\]user[\/\\].aws[\/\\]credentials/)
283278
'''
@@ -497,16 +492,14 @@ if AWS.util.isNode()
497492
if (path.match(/[\/\\]home[\/\\]user[\/\\].aws[\/\\]credentials/))
498493
'''
499494
[default]
500-
aws_access_key_id = akid
501-
aws_secret_access_key = secret
502495
role_arn = arn
503496
source_profile = foo
504497
'''
505498
else
506499
'''
507500
[profile foo]
508-
aws_access_key_id = akid2
509-
aws_secret_access_key = secret2
501+
aws_access_key_id = akid
502+
aws_secret_access_key = secret
510503
'''
511504
helpers.mockHttpResponse 200, {}, '''
512505
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
@@ -520,10 +513,15 @@ if AWS.util.isNode()
520513
</AssumeRoleResult>
521514
</AssumeRoleResponse>
522515
'''
523-
debugger;
524516
creds = new AWS.SharedIniFileCredentials()
517+
stsCtorSpy = helpers.spyOn(AWS, 'STS').andCallThrough()
525518
expect(creds.roleArn).to.equal('arn')
526519
creds.refresh (err) ->
520+
expect(stsCtorSpy.calls.length).to.equal(1)
521+
sourceCreds = stsCtorSpy.calls[0].arguments[0].credentials
522+
expect(sourceCreds.accessKeyId).to.equal('akid')
523+
expect(sourceCreds.secretAccessKey).to.equal('secret')
524+
527525
expect(creds.accessKeyId).to.equal('KEY')
528526
expect(creds.secretAccessKey).to.equal('SECRET')
529527
expect(creds.sessionToken).to.equal('TOKEN')
@@ -536,16 +534,14 @@ if AWS.util.isNode()
536534
if (path.match(/[\/\\]home[\/\\]user[\/\\].aws[\/\\]config/))
537535
'''
538536
[default]
539-
aws_access_key_id = akid
540-
aws_secret_access_key = secret
541537
role_arn = arn
542538
source_profile = foo
543539
'''
544540
else
545541
'''
546542
[foo]
547-
aws_access_key_id = akid2
548-
aws_secret_access_key = secret2
543+
aws_access_key_id = akid
544+
aws_secret_access_key = secret
549545
'''
550546
helpers.mockHttpResponse 200, {}, '''
551547
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
@@ -559,10 +555,15 @@ if AWS.util.isNode()
559555
</AssumeRoleResult>
560556
</AssumeRoleResponse>
561557
'''
562-
debugger;
563558
creds = new AWS.SharedIniFileCredentials()
559+
stsCtorSpy = helpers.spyOn(AWS, 'STS').andCallThrough()
564560
expect(creds.roleArn).to.equal('arn')
565561
creds.refresh (err) ->
562+
expect(stsCtorSpy.calls.length).to.equal(1)
563+
sourceCreds = stsCtorSpy.calls[0].arguments[0].credentials
564+
expect(sourceCreds.accessKeyId).to.equal('akid')
565+
expect(sourceCreds.secretAccessKey).to.equal('secret')
566+
566567
expect(creds.accessKeyId).to.equal('KEY')
567568
expect(creds.secretAccessKey).to.equal('SECRET')
568569
expect(creds.sessionToken).to.equal('TOKEN')

0 commit comments

Comments
 (0)