99 lines
2.4 KiB
Ruby
99 lines
2.4 KiB
Ruby
require "spec_helper"
|
|
|
|
require "ostruct"
|
|
|
|
RSpec.describe Psenv::Parameter do
|
|
context ".new" do
|
|
let(:parameter) do
|
|
{
|
|
name: "/psenv/test/VARIABLE",
|
|
value: "value",
|
|
type: "String",
|
|
version: 1
|
|
}
|
|
end
|
|
subject { Psenv::Parameter.new(parameter) }
|
|
|
|
it "creates a paraemeter object" do
|
|
expect(subject).to be_kind_of(Psenv::Parameter)
|
|
end
|
|
|
|
it "stores the correct name" do
|
|
expect(subject.name).to eq("VARIABLE")
|
|
end
|
|
|
|
it "stores the value" do
|
|
expect(subject.value).to eq("value")
|
|
end
|
|
end
|
|
end
|
|
|
|
RSpec.describe Psenv::Retriever do
|
|
context ".new" do
|
|
it "creates a retriever object" do
|
|
expect(Psenv::Retriever.new("A")).to be_kind_of(Psenv::Retriever)
|
|
end
|
|
end
|
|
|
|
context "#call" do
|
|
let(:ssm) { double }
|
|
before(:each) { allow(Aws::SSM::Client).to receive(:new) { ssm } }
|
|
|
|
subject { Psenv::Retriever.new("/psenv/test").call }
|
|
|
|
context "with a single page request" do
|
|
before(:each) do
|
|
allow(ssm).to receive(:get_parameters_by_path) {
|
|
OpenStruct.new(
|
|
parameters: [{
|
|
name: "/psenv/test/API_KEY",
|
|
value: "value",
|
|
type: "String",
|
|
version: 1
|
|
}]
|
|
)
|
|
}
|
|
end
|
|
|
|
it "returns the parsed parameters" do
|
|
expect(subject).to eq("API_KEY" => "value")
|
|
end
|
|
end
|
|
|
|
context "with multiple pages" do
|
|
before(:each) do
|
|
allow(ssm).to receive(:get_parameters_by_path) {
|
|
OpenStruct.new(
|
|
parameters: [{
|
|
name: "/psenv/test/API_KEY",
|
|
value: "value",
|
|
type: "String",
|
|
version: 1
|
|
}],
|
|
next_page?: true,
|
|
next_page: OpenStruct.new(
|
|
parameters: [{
|
|
name: "/psenv/test/CLIENT_KEY",
|
|
value: "value",
|
|
type: "String",
|
|
version: 1
|
|
}]
|
|
)
|
|
)
|
|
}
|
|
end
|
|
|
|
it "returns both parameters" do
|
|
expect(subject).to eq("API_KEY" => "value", "CLIENT_KEY" => "value")
|
|
end
|
|
end
|
|
|
|
context "when the request fails" do
|
|
before(:each) { allow(ssm).to receive(:get_parameters_by_path).and_raise }
|
|
|
|
it "raises a RetrieveError" do
|
|
expect { subject }.to raise_error(Psenv::RetrieveError)
|
|
end
|
|
end
|
|
end
|
|
end
|