|
5 | 5 | module Aws
|
6 | 6 | describe ProcessCredentials do
|
7 | 7 |
|
8 |
| - before(:each) do |
9 |
| - stub_const('ENV', {}) |
| 8 | + before do |
10 | 9 | allow(Dir).to receive(:home).and_raise(ArgumentError)
|
11 | 10 | end
|
12 |
| - |
| 11 | + |
13 | 12 | it 'will read credentials from a process' do
|
14 |
| - creds = ProcessCredentials.new('echo \'{"Version":1,"AccessKeyId":"AK_PROC1","SecretAccessKey":"SECRET_AK_PROC1","SessionToken":"TOKEN_PROC1"}\'').credentials |
| 13 | + process = %w[echo {"Version":1,"AccessKeyId":"AK_PROC1","SecretAccessKey":"SECRET_AK_PROC1","SessionToken":"TOKEN_PROC1"}] |
| 14 | + creds = ProcessCredentials.new(process).credentials |
15 | 15 | expect(creds.access_key_id).to eq('AK_PROC1')
|
16 | 16 | expect(creds.secret_access_key).to eq('SECRET_AK_PROC1')
|
17 | 17 | expect(creds.session_token).to eq('TOKEN_PROC1')
|
18 | 18 | end
|
19 | 19 |
|
20 | 20 | it 'will throw an error when invalid JSON is returned' do
|
| 21 | + process = %w[echo {"Version":3,"AccessKeyId":"","SecretAccessKey":""\'] |
21 | 22 | expect {
|
22 |
| - creds = ProcessCredentials.new('echo \'{"Version":3,"AccessKeyId":"","SecretAccessKey":"","SessionToken":""\'').credentials |
| 23 | + ProcessCredentials.new(process).credentials |
23 | 24 | }.to raise_error(Errors::InvalidProcessCredentialsPayload)
|
24 | 25 | end
|
25 | 26 |
|
26 |
| - it 'will throw an error when the process credentials payload version is invalid' do |
| 27 | + it 'will throw an error when the process credentials payload version is invalid' do |
| 28 | + process = %w[echo {"Version":3,"AccessKeyId":"","SecretAccessKey":""}] |
27 | 29 | expect {
|
28 |
| - creds = ProcessCredentials.new('echo \'{"Version":3,"AccessKeyId":"","SecretAccessKey":"","SessionToken":""}\'').credentials |
| 30 | + ProcessCredentials.new(process).credentials |
29 | 31 | }.to raise_error(Errors::InvalidProcessCredentialsPayload)
|
30 | 32 | end
|
31 | 33 |
|
32 |
| - it 'will throw an error when the process credentials payload is malformed' do |
| 34 | + it 'will throw an error when the process credentials payload is malformed' do |
| 35 | + process = %w[echo {"Version":1}] |
33 | 36 | expect {
|
34 |
| - creds = ProcessCredentials.new('echo \'{"Version":1}\'').credentials |
| 37 | + ProcessCredentials.new(process).credentials |
35 | 38 | }.to raise_error(Errors::InvalidProcessCredentialsPayload)
|
36 | 39 | end
|
37 | 40 |
|
38 |
| - it 'will throw an error and expose the stderr output when the credential process has a nonzero exit status' do |
| 41 | + it 'will throw an error when the credential process has a nonzero exit status' do |
| 42 | + process = ['fake_proc'] |
39 | 43 | expect {
|
40 |
| - creds = ProcessCredentials.new('>&2 echo "Credential Provider Error"; false').credentials |
| 44 | + ProcessCredentials.new(process).credentials |
41 | 45 | }.to raise_error(Errors::InvalidProcessCredentialsPayload)
|
42 |
| - .and output("Credential Provider Error\n").to_stderr_from_any_process |
43 | 46 | end
|
44 | 47 |
|
45 |
| - it 'will throw an error when the credential process cant be found' do |
46 |
| - expect { |
47 |
| - creds = ProcessCredentials.new('fake_proc').credentials |
48 |
| - }.to raise_error(Errors::InvalidProcessCredentialsPayload) |
| 48 | + context 'legacy process string' do |
| 49 | + before do |
| 50 | + expect_any_instance_of(ProcessCredentials) |
| 51 | + .to receive(:warn).with(/array of system arguments/) |
| 52 | + end |
| 53 | + |
| 54 | + it 'will read credentials from a process' do |
| 55 | + process = 'echo \'{"Version":1,"AccessKeyId":"AK_PROC1","SecretAccessKey":"SECRET_AK_PROC1","SessionToken":"TOKEN_PROC1"}\'' |
| 56 | + creds = ProcessCredentials.new(process).credentials |
| 57 | + expect(creds.access_key_id).to eq('AK_PROC1') |
| 58 | + expect(creds.secret_access_key).to eq('SECRET_AK_PROC1') |
| 59 | + expect(creds.session_token).to eq('TOKEN_PROC1') |
| 60 | + end |
| 61 | + |
| 62 | + it 'will throw an error when invalid JSON is returned' do |
| 63 | + process = 'echo \'{"Version":3,"AccessKeyId":"","SecretAccessKey":""\'' |
| 64 | + expect { |
| 65 | + ProcessCredentials.new(process).credentials |
| 66 | + }.to raise_error(Errors::InvalidProcessCredentialsPayload) |
| 67 | + end |
| 68 | + |
| 69 | + it 'will throw an error when the process credentials payload version is invalid' do |
| 70 | + process = 'echo \'{"Version":3,"AccessKeyId":"","SecretAccessKey":""}\'' |
| 71 | + expect { |
| 72 | + ProcessCredentials.new(process).credentials |
| 73 | + }.to raise_error(Errors::InvalidProcessCredentialsPayload) |
| 74 | + end |
| 75 | + |
| 76 | + it 'will throw an error when the process credentials payload is malformed' do |
| 77 | + process = 'echo \'{"Version":1}\'' |
| 78 | + expect { |
| 79 | + ProcessCredentials.new(process).credentials |
| 80 | + }.to raise_error(Errors::InvalidProcessCredentialsPayload) |
| 81 | + end |
| 82 | + |
| 83 | + it 'will throw an error when the credential process has a nonzero exit status' do |
| 84 | + process = 'fake_proc' |
| 85 | + expect { |
| 86 | + ProcessCredentials.new(process).credentials |
| 87 | + }.to raise_error(Errors::InvalidProcessCredentialsPayload) |
| 88 | + end |
49 | 89 | end
|
50 | 90 | end
|
51 | 91 | end
|
0 commit comments