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 |