54 lines
1.8 KiB
Ruby
54 lines
1.8 KiB
Ruby
require 'workers/stack_bootstrap/chef_node_name_builder'
|
|
RSpec.describe ChefNodeNameBuilder do
|
|
# real response
|
|
let(:server_info) do
|
|
{
|
|
"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(:project) { build(:project, id: 'proj', with_deploy_env_identifiers: %w(dev)) }
|
|
let(:env) { project.deploy_env('dev') }
|
|
let(:build_node_name) {
|
|
described_class.new(server_info, project, env).build_node_name
|
|
}
|
|
|
|
def set_mask(mask)
|
|
server_info['tags']['cid:node-name-mask'] = mask
|
|
end
|
|
|
|
describe '#build_node_name' do
|
|
it 'uses default mask ("$project-$cfname-$env")' do
|
|
expect(build_node_name).to eq 'proj-master01-dev'
|
|
end
|
|
|
|
it 'substitutes project, env, instanceid and cfname' do
|
|
set_mask('$project/$env/$instanceid/$cfname')
|
|
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
|
|
|
|
it 'substitutes underscores to dashes' do
|
|
server_info['tags']['Name'] = 'server_1'
|
|
expect(build_node_name).to match 'proj-server-1-dev'
|
|
end
|
|
end
|
|
end |