@@ -27,187 +27,150 @@ class NetUser
2727 end
2828end
2929
30- describe Chef ::Provider ::User ::Windows , "set_options" do
30+ describe Chef ::Provider ::User ::Windows do
3131 before ( :each ) do
32- @node = mock ( "Chef::Node" , :null_object => true )
33- @new_resource = mock ( "Chef::Resource::User" ,
34- :null_object => true ,
35- :username => "adam" ,
36- :comment => "Adam Jacob" ,
37- :uid => 1000 ,
38- :gid => 1000 ,
39- :home => "/home/adam" ,
40- :shell => "/usr/bin/zsh" ,
41- :password => "abracadabra" ,
42- :updated => nil
43- )
44- @current_resource = mock ( "Chef::Resource::User" ,
45- :null_object => true ,
46- :username => "adam" ,
47- :comment => "Adam Jacob" ,
48- :uid => 1000 ,
49- :gid => 1000 ,
50- :home => "/home/adam" ,
51- :shell => "/usr/bin/zsh" ,
52- :password => "abracadabra" ,
53- :updated => nil
54- )
55- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
56- :null_object => true
57- )
32+ @node = Chef ::Node . new
33+ @new_resource = Chef ::Resource ::User . new ( "monkey" )
34+ @current_resource = Chef ::Resource ::User . new ( "monkey" )
35+
36+ @net_user = mock ( "Chef::Util::Windows::NetUser" )
5837 Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
38+
5939 @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
6040 @provider . current_resource = @current_resource
6141 end
6242
63- field_list = {
64- 'comment' => 'full_name' ,
65- 'home' => 'home_dir' ,
66- 'gid' => 'primary_group_id' ,
67- 'uid' => 'user_id' ,
68- 'shell' => 'script_path' ,
69- 'password' => 'password'
70- }
71- field_list . each do |attribute , option |
72- it "should check for differences in #{ attribute } between the new and current resources" do
73- @current_resource . should_receive ( attribute )
74- @new_resource . should_receive ( attribute )
75- @provider . set_options
43+ describe "when comparing the user's current attributes to the desired attributes" do
44+ before do
45+ @new_resource . comment "Adam Jacob"
46+ @new_resource . uid 1000
47+ @new_resource . gid 1000
48+ @new_resource . home "/home/adam"
49+ @new_resource . shell "/usr/bin/zsh"
50+ @new_resource . password "abracadabra"
51+
52+ @provider . current_resource = @new_resource . clone
7653 end
77-
78- it "should set the option for #{ attribute } if the new resources #{ attribute } is not null" do
79- @new_resource . stub! ( attribute ) . and_return ( "hola" )
80- @provider . set_options . should eql ( { :name , @new_resource . username , option . to_sym , @new_resource . send ( attribute ) } )
54+ describe "and the attributes match" do
55+ it "doesn't set the comment field to be updated" do
56+ @provider . set_options . should_not have_key ( :full_name )
57+ end
58+
59+ it "doesn't set the home directory to be updated" do
60+ @provider . set_options . should_not have_key ( :home_dir )
61+ end
62+
63+ it "doesn't set the group id to be updated" do
64+ @provider . set_options . should_not have_key ( :primary_group_id )
65+ end
66+
67+ it "doesn't set the user id to be updated" do
68+ @provider . set_options . should_not have_key ( :user_id )
69+ end
70+
71+ it "doesn't set the shell to be updated" do
72+ @provider . set_options . should_not have_key ( :script_path )
73+ end
74+
75+ it "doesn't set the password to be updated" do
76+ @provider . set_options . should_not have_key ( :password )
77+ end
78+
8179 end
82- end
83- end
80+
81+ describe "and the attributes do not match" do
82+ before do
83+ @current_resource = Chef ::Resource ::User . new ( "adam" )
84+ @current_resource . comment "Adam Jacob-foo"
85+ @current_resource . uid 1111
86+ @current_resource . gid 1111
87+ @current_resource . home "/home/adam-foo"
88+ @current_resource . shell "/usr/bin/tcsh"
89+ @current_resource . password "foobarbaz"
90+ @provider . current_resource = @current_resource
91+ end
8492
85- describe Chef ::Provider ::User ::Windows , "create_user" do
86- before ( :each ) do
87- @node = mock ( "Chef::Node" , :null_object => true )
88- @new_resource = mock ( "Chef::Resource::User" , :null_object => true )
89- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
90- :null_object => true
91- )
92- Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
93- @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
94- @provider . stub! ( :set_options ) . and_return ( { :name , "monkey" } )
95- @net_user . stub! ( :add )
96- end
93+ it "marks the full_name field to be updated" do
94+ @provider . set_options [ :full_name ] . should == "Adam Jacob"
95+ end
9796
98- it "should call @net_user.add with the return of set_options" do
99- @net_user . should_receive ( :add ) . with ( { :name , "monkey" } )
100- @provider . create_user
101- end
102- end
97+ it "marks the home_dir attribute to be updated" do
98+ @provider . set_options [ :home_dir ] . should == '/home/adam'
99+ end
103100
104- describe Chef :: Provider :: User :: Windows , "manage_user " do
105- before ( :each ) do
106- @node = mock ( "Chef::Node" , :null_object => true )
107- @new_resource = mock ( "Chef::Resource::User" , :null_object => true )
108- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
109- :null_object => true
110- )
111- Chef :: Util :: Windows :: NetUser . stub! ( :new ) . and_return ( @net_user )
112- @provider = Chef :: Provider :: User :: Windows . new ( @node , @new_resource )
113- @provider . stub! ( : set_options) . and_return ( { :name , "monkey" } )
114- @net_user . stub! ( :update )
115- end
116-
117- it "should call @net_user.update with the return of set_options" do
118- @net_user . should_receive ( :update ) . with ( { :name , "monkey" } )
119- @provider . manage_user
101+ it "marks the primary_group_id attribute to be updated " do
102+ @provider . set_options [ :primary_group_id ] . should == 1000
103+ end
104+
105+ it "marks the user_id attribute to be updated" do
106+ @provider . set_options [ :user_id ] . should == 1000
107+ end
108+
109+ it "marks the script_path attribute to be updated" do
110+ @provider . set_options [ :script_path ] . should == '/usr/bin/zsh'
111+ end
112+
113+ it "marks the password attribute to be updated" do
114+ @provider . set_options [ :password ] . should == 'abracadabra'
115+ end
116+ end
120117 end
121- end
122118
123- describe Chef ::Provider ::User ::Windows , "remove_user" do
124- before ( :each ) do
125- @node = mock ( "Chef::Node" , :null_object => true )
126- @new_resource = mock ( "Chef::Resource::User" ,
127- :null_object => true ,
128- :username => "adam"
129- )
130- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
131- :null_object => true
132- )
133- Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
134- @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
135- @net_user . stub! ( :delete )
119+ describe "when creating the user" do
120+ it "should call @net_user.add with the return of set_options" do
121+ @provider . stub! ( :set_options ) . and_return ( :name => "monkey" )
122+ @net_user . should_receive ( :add ) . with ( :name => "monkey" )
123+ @provider . create_user
124+ end
136125 end
126+
127+ describe "manage_user" do
128+ before ( :each ) do
129+ @provider . stub! ( :set_options ) . and_return ( :name => "monkey" )
130+ end
137131
138- it "should call @net_user.delete" do
139- @net_user . should_receive ( :delete )
140- @provider . remove_user
132+ it "should call @net_user.update with the return of set_options" do
133+ @net_user . should_receive ( :update ) . with ( :name => "monkey" )
134+ @provider . manage_user
135+ end
141136 end
142- end
143137
144- describe Chef ::Provider ::User ::Windows , "check_lock" do
145- before ( :each ) do
146- @node = mock ( "Chef::Node" , :null_object => true )
147- @new_resource = mock ( "Chef::Resource::User" , :null_object => true )
148- @current_resource = mock ( "Chef::Resource::User" ,
149- :null_object => true ,
150- :password => "abracadabra"
151- )
152- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
153- :null_object => true
154- )
155- Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
156- @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
157- @provider . current_resource = @current_resource
138+ describe "when removing the user" do
139+ it "should call @net_user.delete" do
140+ @net_user . should_receive ( :delete )
141+ @provider . remove_user
142+ end
158143 end
159144
160- it "should return true if user is locked" do
161- @net_user . stub! ( :check_enabled ) . and_return ( true )
162- @provider . check_lock . should eql ( true )
163- end
145+ describe "when checking if the user is locked" do
146+ before ( :each ) do
147+ @current_resource . password "abracadabra"
148+ end
164149
165- it "should return false if user is not locked" do
166- @net_user . stub! ( :check_enabled ) . and_return ( false )
167- @provider . check_lock . should eql ( false )
168- end
169- end
150+ it "should return true if user is locked" do
151+ @net_user . stub! ( :check_enabled ) . and_return ( true )
152+ @provider . check_lock . should eql ( true )
153+ end
170154
171- describe Chef ::Provider ::User ::Windows , "lock_user" do
172- before ( :each ) do
173- @node = mock ( "Chef::Node" , :null_object => true )
174- @new_resource = mock ( "Chef::Resource::User" ,
175- :null_object => true ,
176- :username => "adam"
177- )
178- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
179- :null_object => true
180- )
181- Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
182- @net_user . stub! ( :check_enabled ) . and_return ( true )
183- @net_user . stub! ( :disable_account )
184- @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
185- end
186-
187- it "should call @net_user.disable_account" do
188- @net_user . should_receive ( :disable_account )
189- @provider . lock_user
155+ it "should return false if user is not locked" do
156+ @net_user . stub! ( :check_enabled ) . and_return ( false )
157+ @provider . check_lock . should eql ( false )
158+ end
190159 end
191- end
192160
193- describe Chef ::Provider ::User ::Windows , "unlock_user" do
194- before ( :each ) do
195- @node = mock ( "Chef::Node" , :null_object => true )
196- @new_resource = mock ( "Chef::Resource::User" ,
197- :null_object => true ,
198- :username => "adam"
199- )
200- @net_user = mock ( "Chef::Util::Windows::NetUser" ,
201- :null_object => true
202- )
203- Chef ::Util ::Windows ::NetUser . stub! ( :new ) . and_return ( @net_user )
204- @net_user . stub! ( :check_enabled ) . and_return ( false )
205- @net_user . stub! ( :enable_account )
206- @provider = Chef ::Provider ::User ::Windows . new ( @node , @new_resource )
161+ describe "locking the user" do
162+ it "should call @net_user.disable_account" do
163+ @net_user . stub! ( :check_enabled ) . and_return ( true )
164+ @net_user . should_receive ( :disable_account )
165+ @provider . lock_user
166+ end
207167 end
208-
209- it "should call @net_user.enable_account" do
210- @net_user . should_receive ( :enable_account )
211- @provider . unlock_user
168+
169+ describe "unlocking the user" do
170+ it "should call @net_user.enable_account" do
171+ @net_user . stub! ( :check_enabled ) . and_return ( false )
172+ @net_user . should_receive ( :enable_account )
173+ @provider . unlock_user
174+ end
212175 end
213- end
176+ end
0 commit comments