cookbook-openstack-orchestr.../spec/common_spec.rb

144 lines
3.8 KiB
Ruby
Executable File

# encoding: UTF-8
require_relative 'spec_helper'
describe 'openstack-orchestration::common' do
before { orchestration_stubs }
before do
@chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
@chef_run.converge 'openstack-orchestration::common'
end
expect_installs_python_keystoneclient
it 'installs the openstack-heat package' do
expect(@chef_run).to upgrade_package 'heat-common'
end
it 'installs mysql python packages by default' do
expect(@chef_run).to upgrade_package 'python-mysqldb'
end
it 'installs postgresql python packages if explicitly told' do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['db']['orchestration']['service_type'] = 'postgresql'
chef_run.converge 'openstack-orchestration::common'
expect(chef_run).to upgrade_package 'python-psycopg2'
expect(chef_run).not_to upgrade_package 'MySQL-python'
expect(chef_run).not_to upgrade_package 'python-ibm-db'
expect(chef_run).not_to upgrade_package 'python-ibm-db-sa'
end
describe '/etc/heat' do
before do
@dir = @chef_run.directory '/etc/heat'
end
it 'has proper owner' do
expect(@dir.owner).to eq('heat')
end
it 'has proper modes' do
expect(sprintf('%o', @dir.mode)).to eq '700'
end
end
describe '/etc/heat/environment.d' do
before do
@dir = @chef_run.directory '/etc/heat/environment.d'
end
it 'has proper owner' do
expect(@dir.owner).to eq('heat')
end
it 'has proper modes' do
expect(sprintf('%o', @dir.mode)).to eq '700'
end
end
describe '/var/cache/heat' do
before do
@dir = @chef_run.directory '/var/cache/heat'
end
it 'has proper owner' do
expect(@dir.owner).to eq('heat')
end
it 'has proper modes' do
expect(sprintf('%o', @dir.mode)).to eq '700'
end
end
describe 'heat.conf' do
before do
@template = @chef_run.template '/etc/heat/heat.conf'
end
it 'has proper owner' do
expect(@template.owner).to eq('heat')
expect(@template.group).to eq('heat')
end
it 'has proper modes' do
expect(sprintf('%o', @template.mode)).to eq '644'
end
# TODO: (MRV) Add rest of conf items
[
%r{^heat_metadata_server_url=http://127.0.0.1:8000$},
%r{^heat_waitcondition_server_url=http://127.0.0.1:8000/v1/waitcondition$},
%r{^heat_watch_server_url=http://127.0.0.1:8003$},
%r{^signing_dir=/var/cache/heat$}
].each do |content|
it "has a #{content.source[1...-1]} line" do
expect(@chef_run).to render_file(@template.name).with_content(content)
end
end
it 'has default RPC/AMQP options set' do
[/^rpc_thread_pool_size=64$/,
/^rpc_conn_pool_size=30$/,
/^rpc_response_timeout=60$/,
/^amqp_durable_queues=false$/,
/^amqp_auto_delete=false$/].each do |line|
expect(@chef_run).to render_file(@template.name).with_content(line)
end
end
it 'has default qpid topology version' do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['mq']['orchestration']['service_type'] = 'qpid'
chef_run.converge 'openstack-orchestration::common'
expect(chef_run).to render_file(@template.name).with_content(
/^qpid_topology_version=1$/)
end
end
describe 'default.yaml' do
before do
@template = @chef_run.template '/etc/heat/environment.d/default.yaml'
end
it 'has proper owner' do
expect(@template.owner).to eq('heat')
expect(@template.group).to eq('heat')
end
it 'has proper modes' do
expect(sprintf('%o', @template.mode)).to eq '644'
end
end
it 'runs db migrations' do
cmd = 'heat-manage db_sync'
expect(@chef_run).to run_execute(cmd).with(user: 'heat', group: 'heat')
end
end