|
1 | 1 | require 'test_helper' |
2 | 2 |
|
3 | 3 | class FileCredentialsTest < InstanceAgentTestCase |
4 | | - context 'The file credentials' do |
5 | | - should 'pass the path to SharedCredentials' do |
6 | | - credentials = InstanceAgent::FileCredentials.new("/tmp/credentials_path") |
7 | | - Aws::SharedCredentials.expects(:new).with(path: "/tmp/credentials_path") |
| 4 | + context 'With the file credentials' do |
| 5 | + |
| 6 | + access_key_id = "fake-aws-access-key-id" |
| 7 | + secret_access_key = "fake-aws-secret-key" |
| 8 | + credentials_path = "/tmp/credentials_path" |
| 9 | + session_token_1 = "fake-aws-session-token-1" |
| 10 | + session_token_2 = "fake-aws-session-token-2" |
| 11 | + credential_file_pattern = <<-END |
| 12 | +[default] |
| 13 | +aws_access_key_id = #{access_key_id} |
| 14 | +aws_secret_access_key = #{secret_access_key} |
| 15 | +aws_session_token = %s |
| 16 | +END |
| 17 | + |
| 18 | + setup do |
| 19 | + File.stubs(:exist?).with(credentials_path).returns(true) |
| 20 | + File.stubs(:exist?).with(Not(equals(credentials_path))).returns(false) |
| 21 | + File.stubs(:readable?).with(credentials_path).returns(true) |
| 22 | + File.expects(:read).with(credentials_path).returns(credential_file_pattern % session_token_2) |
| 23 | + File.expects(:read).with(credentials_path).returns(credential_file_pattern % session_token_1) |
| 24 | + end |
| 25 | + |
| 26 | + should 'load and refresh the credentials from the path to SharedCredentials' do |
| 27 | + credentials = InstanceAgent::FileCredentials.new(credentials_path) |
| 28 | + assert_equal access_key_id, credentials.credentials.access_key_id |
| 29 | + assert_equal secret_access_key, credentials.credentials.secret_access_key |
| 30 | + assert_equal session_token_1, credentials.credentials.session_token |
8 | 31 | credentials.refresh! |
| 32 | + assert_equal access_key_id, credentials.credentials.access_key_id |
| 33 | + assert_equal secret_access_key, credentials.credentials.secret_access_key |
| 34 | + assert_equal session_token_2, credentials.credentials.session_token |
9 | 35 | end |
10 | 36 |
|
11 | 37 | should 'set the refresh time to 30 minutes' do |
12 | | - credentials = InstanceAgent::FileCredentials.new("/tmp/credentials_path") |
| 38 | + credentials = InstanceAgent::FileCredentials.new(credentials_path) |
13 | 39 | credentials.refresh! |
14 | 40 | # Around 30 minutes |
15 | 41 | expected_time = Time.now + 1800 |
16 | 42 | assert_in_delta(expected_time, credentials.expiration, 5, "Expiration time did not fall within 5 seconds of expected expiration") |
17 | 43 | end |
18 | 44 | end |
| 45 | + |
| 46 | + context 'Without the file credentials' do |
| 47 | + |
| 48 | + credentials_path = "/tmp/invalid_credentials_path" |
| 49 | + |
| 50 | + setup do |
| 51 | + File.stubs(:exist?).with(credentials_path).returns(false) |
| 52 | + end |
| 53 | + |
| 54 | + should 'raise error when credential file is missing' do |
| 55 | + assert_raised_with_message("Failed to load credentials from path #{credentials_path}", RuntimeError) do |
| 56 | + InstanceAgent::FileCredentials.new(credentials_path) |
| 57 | + end |
| 58 | + end |
| 59 | + end |
19 | 60 | end |
0 commit comments