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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/provider/network_device'
Puppet::Type.type(:vlan).provide :test, :parent => Puppet::Provider::NetworkDevice do
mk_resource_methods
def self.lookup(device_url, name)
end
end
provider_class = Puppet::Type.type(:vlan).provider(:test)
describe provider_class do
before do
@resource = stub("resource", :name => "test")
@provider = provider_class.new(@resource)
end
it "should be able to prefetch instances from the device" do
provider_class.should respond_to(:prefetch)
end
it "should have an instances method" do
provider_class.should respond_to(:instances)
end
describe "when prefetching" do
before do
@resource = stub_everything 'resource'
@resources = {"200" => @resource}
provider_class.stubs(:lookup)
end
it "should lookup an entry for each passed resource" do
provider_class.expects(:lookup).with(nil, "200").returns nil
provider_class.stubs(:new)
@resource.stubs(:provider=)
provider_class.prefetch(@resources)
end
describe "resources that do not exist" do
it "should create a provider with :ensure => :absent" do
provider_class.stubs(:lookup).returns(nil)
provider_class.expects(:new).with(:ensure => :absent).returns "myprovider"
@resource.expects(:provider=).with("myprovider")
provider_class.prefetch(@resources)
end
end
describe "resources that exist" do
it "should create a provider with the results of the find and ensure at present" do
provider_class.stubs(:lookup).returns({ :name => "200", :description => "myvlan"})
provider_class.expects(:new).with(:name => "200", :description => "myvlan", :ensure => :present).returns "myprovider"
@resource.expects(:provider=).with("myprovider")
provider_class.prefetch(@resources)
end
end
end
describe "when being initialized" do
describe "with a hash" do
before do
@resource_class = mock 'resource_class'
provider_class.stubs(:resource_type).returns @resource_class
@property_class = stub 'property_class', :array_matching => :all, :superclass => Puppet::Property
@resource_class.stubs(:attrclass).with(:one).returns(@property_class)
@resource_class.stubs(:valid_parameter?).returns true
end
it "should store a copy of the hash as its vlan_properties" do
instance = provider_class.new(:one => :two)
instance.former_properties.should == {:one => :two}
end
end
end
describe "when an instance" do
before do
@instance = provider_class.new
@property_class = stub 'property_class', :array_matching => :all, :superclass => Puppet::Property
@resource_class = stub 'resource_class', :attrclass => @property_class, :valid_parameter? => true, :validproperties => [:description]
provider_class.stubs(:resource_type).returns @resource_class
end
it "should have a method for creating the instance" do
@instance.should respond_to(:create)
end
it "should have a method for removing the instance" do
@instance.should respond_to(:destroy)
end
it "should indicate when the instance already exists" do
@instance = provider_class.new(:ensure => :present)
@instance.exists?.should be_true
end
it "should indicate when the instance does not exist" do
@instance = provider_class.new(:ensure => :absent)
@instance.exists?.should be_false
end
describe "is being flushed" do
it "should flush properties" do
@instance = provider_class.new(:ensure => :present, :name => "200", :description => "myvlan")
@instance.flush
@instance.properties.should be_empty
end
end
describe "is being created" do
before do
@rclass = mock 'resource_class'
@rclass.stubs(:validproperties).returns([:description])
@resource = stub_everything 'resource'
@resource.stubs(:class).returns @rclass
@resource.stubs(:should).returns nil
@instance.stubs(:resource).returns @resource
end
it "should set its :ensure value to :present" do
@instance.create
@instance.properties[:ensure].should == :present
end
it "should set all of the other attributes from the resource" do
@resource.expects(:should).with(:description).returns "myvlan"
@instance.create
@instance.properties[:description].should == "myvlan"
end
end
describe "is being destroyed" do
it "should set its :ensure value to :absent" do
@instance.destroy
@instance.properties[:ensure].should == :absent
end
end
end
end
|