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

45 lines
1.2 KiB
Ruby

require 'workers/stack_bootstrap/chef_node_name_builder'
RSpec.describe ChefNodeNameBuilder do
let(:server_info) do
{
'id' => 'server1',
'name' => 'server_name',
'key_name' => 'key',
'private_ip' => '127.0.0.1',
'public_ip' => '127.0.0.2',
'tags' => {
'cid:priority' => '3'
}
}
end
let(:project) { build(:project, id: 'proj', with_deploy_env_identifiers: %w(dev)) }
let(:env) { project.deploy_env('dev') }
let(:name_builder) { described_class.new(server_info, project, env) }
let(:build_name) { name_builder.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-$nodename-$env")' do
expect(build_name).to eq 'proj-server1-dev'
end
it 'substitutes project, env and nodename' do
set_mask('$project/$env/$nodename')
expect(build_name).to eq 'proj/dev/server1'
end
it 'substitutes $time' do
set_mask('$nodename-$time')
expect(build_name).to match /server1-\d+/
end
it 'substitutes underscores to dashes' do
server_info['id'] = 'server_1'
expect(build_name).to match 'proj-server-1-dev'
end
end
end