You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
4.1 KiB
171 lines
4.1 KiB
# |
|
# these tests are a little concerning b/c they are hacking around the |
|
# modulepath, so these tests will not catch issues that may eventually arise |
|
# related to loading these plugins. |
|
# I could not, for the life of me, figure out how to programatcally set the modulepath |
|
$LOAD_PATH.push( |
|
File.join( |
|
File.dirname(__FILE__), |
|
'..', |
|
'..', |
|
'..', |
|
'fixtures', |
|
'modules', |
|
'inifile', |
|
'lib') |
|
) |
|
require 'spec_helper' |
|
provider_class = Puppet::Type.type(:openstack_config).provider(:ini_setting) |
|
describe provider_class do |
|
|
|
let(:properties) do |
|
{ |
|
:name => 'DEFAULT/foo', |
|
:value => 'bar', |
|
:ensure_absent_val => 'some_value', |
|
:ensure => :present, |
|
} |
|
end |
|
|
|
let(:transform_properties) do |
|
{ |
|
:name => 'DEFAULT/foo', |
|
:value => 'bar', |
|
:transform_to => 'upper', |
|
:ensure_absent_val => 'some_value', |
|
:ensure => :present, |
|
} |
|
end |
|
|
|
let(:immutable_properties) do |
|
{ |
|
:name => 'DEFAULT/foo', |
|
:value => '<_IMMUTABLE_>', |
|
:ensure => :present, |
|
} |
|
end |
|
|
|
let(:type) do |
|
Puppet::Type.newtype(:test_config) do |
|
newparam(:name, :namevar => true) |
|
newparam(:ensure) |
|
newproperty(:value) |
|
newparam(:ensure_absent_val) |
|
end |
|
end |
|
|
|
let(:transform_type) do |
|
Puppet::Type.newtype(:test_config) do |
|
newparam(:name, :namevar => true) |
|
newparam(:ensure) |
|
newproperty(:value) |
|
newparam(:ensure_absent_val) |
|
newparam(:transform_to) |
|
end |
|
end |
|
|
|
let(:immutable_type) do |
|
Puppet::Type.newtype(:test_config) do |
|
newparam(:name, :namevar => true) |
|
newparam(:ensure) |
|
newproperty(:value) |
|
newparam(:ensure_absent_val) |
|
end |
|
end |
|
|
|
let(:resource) do |
|
resource = type.new(properties) |
|
resource |
|
end |
|
|
|
let(:transform_resource) do |
|
resource = transform_type.new(transform_properties) |
|
resource |
|
end |
|
|
|
let(:immutable_resource) do |
|
resource = immutable_type.new(immutable_properties) |
|
resource |
|
end |
|
|
|
context '#exists?' do |
|
it 'ensure to present' do |
|
child_conf = Class.new(provider_class) do |
|
def self.file_path |
|
'/some/file/path' |
|
end |
|
end |
|
provider = child_conf.new(resource) |
|
provider.exists? |
|
expect(resource[:ensure]).to eq :present |
|
end |
|
|
|
it 'ensure to absent' do |
|
child_conf = Class.new(provider_class) do |
|
def self.file_path |
|
'/some/file/path' |
|
end |
|
end |
|
provider = child_conf.new(resource) |
|
resource[:ensure_absent_val] = 'bar' |
|
provider.exists? |
|
expect(resource[:ensure]).to eq :absent |
|
end |
|
end |
|
|
|
context 'transform_to' do |
|
it 'transforms a property' do |
|
child_conf = Class.new(provider_class) do |
|
def self.file_path |
|
'/some/file/path' |
|
end |
|
|
|
def to_upper(value) |
|
value.upcase! |
|
end |
|
end |
|
provider = child_conf.new(transform_resource) |
|
provider.exists? |
|
provider.transform(:to, transform_resource[:value]) |
|
expect(transform_resource[:value]).to eq 'BAR' |
|
end |
|
|
|
context 'immutable' do |
|
# could not set fact using the classic let(:facts) idiom. |
|
it 'ensure to no change when value set' do |
|
child_conf = Class.new(provider_class) do |
|
def self.file_path |
|
'/some/file/path' |
|
end |
|
# current value |
|
def value |
|
'foo' |
|
end |
|
end |
|
provider = child_conf.new(immutable_resource) |
|
provider.exists? |
|
expect(immutable_resource[:value]).to eq 'foo' |
|
expect(immutable_resource[:ensure]).to eq :present |
|
end |
|
|
|
it 'ensure to no change when value unset' do |
|
child_conf = Class.new(provider_class) do |
|
def self.file_path |
|
'/some/file/path' |
|
end |
|
# current value |
|
def value |
|
[nil] |
|
end |
|
end |
|
provider = child_conf.new(immutable_resource) |
|
|
|
provider.exists? |
|
expect(immutable_resource[:value]).to eq nil |
|
expect(immutable_resource[:ensure]).to eq :absent |
|
end |
|
end |
|
|
|
end |
|
|
|
end
|
|
|