Files
puppet-nova/spec/unit/provider/nova_flavor/openstack_spec.rb
Takashi Kajinami ebaf17b8b5 Replace mocha by rspec-mocks
puppetlabs_spec_helper recommends rspec-mocks instead of mocha[1] and
it uses rspec-mocks by default instead of mocha since v 5.0.0[2]

This is the prep work to adapt to that migration.

[1] https://github.com/puppetlabs/puppetlabs_spec_helper/#mock_with
[2] 493f0cbc1c

Closes-Bug: #2004135
Change-Id: I5e822f07c79fe16baee90eebd557ee8d7ed1237d
2023-01-30 13:54:43 +09:00

163 lines
4.7 KiB
Ruby

require 'puppet'
require 'spec_helper'
require 'puppet/provider/nova_flavor/openstack'
describe Puppet::Type.type(:nova_flavor).provider(:openstack) do
let(:set_env) do
ENV['OS_USERNAME'] = 'test'
ENV['OS_PASSWORD'] = 'abc123'
ENV['OS_PROJECT_NAME'] = 'test'
ENV['OS_AUTH_URL'] = 'http://127.0.0.1:5000/v3'
end
describe 'managing flavors' do
let(:flavor_attrs) do
{
:name => 'example',
:id => '1',
:ram => '512',
:disk => '1',
:vcpus => '1',
:ensure => 'present',
}
end
let :resource do
Puppet::Type::Nova_flavor.new(flavor_attrs)
end
let(:provider) do
described_class.new(resource)
end
before(:each) do
set_env
end
describe '#create' do
context 'with defaults' do
it 'creates flavor' do
expect(provider.class).to receive(:openstack)
.with('flavor', 'create', '--format', 'shell', ['example', '--public', '--id', '1', '--ram', '512', '--disk', '1', '--vcpus', '1'])
.and_return('os-flv-disabled:disabled="False"
os-flv-ext-data:ephemeral="0"
disk="1"
id="1"
name="example"
os-flavor-access:is_public="True"
ram="512"
rxtx_factor="1.0"
swap=""
vcpus="1"')
provider.create
expect(provider.exists?).to be_truthy
end
end
context 'with project' do
before do
flavor_attrs.merge!(
:project => '3073e17b-fb7f-4524-bdcd-c54bc70e9da9'
)
end
it 'creates flavor' do
expect(provider.class).to receive(:openstack)
.with('flavor', 'create', '--format', 'shell', ['example', '--public', '--id', '1', '--ram', '512', '--disk', '1', '--vcpus', '1'])
.and_return('os-flv-disabled:disabled="False"
os-flv-ext-data:ephemeral="0"
disk="1"
id="1"
name="example"
os-flavor-access:is_public="True"
ram="512"
rxtx_factor="1.0"
swap=""
vcpus="1"')
expect(provider.class).to receive(:openstack)
.with('flavor', 'set', ['example', '--project', '3073e17b-fb7f-4524-bdcd-c54bc70e9da9'])
expect(provider.class).to receive(:openstack)
.with('project', 'show', '--format', 'shell', '3073e17b-fb7f-4524-bdcd-c54bc70e9da9')
.and_return('enabled="True"
name="admin"
id="3073e17b-fb7f-4524-bdcd-c54bc70e9da9"
domain_id="domain_one_id"
')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.project).to eq('3073e17b-fb7f-4524-bdcd-c54bc70e9da9')
expect(provider.project_name).to eq('admin')
end
end
context 'with project_name' do
before do
flavor_attrs.merge!(
:project_name => 'admin'
)
end
it 'creates flavor with project_name' do
expect(provider.class).to receive(:openstack)
.with('flavor', 'create', '--format', 'shell', ['example', '--public', '--id', '1', '--ram', '512', '--disk', '1', '--vcpus', '1'])
.and_return('os-flv-disabled:disabled="False"
os-flv-ext-data:ephemeral="0"
disk="1"
id="1"
name="example"
os-flavor-access:is_public="True"
ram="512"
rxtx_factor="1.0"
swap=""
vcpus="1"')
expect(provider.class).to receive(:openstack)
.with('flavor', 'set', ['example', '--project', 'admin'])
expect(provider.class).to receive(:openstack)
.with('project', 'show', '--format', 'shell', 'admin')
.and_return('enabled="True"
name="admin"
id="3073e17b-fb7f-4524-bdcd-c54bc70e9da9"
domain_id="domain_one_id"
')
provider.create
expect(provider.exists?).to be_truthy
expect(provider.project).to eq('3073e17b-fb7f-4524-bdcd-c54bc70e9da9')
expect(provider.project_name).to eq('admin')
end
end
end
describe '#destroy' do
it 'removes flavor' do
expect(described_class).to receive(:openstack)
.with('flavor', 'delete', '1')
provider.instance_variable_set(:@property_hash, flavor_attrs)
provider.destroy
expect(provider.exists?).to be_falsey
end
end
describe '#flush' do
context '.project' do
it 'updates flavor' do
expect(provider.class).to receive(:openstack)
.with('flavor', 'set', ['example', '--project', '3073e17b-fb7f-4524-bdcd-c54bc70e9da9'])
provider.project = '3073e17b-fb7f-4524-bdcd-c54bc70e9da9'
provider.flush
end
end
context '.project_name' do
it 'updates flavor' do
expect(provider.class).to receive(:openstack)
.with('flavor', 'set', ['example', '--project', 'admin'])
provider.project_name = 'admin'
provider.flush
end
end
end
end
end