1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
require 'puppet'
require 'puppet/provider/murano_application/murano'
require 'tempfile'
provider_class = Puppet::Type.type(:murano_application).provider(:murano)
describe provider_class do
let :app_attrs do
{
:name => 'io.murano',
:package_path => '/tmp/io.murano.zip',
:ensure => 'present',
:public => true,
:exists_action => 'u',
}
end
let :resource do
Puppet::Type::Murano_application.new(app_attrs)
end
let :provider do
provider_class.new(resource)
end
shared_examples 'murano_application' do
describe '#create' do
it 'should create application' do
expect(provider).to receive(:auth_murano).with("package-import", ['/tmp/io.murano.zip', '--is-public'] )
.and_return('')
provider.create
end
end
describe '#flush' do
it 'should flush application' do
expect(provider).to receive(:auth_murano).with("package-import", ['/tmp/io.murano.zip', '--is-public', '--exists-action', 'u'] )
.and_return('')
provider.flush
end
end
describe '#destroy' do
it 'should destroy application' do
resource[:ensure] = :absent
expect(provider).to receive(:auth_murano).with("package-delete", 'io.murano')
.and_return('')
provider.destroy
end
end
describe '#instances' do
it 'finds packages' do
expect(provider.class).to receive(:auth_murano).with("package-list")
.and_return("+----------------------------------+--------------------+----------------------------------------+---------------+-----------+\n| ID | Name | FQN | Author | Is Public |\n+----------------------------------+--------------------+----------------------------------------+---------------+-----------+\n| 9a23e4aea548462d82b66f2aee0f196e | Core library | io.murano | murano.io | True |\n+----------------------------------+--------------------+----------------------------------------+---------------+-----------+\n")
instances = provider_class.instances
expect(instances.count).to eq(1)
expect(instances[0].name).to eq('io.murano')
expect(instances[0].public).to eq('true')
expect(instances[0].package_path).to eq('/var/cache/murano/meta/io.murano.zip')
expect(instances[0].exists_action).to eq('s')
end
end
end
it_behaves_like('murano_application')
end
|