1
require File.expand_path(File.join(File.dirname(__FILE__), '../../../lib/puppet/util'))
4
# A baseclass for the faketypes.
8
attr_accessor :name, :realresource
12
def self.key_attributes
13
@realresource.key_attributes
16
def self.validproperties
17
Puppet::Type.type(@name).validproperties
20
def self.validproperty?(name)
21
Puppet::Type.type(@name).validproperty?(name)
25
"Fake#{@name.to_s.capitalize}"
29
if @realresource.attrtype(param) == :property
37
param = symbolize(param)
38
raise Puppet::DevError, "Invalid attribute #{param} for #{@realresource.name}" unless @realresource.valid_parameter?(param)
39
if @realresource.attrtype(param) == :property
40
@should[param] = value
42
@params[param] = value
47
@realresource = Puppet::Type.type(self.class.name)
48
raise "Could not find type #{self.class.name}" unless @realresource
52
self[@realresource.key_attributes.first] = name
56
"#{self.class.to_s.sub(/.+::/, '')}(#{super()})"
69
[@is, @should].each do |h|
83
attr_accessor :resource
85
attr_accessor :name, :resource_type, :methods
88
# A very low number, so these never show up as defaults via the standard
94
# Set up methods to fake things
95
def self.apimethods(*ary)
96
@resource_type.validproperties.each do |property|
97
ary << property unless ary.include? property
109
@calls = Hash.new do |hash, key|
118
def self.supports_parameter?(param)
130
def initialize(resource)
135
self.class.resource_type.validproperties.inject({}) do |props, name|
136
props[name] = self.send(name) || :absent
142
class FakeParsedProvider < FakeProvider
145
instance_variables.each do |v|
147
if val = self.send(v)
157
method = n.to_s + "="
158
send(method, v) if respond_to? method
166
def fakeresource(type, name, options = {})
167
type = type.intern if type.is_a? String
168
unless @@fakeresources.include? type
169
@@fakeresources[type] = Class.new(FakeModel)
170
@@fakeresources[type].name = type
172
resource = Puppet::Type.type(type)
173
raise("Could not find type #{type}") unless resource
174
@@fakeresources[type].realresource = resource
177
obj = @@fakeresources[type].new(name)
178
options.each do |name, val|
184
module_function :fakeresource
186
def fakeprovider(type, resource)
187
type = type.intern if type.is_a? String
188
unless @@fakeproviders.include? type
189
@@fakeproviders[type] = Class.new(FakeModel) do
194
@@fakeproviders[type].new(resource)
197
module_function :fakeprovider