45 lines
1.2 KiB
Ruby
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 |