fluke/devops-service/spec/workers/chef_node_name_builder_spec.rb

72 lines
2.6 KiB
Ruby
Raw Normal View History

require 'workers/stack_bootstrap/chef_node_name_builder'
RSpec.describe ChefNodeNameBuilder do
# test with real response to ensure it is processed correctly
let(:server_info) do
{
2016-02-20 17:39:02 +03:00
"name"=>"stack-achuchkalov-aws-test-1455976199-master01",
"id"=>"i-fac32c7e",
"key_name"=>"achuchkalov",
"private_ip"=>"172.31.11.30",
"public_ip"=>"52.90.250.51",
"tags" => {
"Name"=>"master01",
"aws:cloudformation:logical-id"=>"EC2Instance1",
"aws:cloudformation:stack-name"=>"stack-achuchkalov-aws-test-1455976199",
"StackTemplate"=>"1inst",
"aws:cloudformation:stack-id" => "arn:aws:cloudformation:us-east-1:736558555923:stack/stack-achuchkalov-aws-test-1455976199/d5f3ca60-d7d8-11e5-9ba1-50d5cd24fac6",
"cid:deployEnv"=>"test",
"cid:project"=>"aws",
"cid:user"=>"root",
"cid:priority"=>0
}
}
end
let(:node_name_builder) {
ChefNodeNameBuilder.new(
provider_server_info: server_info,
project_id: 'proj',
env_id: 'dev'
)
2016-02-20 17:39:02 +03:00
}
let(:build_node_name) { node_name_builder.build_node_name!({}) }
def set_mask(mask)
server_info['tags']['cid:node-name-mask'] = mask
end
describe '#build_node_name' do
2016-03-11 13:04:55 +03:00
it 'uses default mask (":project-:env-:instanceid")' do
expect(build_node_name).to eq 'proj-dev-i-fac32c7e'
end
it 'substitutes :project, :env, :instanceid and :instancename' do
set_mask(':project/:env/:instanceid/:instancename')
2016-02-26 14:27:14 +03:00
expect(build_node_name).to eq 'proj/dev/i-fac32c7e/master01'
end
it 'substitutes :time' do
set_mask(':project-:time')
expect(build_node_name).to match /proj-\d+/
end
describe 'substitutes incrementers variables :increment-groupname: with numbers depending on @incrementers_values param' do
it 'starts with 01 for empty hash' do
set_mask('node-:increment-slave:')
expect(node_name_builder.build_node_name!({})).to eq 'node-01'
end
2016-02-26 14:27:14 +03:00
it "continues with next values if hash isn't empty" do
set_mask('node-:increment-slave:')
expect(node_name_builder.build_node_name!({'slave' => nil})).to eq 'node-01'
expect(node_name_builder.build_node_name!({'slave' => 1})).to eq 'node-02'
expect(node_name_builder.build_node_name!({'slave' => 50})).to eq 'node-51'
end
it 'could substitute different incrementers at once' do
set_mask('node-:increment-slave:-:increment-master:')
expect(node_name_builder.build_node_name!({'slave' => 1, 'master' => 3})).to eq 'node-02-04'
end
end
end
end