cookbook-openstack-identity/spec/cloud_config_spec.rb

95 lines
3.2 KiB
Ruby

require_relative 'spec_helper'
require 'yaml'
describe 'openstack-identity::cloud_config' do
describe 'ubuntu' do
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
cached(:chef_run) do
runner.converge(described_recipe)
end
include_context 'identity_stubs'
describe '/root/clouds.yaml' do
let(:file) { chef_run.template('/root/clouds.yaml') }
it 'creates the /root/clouds.yaml file' do
expect(chef_run).to create_directory('/root').with(
owner: 'root',
group: 'root',
mode: '0700',
recursive: true
)
expect(chef_run).to create_template(file.name).with(
sensitive: true,
user: 'root',
group: 'root',
mode: '0600',
variables: {
cloud_name: 'default',
identity_endpoint: 'http://127.0.0.1:5000/v3',
password: 'admin',
project: 'admin',
project_domain_name: 'default',
user_domain_name: 'default',
user: 'admin',
}
)
end
cloud_yaml = {
'clouds' => {
'default' => {
'auth' => {
'username' => 'admin',
'user_domain_name' => 'default',
'password' => 'admin',
'project_name' => 'admin',
'project_domain_name' => 'default',
'auth_url' => 'http://127.0.0.1:5000/v3',
},
'identity_api_version' => 3,
'region_name' => 'RegionOne',
},
},
}
it 'contains auth environment variables' do
expect(chef_run).to render_file(file.name).with_content(YAML.dump(cloud_yaml))
end
context 'override auth environment variables' do
cloud_yaml_override = {
'clouds' => {
'cloud-config-override' => {
'auth' => {
'username' => 'identity_admin',
'user_domain_name' => 'admin-domain-override',
'password' => 'identity_admin_pass',
'project_name' => 'admin-project-name-override',
'project_domain_name' => 'admin-domain-name-override',
'auth_url' => 'https://public.identity:1234/',
},
'identity_api_version' => 3,
'region_name' => 'RegionOne',
},
},
}
cached(:chef_run) do
node.override['openstack']['identity']['cloud_config']['cloud_name'] = 'cloud-config-override'
node.override['openstack']['identity']['admin_user'] = 'identity_admin'
node.override['openstack']['identity']['admin_project_domain'] = 'admin-domain-name-override'
node.override['openstack']['identity']['admin_project'] = 'admin-project-name-override'
node.override['openstack']['identity']['admin_domain_name'] = 'admin-domain-override'
node.override['openstack']['endpoints']['public']['identity']['uri'] = 'https://public.identity:1234/'
runner.converge(described_recipe)
end
it 'contains overridden auth environment variables' do
expect(chef_run).to render_file(file.name).with_content(YAML.dump(cloud_yaml_override))
end
end
end
end
end