aws-ssm-env 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +7 -0
- data/README.md +171 -88
- data/README_ja.md +322 -0
- data/lib/aws-ssm-env/version.rb +1 -1
- data/spec/aws-ssm-env/fetcher_spec.rb +158 -0
- data/spec/aws-ssm-env/fetchers/begins_with_spec.rb +106 -0
- data/spec/aws-ssm-env/fetchers/factory_spec.rb +65 -0
- data/spec/aws-ssm-env/fetchers/path_spec.rb +100 -0
- data/spec/aws-ssm-env/loader_spec.rb +84 -0
- data/spec/aws-ssm-env/naming_strategies/basename_spec.rb +14 -0
- data/spec/aws-ssm-env/naming_strategies/factory_spec.rb +57 -0
- data/spec/aws-ssm-env/naming_strategies/snakecase_spec.rb +78 -0
- data/spec/aws-ssm-env/naming_strategy_spec.rb +11 -0
- data/spec/aws-ssm-env/parameter.rb +7 -0
- data/spec/aws-ssm-env_spec.rb +128 -0
- data/spec/spec_helper.rb +22 -0
- metadata +37 -10
- data/README_en.md +0 -5
data/lib/aws-ssm-env/version.rb
CHANGED
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsSsmEnv::Fetcher do
|
4
|
+
let(:fetcher) { described_class.new(args) }
|
5
|
+
let(:args) { {} }
|
6
|
+
let(:client) { fetcher.send(:client) }
|
7
|
+
let(:ssm_client_args) {
|
8
|
+
{
|
9
|
+
access_key_id: 'access_key_id',
|
10
|
+
secret_access_key: 'secret_access_key'
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
describe '#initialize' do
|
15
|
+
context 'when decryption was not set' do
|
16
|
+
it 'with_decryption is true' do
|
17
|
+
expect(fetcher.send(:with_decryption)).to be_truthy
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when decryption is nil' do
|
22
|
+
let(:args) { { decryption: nil } }
|
23
|
+
|
24
|
+
it 'with_decryption is true' do
|
25
|
+
expect(fetcher.send(:with_decryption)).to be_truthy
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when decryption is truthy string' do
|
30
|
+
let(:args) { { decryption: 'TrUe' } }
|
31
|
+
|
32
|
+
it 'with_decryption is true' do
|
33
|
+
expect(fetcher.send(:with_decryption)).to be_truthy
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when decryption is not truthy string' do
|
38
|
+
let(:args) { { decryption: 'foo' } }
|
39
|
+
|
40
|
+
it 'with_decryption is false' do
|
41
|
+
expect(fetcher.send(:with_decryption)).to be_falsey
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when client was not set' do
|
46
|
+
context 'when ssm_client_args was set' do
|
47
|
+
let(:args) { { ssm_client_args: ssm_client_args } }
|
48
|
+
|
49
|
+
it 'client is initialized by ssm_client_args' do
|
50
|
+
expect(client.config[:access_key_id]).to eq('access_key_id')
|
51
|
+
expect(client.config[:secret_access_key]).to eq('secret_access_key')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when ssm_client_args was not set' do
|
56
|
+
it 'client is default construction' do
|
57
|
+
expect(client.config[:access_key_id]).to be_nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when client was set' do
|
63
|
+
context 'when client is instance of Aws::SSM::Client' do
|
64
|
+
let(:ssm_client) { Aws::SSM::Client.new }
|
65
|
+
let(:args) { { client: ssm_client } }
|
66
|
+
|
67
|
+
it 'client is equals to args[:client]' do
|
68
|
+
expect(client).to eq(ssm_client)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when client is not instance of Aws::SSM::Client' do
|
73
|
+
let(:ssm_client) { 'foo' }
|
74
|
+
let(:args) { { client: ssm_client, ssm_client_args: ssm_client_args } }
|
75
|
+
|
76
|
+
it 'client is not equals to args[:client] and client is initialized by ssm_client_args' do
|
77
|
+
expect(client).not_to eq(ssm_client)
|
78
|
+
expect(client.config[:access_key_id]).to eq('access_key_id')
|
79
|
+
expect(client.config[:secret_access_key]).to eq('secret_access_key')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '#each' do
|
86
|
+
let(:parameters) { [ Parameter.new('foo', 'foo'), Parameter.new('bar', 'bar') ] }
|
87
|
+
let(:fetcher) {
|
88
|
+
mock_class = Class.new(described_class) do
|
89
|
+
def initialize(response); @response = response; end
|
90
|
+
protected def fetch(_); @response; end
|
91
|
+
end
|
92
|
+
mock_class.new(dummy_response)
|
93
|
+
}
|
94
|
+
|
95
|
+
context 'when fetch returns empty parameters at first' do
|
96
|
+
let(:dummy_response) { AwsSsmEnv::FetchResult::EMPTY }
|
97
|
+
|
98
|
+
it 'consumer is not called' do
|
99
|
+
called = false
|
100
|
+
fetcher.each do |_|
|
101
|
+
called = true
|
102
|
+
end
|
103
|
+
expect(called).to be_falsey
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'when fetch returns two parameters at first and empty next_token' do
|
108
|
+
let(:dummy_response) { AwsSsmEnv::FetchResult.new(parameters, nil) }
|
109
|
+
|
110
|
+
it 'consumer is called twice' do
|
111
|
+
called = 0
|
112
|
+
fetcher.each do |_|
|
113
|
+
called += 1
|
114
|
+
end
|
115
|
+
expect(called).to eq(2)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context 'when fetch returns two parameters and next_token at first, fetch returns two parameters and empty next_token at second' do
|
120
|
+
let(:fetcher) {
|
121
|
+
mock_class = Class.new(described_class) do
|
122
|
+
def initialize(parameters); @parameters = parameters; @count = 0; end
|
123
|
+
protected def fetch(_)
|
124
|
+
if @count == 0
|
125
|
+
@count = 1
|
126
|
+
AwsSsmEnv::FetchResult.new(@parameters, 'next_token')
|
127
|
+
else
|
128
|
+
AwsSsmEnv::FetchResult.new(@parameters, nil)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
mock_class.new(parameters)
|
133
|
+
}
|
134
|
+
|
135
|
+
it 'consumer is called four times' do
|
136
|
+
called = 0
|
137
|
+
fetcher.each do |_|
|
138
|
+
called += 1
|
139
|
+
end
|
140
|
+
expect(called).to eq(4)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe '#fetch' do
|
146
|
+
it 'raise error' do
|
147
|
+
expect { fetcher.send(:fetch, 'next_token') }.to raise_error(NotImplementedError)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe AwsSsmEnv::FetchResult do
|
153
|
+
describe '#initialize' do
|
154
|
+
subject { described_class.new([], 'next_token') }
|
155
|
+
|
156
|
+
it { is_expected.to have_attributes(parameters: [], next_token: 'next_token') }
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'aws-ssm-env/fetchers/begins_with'
|
3
|
+
|
4
|
+
describe AwsSsmEnv::BeginsWithFetcher do
|
5
|
+
let(:fetcher) { described_class.new(args) }
|
6
|
+
let(:args) { { begins_with: [ '/foo', '/bar' ] } }
|
7
|
+
let(:base_params) { fetcher.instance_variable_get(:'@base_params') }
|
8
|
+
let(:parameter_filter) { base_params[:parameter_filters][0] }
|
9
|
+
|
10
|
+
describe '#initialize' do
|
11
|
+
context 'when :begins_with was not set' do
|
12
|
+
it 'raise error' do
|
13
|
+
expect { described_class.new(begins_with: nil) }.to raise_error(ArgumentError)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when :begins_with is Array' do
|
18
|
+
it 'parameter_filter[:values] is begins_with value' do
|
19
|
+
expect(parameter_filter[:values]).to eq(args[:begins_with])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when :begins_with is not Array' do
|
24
|
+
let(:args) { { begins_with: '/foo' } }
|
25
|
+
|
26
|
+
it 'parameter_filter[:values] is [ begins_with value ]' do
|
27
|
+
expect(parameter_filter[:values]).to eq([ args[:begins_with] ])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when :fetch_size was set and less than 50' do
|
32
|
+
let(:args) { { begins_with: '/foo', fetch_size: 49 } }
|
33
|
+
|
34
|
+
it '@base_params[:max_results] is fetch_size value' do
|
35
|
+
expect(base_params[:max_results]).to eq(49)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when :fetch_size was not set' do
|
40
|
+
let(:args) { { begins_with: '/foo', fetch_size: nil } }
|
41
|
+
|
42
|
+
it '@base_params[:max_results] is 50' do
|
43
|
+
expect(base_params[:max_results]).to eq(50)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when :fetch_size > 50' do
|
48
|
+
let(:args) { { begins_with: '/foo', fetch_size: 51 } }
|
49
|
+
|
50
|
+
it '@base_params[:max_results] is 50' do
|
51
|
+
expect(base_params[:max_results]).to eq(50)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#fetch' do
|
57
|
+
let(:client) { fetcher.send(:client) }
|
58
|
+
|
59
|
+
context 'when describe_parameters return empty parameters' do
|
60
|
+
before do
|
61
|
+
allow_any_instance_of(Aws::SSM::Client).to \
|
62
|
+
receive(:describe_parameters).and_return(AwsSsmEnv::FetchResult::EMPTY)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'return AwsSsmEnv::FetchResult::EMPTY' do
|
66
|
+
expect(fetcher.send(:fetch, nil)).to eq(AwsSsmEnv::FetchResult::EMPTY)
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when next_token is nil' do
|
70
|
+
it 'called describe_parameters without next_token' do
|
71
|
+
expect(fetcher.send(:fetch, nil)).to eq(AwsSsmEnv::FetchResult::EMPTY)
|
72
|
+
expect(client).to \
|
73
|
+
have_received(:describe_parameters).with(base_params).once
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when next_token is not nil' do
|
78
|
+
it 'called get_parameters_by_path with next_token' do
|
79
|
+
expect(fetcher.send(:fetch, 'next_token')).to eq(AwsSsmEnv::FetchResult::EMPTY)
|
80
|
+
expect(client).to have_received(:describe_parameters)
|
81
|
+
.with(base_params.merge(next_token: 'next_token')).once
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'when describe_parameters return not empty parameters' do
|
87
|
+
let!(:dummy_parameters) { [ Parameter.new('foo'), Parameter.new('bar') ] }
|
88
|
+
let!(:dummy_response) { AwsSsmEnv::FetchResult.new(dummy_parameters, 'next_token') }
|
89
|
+
|
90
|
+
before do
|
91
|
+
allow_any_instance_of(Aws::SSM::Client).to \
|
92
|
+
receive(:describe_parameters).and_return(dummy_response)
|
93
|
+
allow_any_instance_of(Aws::SSM::Client).to \
|
94
|
+
receive(:get_parameters).and_return(dummy_response)
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'return parameters' do
|
98
|
+
response = fetcher.send(:fetch, 'next_token')
|
99
|
+
expect(response.parameters).to eq(dummy_response.parameters)
|
100
|
+
expect(response.next_token).to eq(dummy_response.next_token)
|
101
|
+
expect(client).to have_received(:get_parameters)
|
102
|
+
.with(names: dummy_parameters.map(&:name), with_decryption: true).once
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsSsmEnv::FetcherFactory do
|
4
|
+
describe '#create_fetcher' do
|
5
|
+
let(:fetcher) { described_class.create_fetcher(args) }
|
6
|
+
|
7
|
+
context 'when fetch was not set' do
|
8
|
+
context 'when begins_with was not set' do
|
9
|
+
let(:args) { { path: '/path' } }
|
10
|
+
|
11
|
+
it 'return AwsSsmEnv::PathFetcher' do
|
12
|
+
expect(fetcher).to be_a(AwsSsmEnv::PathFetcher)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when begins_with was set' do
|
17
|
+
let(:args) { { begins_with: '/path' } }
|
18
|
+
|
19
|
+
it 'return AwsSsmEnv::BeginsWithFetcher' do
|
20
|
+
expect(fetcher).to be_a(AwsSsmEnv::BeginsWithFetcher)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when fetch is :path' do
|
26
|
+
let(:args) { { fetch: :path, path: '/path' } }
|
27
|
+
|
28
|
+
it 'return AwsSsmEnv::PathFetcher' do
|
29
|
+
expect(fetcher).to be_a(AwsSsmEnv::PathFetcher)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when fetch is :begins_with' do
|
34
|
+
let(:args) { { fetch: :begins_with, begins_with: '/path' } }
|
35
|
+
|
36
|
+
it 'return AwsSsmEnv::BeginsWithFetcher' do
|
37
|
+
expect(fetcher).to be_a(AwsSsmEnv::BeginsWithFetcher)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when fetch is AwsSsmEnv::Fetcher implementation instance' do
|
42
|
+
let(:fetcher_class) { Class.new(AwsSsmEnv::Fetcher) { def fetch(_); end } }
|
43
|
+
let(:fetcher_instance) { fetcher_class.new }
|
44
|
+
let(:args) { { fetch: fetcher_instance } }
|
45
|
+
|
46
|
+
it 'return it as is' do
|
47
|
+
expect(fetcher).to eq(fetcher_instance)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when fetch has each method' do
|
52
|
+
let(:args) { { fetch: [] } }
|
53
|
+
|
54
|
+
it 'return it as is' do
|
55
|
+
expect(fetcher).to eq([])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'in other cases' do
|
60
|
+
it 'raise error' do
|
61
|
+
expect { described_class.create_fetcher(fetch: 'foo') }.to raise_error(ArgumentError)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'aws-ssm-env/fetchers/path'
|
3
|
+
|
4
|
+
describe AwsSsmEnv::PathFetcher do
|
5
|
+
let(:fetcher) { described_class.new(args) }
|
6
|
+
let(:args) { { path: '/path' } }
|
7
|
+
let(:base_params) { fetcher.instance_variable_get(:'@base_params') }
|
8
|
+
|
9
|
+
describe '#initialize' do
|
10
|
+
context 'when path was not set' do
|
11
|
+
it 'raise error' do
|
12
|
+
expect { described_class.new(path: nil) }.to raise_error(ArgumentError)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when :path was set' do
|
17
|
+
it '@base_params[:path] is argument value' do
|
18
|
+
expect(base_params[:path]).to eq('/path')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when recursive was not set' do
|
23
|
+
it '@base_params[:recursive] is false' do
|
24
|
+
expect(base_params[:recursive]).to be_falsey
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when recursive is truthy string' do
|
29
|
+
let(:args) { { path: '/path', recursive: 'TruE' } }
|
30
|
+
|
31
|
+
it '@base_params[:recursive] is true' do
|
32
|
+
expect(base_params[:recursive]).to be_truthy
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when recursive is not truthy string' do
|
37
|
+
let(:args) { { path: '/path', recursive: 'foo' } }
|
38
|
+
|
39
|
+
it '@base_params[:recursive] is false' do
|
40
|
+
expect(base_params[:recursive]).to be_falsey
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when :fetch_size was set and less than 10' do
|
45
|
+
let(:args) { { path: '/path', fetch_size: 5 } }
|
46
|
+
|
47
|
+
it '@base_params[:max_results] is fetch_size value' do
|
48
|
+
expect(base_params[:max_results]).to eq(5)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when :fetch_size was not set' do
|
53
|
+
it '@base_params[:max_results] is 10' do
|
54
|
+
expect(base_params[:max_results]).to eq(10)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when :fetch_size is nil' do
|
59
|
+
let(:args) { { path: '/path', fetch_size: nil } }
|
60
|
+
|
61
|
+
it '@base_params[:max_results] is 10' do
|
62
|
+
expect(base_params[:max_results]).to eq(10)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'when :fetch_size > 10' do
|
67
|
+
let(:args) { { path: '/path', fetch_size: 11 } }
|
68
|
+
|
69
|
+
it '@base_params[:max_results] is 10' do
|
70
|
+
expect(base_params[:max_results]).to eq(10)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#fetch' do
|
76
|
+
before do
|
77
|
+
allow_any_instance_of(Aws::SSM::Client).to \
|
78
|
+
receive(:get_parameters_by_path).and_return(nil)
|
79
|
+
end
|
80
|
+
|
81
|
+
let(:client) { fetcher.send(:client) }
|
82
|
+
|
83
|
+
context 'when next_token is nil' do
|
84
|
+
it 'called get_parameters_by_path without next_token' do
|
85
|
+
expect(fetcher.send(:fetch, nil)).to be_nil
|
86
|
+
expect(client).to \
|
87
|
+
have_received(:get_parameters_by_path).with(base_params).once
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when next_token is not nil' do
|
92
|
+
it 'called get_parameters_by_path with next_token' do
|
93
|
+
expect(fetcher.send(:fetch, 'next_token')).to be_nil
|
94
|
+
expect(client).to \
|
95
|
+
have_received(:get_parameters_by_path)
|
96
|
+
.with(base_params.merge(next_token: 'next_token')).once
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AwsSsmEnv::Loader do
|
4
|
+
let(:args) { { path: '/foo' } }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
let(:loader) { described_class.new(args) }
|
8
|
+
|
9
|
+
it 'has fetcher and naming_strategy' do
|
10
|
+
expect(loader.instance_variable_get(:@fetcher)).to be_a(AwsSsmEnv::PathFetcher)
|
11
|
+
expect(loader.instance_variable_get(:@naming_strategy)).to be_a(AwsSsmEnv::BasenameNamingStrategy)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'overwrite option' do
|
15
|
+
let(:applier) { loader.instance_variable_get(:@applier) }
|
16
|
+
|
17
|
+
context 'when overwrite was not set' do
|
18
|
+
it '@applier is not overwrite method' do
|
19
|
+
expect(applier).to eq(:apply)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when overwrite is nil' do
|
24
|
+
let(:args) { { path: '/foo', overwrite: nil } }
|
25
|
+
|
26
|
+
it '@applier is not overwrite method' do
|
27
|
+
expect(applier).to eq(:apply)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when overwrite is truthy string' do
|
32
|
+
let(:args) { { path: '/foo', overwrite: 'truE' } }
|
33
|
+
|
34
|
+
it '@applier is overwrite method' do
|
35
|
+
expect(applier).to eq(:apply!)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when overwrite is not truthy string' do
|
40
|
+
let(:args) { { path: '/foo', overwrite: 'foo' } }
|
41
|
+
|
42
|
+
it '@applier is not overwrite method' do
|
43
|
+
expect(applier).to eq(:apply)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#load' do
|
50
|
+
context 'when overwrite is false' do
|
51
|
+
it 'environment variables were not overwritten' do
|
52
|
+
ENV['foo'] = nil
|
53
|
+
ENV['fizz'] = 'fizz'
|
54
|
+
|
55
|
+
loader = described_class.new(args)
|
56
|
+
loader.instance_variable_set(:@fetcher,
|
57
|
+
[ Parameter.new('foo', 'bar'), Parameter.new('fizz', 'buzz') ])
|
58
|
+
|
59
|
+
loader.load
|
60
|
+
|
61
|
+
expect(ENV['foo']).to eq('bar')
|
62
|
+
expect(ENV['fizz']).to eq('fizz')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'when overwrite is true' do
|
67
|
+
let(:args) { { path: '/foo', overwrite: true } }
|
68
|
+
|
69
|
+
it 'environment variables were overwritten' do
|
70
|
+
ENV['foo'] = nil
|
71
|
+
ENV['fizz'] = 'fizz'
|
72
|
+
|
73
|
+
loader = described_class.new(args)
|
74
|
+
loader.instance_variable_set(:@fetcher,
|
75
|
+
[ Parameter.new('foo', 'bar'), Parameter.new('fizz', 'buzz') ])
|
76
|
+
|
77
|
+
loader.load
|
78
|
+
|
79
|
+
expect(ENV['foo']).to eq('bar')
|
80
|
+
expect(ENV['fizz']).to eq('buzz')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|