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 | 
