puppet 2.6.1 → 2.6.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +51 -195
- data/LICENSE +2 -2
- data/conf/suse/puppet.spec +13 -10
- data/install.rb +7 -13
- data/lib/puppet.rb +1 -1
- data/lib/puppet/application.rb +17 -21
- data/lib/puppet/defaults.rb +1 -1
- data/lib/puppet/dsl.rb +0 -4
- data/lib/puppet/dsl/resource_type_api.rb +16 -10
- data/lib/puppet/external/event-loop/event-loop.rb +15 -11
- data/lib/puppet/feature/base.rb +2 -1
- data/lib/puppet/feature/rails.rb +1 -3
- data/lib/puppet/network/http/webrick/rest.rb +1 -0
- data/lib/puppet/network/http_pool.rb +0 -12
- data/lib/puppet/parser/ast/function.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +1 -5
- data/lib/puppet/parser/functions/extlookup.rb +1 -1
- data/lib/puppet/parser/functions/versioncmp.rb +3 -3
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_support.rb +4 -2
- data/lib/puppet/parser/resource.rb +8 -0
- data/lib/puppet/parser/type_loader.rb +50 -48
- data/lib/puppet/provider/nameservice.rb +1 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -1
- data/lib/puppet/provider/service/freebsd.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +16 -9
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +7 -0
- data/lib/puppet/provider/user/hpux.rb +0 -1
- data/lib/puppet/provider/user/user_role_add.rb +21 -9
- data/lib/puppet/provider/user/useradd.rb +44 -3
- data/lib/puppet/rails.rb +3 -3
- data/lib/puppet/reference/configuration.rb +7 -12
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +10 -9
- data/lib/puppet/reference/type.rb +6 -6
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +1 -1
- data/lib/puppet/sslcertificates/ca.rb +4 -10
- data/lib/puppet/type.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/tidy.rb +1 -0
- data/lib/puppet/type/user.rb +55 -0
- data/lib/puppet/type/whit.rb +4 -0
- data/lib/puppet/util.rb +8 -0
- data/lib/puppet/util/metric.rb +38 -9
- data/lib/puppet/util/rdoc/parser.rb +10 -7
- data/lib/puppet/util/reference.rb +4 -4
- data/lib/puppet/util/zaml.rb +0 -1
- data/spec/fixtures/yaml/report0.25.x.yaml +64 -0
- data/spec/fixtures/yaml/report2.6.x.yaml +190 -0
- data/spec/integration/application/doc_spec.rb +55 -0
- data/spec/integration/defaults_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +21 -0
- data/spec/integration/parser/ruby_manifest_spec.rb +128 -0
- data/spec/lib/puppet_spec/files.rb +1 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/application_spec.rb +16 -25
- data/spec/unit/dsl/resource_type_api_spec.rb +32 -12
- data/spec/unit/indirector/node/active_record_spec.rb +0 -1
- data/spec/unit/parser/ast/function_spec.rb +14 -4
- data/spec/unit/parser/lexer_spec.rb +8 -0
- data/spec/unit/parser/parser_spec.rb +0 -9
- data/spec/unit/parser/type_loader_spec.rb +3 -16
- data/spec/unit/provider/service/launchd_spec.rb +8 -5
- data/spec/unit/provider/user/user_role_add_spec.rb +18 -1
- data/spec/unit/provider/user/useradd_spec.rb +19 -0
- data/spec/unit/rails_spec.rb +10 -4
- data/spec/unit/reports/rrdgraph_spec.rb +31 -0
- data/spec/unit/reports/tagmail_spec.rb +1 -0
- data/spec/unit/sslcertificates/ca_spec.rb +110 -0
- data/spec/unit/type/user_spec.rb +19 -1
- data/spec/unit/type/whit_spec.rb +11 -0
- data/spec/unit/type_spec.rb +7 -0
- data/spec/unit/util/rdoc/parser_spec.rb +18 -14
- data/spec/unit/util/zaml_spec.rb +2 -1
- metadata +11 -6
- data/conf/suse/ruby-env.patch +0 -17
- data/test/certmgr/ca.rb +0 -87
data/spec/spec_helper.rb
CHANGED
@@ -20,6 +20,7 @@ module PuppetSpec
|
|
20
20
|
FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR)
|
21
21
|
end
|
22
22
|
|
23
|
+
require 'spec/lib/puppet_spec/files'
|
23
24
|
require 'monkey_patches/alias_should_to_must'
|
24
25
|
require 'monkey_patches/add_confine_and_runnable_to_rspec_dsl'
|
25
26
|
require 'monkey_patches/publicize_methods'
|
@@ -191,24 +191,17 @@ describe Puppet::Application do
|
|
191
191
|
Puppet.settings.stubs(:optparse_addargs).returns([])
|
192
192
|
end
|
193
193
|
|
194
|
-
it "should create a new option parser when needed" do
|
195
|
-
option_parser = stub "option parser"
|
196
|
-
option_parser.stubs(:on)
|
197
|
-
OptionParser.expects(:new).returns(option_parser).once
|
198
|
-
@app.option_parser.should == option_parser
|
199
|
-
@app.option_parser.should == option_parser
|
200
|
-
end
|
201
|
-
|
202
194
|
it "should pass the banner to the option parser" do
|
203
195
|
option_parser = stub "option parser"
|
204
196
|
option_parser.stubs(:on)
|
197
|
+
option_parser.stubs(:parse!)
|
205
198
|
@app.class.instance_eval do
|
206
199
|
banner "banner"
|
207
200
|
end
|
208
201
|
|
209
202
|
OptionParser.expects(:new).with("banner").returns(option_parser)
|
210
203
|
|
211
|
-
@app.
|
204
|
+
@app.parse_options
|
212
205
|
end
|
213
206
|
|
214
207
|
it "should get options from Puppet.settings.optparse_addargs" do
|
@@ -219,15 +212,14 @@ describe Puppet::Application do
|
|
219
212
|
|
220
213
|
it "should add Puppet.settings options to OptionParser" do
|
221
214
|
Puppet.settings.stubs(:optparse_addargs).returns( [["--option","-o", "Funny Option"]])
|
222
|
-
|
223
|
-
@app.
|
224
|
-
|
215
|
+
Puppet.settings.expects(:handlearg).with("--option", 'true')
|
216
|
+
@app.command_line.stubs(:args).returns(["--option"])
|
225
217
|
@app.parse_options
|
226
218
|
end
|
227
219
|
|
228
220
|
it "should ask OptionParser to parse the command-line argument" do
|
229
221
|
@app.command_line.stubs(:args).returns(%w{ fake args })
|
230
|
-
|
222
|
+
OptionParser.any_instance.expects(:parse!).with(%w{ fake args })
|
231
223
|
|
232
224
|
@app.parse_options
|
233
225
|
end
|
@@ -258,31 +250,30 @@ describe Puppet::Application do
|
|
258
250
|
|
259
251
|
describe "when dealing with an argument not declared directly by the application" do
|
260
252
|
it "should pass it to handle_unknown if this method exists" do
|
261
|
-
Puppet.settings.stubs(:optparse_addargs).returns([["--not-handled"]])
|
262
|
-
@app.option_parser.stubs(:on).yields("value")
|
253
|
+
Puppet.settings.stubs(:optparse_addargs).returns([["--not-handled", :REQUIRED]])
|
263
254
|
|
264
255
|
@app.expects(:handle_unknown).with("--not-handled", "value").returns(true)
|
265
|
-
|
256
|
+
@app.command_line.stubs(:args).returns(["--not-handled", "value"])
|
266
257
|
@app.parse_options
|
267
258
|
end
|
268
259
|
|
269
260
|
it "should pass it to Puppet.settings if handle_unknown says so" do
|
270
|
-
Puppet.settings.stubs(:optparse_addargs).returns([["--topuppet"]])
|
271
|
-
@app.option_parser.stubs(:on).yields("value")
|
261
|
+
Puppet.settings.stubs(:optparse_addargs).returns([["--topuppet", :REQUIRED]])
|
272
262
|
|
273
263
|
@app.stubs(:handle_unknown).with("--topuppet", "value").returns(false)
|
274
264
|
|
275
265
|
Puppet.settings.expects(:handlearg).with("--topuppet", "value")
|
266
|
+
@app.command_line.stubs(:args).returns(["--topuppet", "value"])
|
276
267
|
@app.parse_options
|
277
268
|
end
|
278
269
|
|
279
270
|
it "should pass it to Puppet.settings if there is no handle_unknown method" do
|
280
|
-
Puppet.settings.stubs(:optparse_addargs).returns([["--topuppet"]])
|
281
|
-
@app.option_parser.stubs(:on).yields("value")
|
271
|
+
Puppet.settings.stubs(:optparse_addargs).returns([["--topuppet", :REQUIRED]])
|
282
272
|
|
283
273
|
@app.stubs(:respond_to?).returns(false)
|
284
274
|
|
285
275
|
Puppet.settings.expects(:handlearg).with("--topuppet", "value")
|
276
|
+
@app.command_line.stubs(:args).returns(["--topuppet", "value"])
|
286
277
|
@app.parse_options
|
287
278
|
end
|
288
279
|
|
@@ -310,7 +301,7 @@ describe Puppet::Application do
|
|
310
301
|
|
311
302
|
it "should exit if OptionParser raises an error" do
|
312
303
|
$stderr.stubs(:puts)
|
313
|
-
|
304
|
+
OptionParser.any_instance.stubs(:parse!).raises(OptionParser::ParseError.new("blah blah"))
|
314
305
|
|
315
306
|
@app.expects(:exit)
|
316
307
|
|
@@ -478,7 +469,7 @@ describe Puppet::Application do
|
|
478
469
|
@app.class.option("--[no-]test3","-t") do
|
479
470
|
end
|
480
471
|
|
481
|
-
@app.
|
472
|
+
@app.parse_options
|
482
473
|
end
|
483
474
|
|
484
475
|
it "should pass a block that calls our defined method" do
|
@@ -490,7 +481,7 @@ describe Puppet::Application do
|
|
490
481
|
@app.class.option("--test4","-t") do
|
491
482
|
end
|
492
483
|
|
493
|
-
@app.
|
484
|
+
@app.parse_options
|
494
485
|
end
|
495
486
|
end
|
496
487
|
|
@@ -501,7 +492,7 @@ describe Puppet::Application do
|
|
501
492
|
|
502
493
|
@app.class.option("--test4","-t")
|
503
494
|
|
504
|
-
@app.
|
495
|
+
@app.parse_options
|
505
496
|
end
|
506
497
|
|
507
498
|
it "should give to OptionParser a block that adds the the value to the options array" do
|
@@ -512,7 +503,7 @@ describe Puppet::Application do
|
|
512
503
|
|
513
504
|
@app.class.option("--test4","-t")
|
514
505
|
|
515
|
-
@app.
|
506
|
+
@app.parse_options
|
516
507
|
end
|
517
508
|
end
|
518
509
|
end
|
@@ -4,13 +4,14 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
4
4
|
|
5
5
|
require 'puppet/dsl/resource_type_api'
|
6
6
|
|
7
|
-
class DSLAPITester
|
8
|
-
include Puppet::DSL::ResourceTypeAPI
|
9
|
-
end
|
10
|
-
|
11
7
|
describe Puppet::DSL::ResourceTypeAPI do
|
12
|
-
|
13
|
-
|
8
|
+
# Run the given block in the context of a new ResourceTypeAPI
|
9
|
+
# object.
|
10
|
+
def test_api_call(&block)
|
11
|
+
Thread.current[:known_resource_types] = Puppet::Resource::TypeCollection.new(:env)
|
12
|
+
Puppet::DSL::ResourceTypeAPI.new.instance_eval(&block)
|
13
|
+
ensure
|
14
|
+
Thread.current[:known_resource_types] = nil
|
14
15
|
end
|
15
16
|
|
16
17
|
[:definition, :node, :hostclass].each do |type|
|
@@ -18,29 +19,48 @@ describe Puppet::DSL::ResourceTypeAPI do
|
|
18
19
|
it "should be able to create a #{type}" do
|
19
20
|
newtype = Puppet::Resource::Type.new(:hostclass, "foo")
|
20
21
|
Puppet::Resource::Type.expects(:new).with { |t, n, args| t == type }.returns newtype
|
21
|
-
|
22
|
+
test_api_call { send(method, "myname") }
|
22
23
|
end
|
23
24
|
|
24
25
|
it "should use the provided name when creating a #{type}" do
|
25
26
|
type = Puppet::Resource::Type.new(:hostclass, "foo")
|
26
27
|
Puppet::Resource::Type.expects(:new).with { |t, n, args| n == "myname" }.returns type
|
27
|
-
|
28
|
+
test_api_call { send(method, "myname") }
|
28
29
|
end
|
29
30
|
|
30
31
|
unless type == :definition
|
31
32
|
it "should pass in any provided options" do
|
32
33
|
type = Puppet::Resource::Type.new(:hostclass, "foo")
|
33
34
|
Puppet::Resource::Type.expects(:new).with { |t, n, args| args == {:myarg => :myvalue} }.returns type
|
34
|
-
|
35
|
+
test_api_call { send(method, "myname", :myarg => :myvalue) }
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
38
|
-
it "should set any provided block as the type's ruby code"
|
39
|
+
it "should set any provided block as the type's ruby code" do
|
40
|
+
Puppet::Resource::Type.any_instance.expects(:ruby_code=).with { |blk| blk.call == 'foo' }
|
41
|
+
test_api_call { send(method, "myname") { 'foo' } }
|
42
|
+
end
|
39
43
|
|
40
|
-
it "should add the type to the current environment's known resource types"
|
44
|
+
it "should add the type to the current environment's known resource types" do
|
45
|
+
begin
|
46
|
+
newtype = Puppet::Resource::Type.new(:hostclass, "foo")
|
47
|
+
Puppet::Resource::Type.expects(:new).returns newtype
|
48
|
+
known_resource_types = Puppet::Resource::TypeCollection.new(:env)
|
49
|
+
Thread.current[:known_resource_types] = known_resource_types
|
50
|
+
known_resource_types.expects(:add).with(newtype)
|
51
|
+
Puppet::DSL::ResourceTypeAPI.new.instance_eval { hostclass "myname" }
|
52
|
+
ensure
|
53
|
+
Thread.current[:known_resource_types] = nil
|
54
|
+
end
|
55
|
+
end
|
41
56
|
end
|
42
57
|
|
43
58
|
describe "when creating a definition" do
|
44
|
-
it "should use the provided options to define valid arguments for the resource type"
|
59
|
+
it "should use the provided options to define valid arguments for the resource type" do
|
60
|
+
newtype = Puppet::Resource::Type.new(:definition, "foo")
|
61
|
+
Puppet::Resource::Type.expects(:new).returns newtype
|
62
|
+
test_api_call { define("myname", :arg1, :arg2) }
|
63
|
+
newtype.instance_eval { @arguments }.should == { 'arg1' => nil, 'arg2' => nil }
|
64
|
+
end
|
45
65
|
end
|
46
66
|
end
|
@@ -61,20 +61,30 @@ describe Puppet::Parser::AST::Function do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should call the underlying ruby function" do
|
64
|
-
argument = stub 'arg', :safeevaluate => "nothing"
|
64
|
+
argument = stub 'arg', :safeevaluate => ["nothing"]
|
65
65
|
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
66
66
|
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
67
67
|
|
68
|
-
@scope.expects(:function_exist).with("nothing")
|
68
|
+
@scope.expects(:function_exist).with(["nothing"])
|
69
|
+
|
70
|
+
func.evaluate(@scope)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should convert :undef to '' in arguments" do
|
74
|
+
argument = stub 'arg', :safeevaluate => ["foo", :undef, "bar"]
|
75
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
76
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
77
|
+
|
78
|
+
@scope.expects(:function_exist).with(["foo", "", "bar"])
|
69
79
|
|
70
80
|
func.evaluate(@scope)
|
71
81
|
end
|
72
82
|
|
73
83
|
it "should return the ruby function return for rvalue functions" do
|
74
|
-
argument = stub 'arg', :safeevaluate => "nothing"
|
84
|
+
argument = stub 'arg', :safeevaluate => ["nothing"]
|
75
85
|
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
76
86
|
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
77
|
-
@scope.stubs(:function_exist).with("nothing").returns("returning")
|
87
|
+
@scope.stubs(:function_exist).with(["nothing"]).returns("returning")
|
78
88
|
|
79
89
|
func.evaluate(@scope).should == "returning"
|
80
90
|
end
|
@@ -30,6 +30,14 @@ describe Puppet::Parser::Lexer do
|
|
30
30
|
|
31
31
|
@lexer.line.should == 10
|
32
32
|
end
|
33
|
+
|
34
|
+
it "should not think the terminator is escaped, when preceeded by an even number of backslashes" do
|
35
|
+
@lexer.line = 10
|
36
|
+
@lexer.string = "here\nis\nthe\nstring\\\\'with\nextra\njunk"
|
37
|
+
@lexer.slurpstring("'")
|
38
|
+
|
39
|
+
@lexer.line.should == 13
|
40
|
+
end
|
33
41
|
end
|
34
42
|
end
|
35
43
|
|
@@ -52,15 +52,6 @@ describe Puppet::Parser do
|
|
52
52
|
@parser.file = "/my/file.rb"
|
53
53
|
@parser.parse
|
54
54
|
end
|
55
|
-
|
56
|
-
describe "in ruby" do
|
57
|
-
it "should use the ruby interpreter to load the file" do
|
58
|
-
@parser.file = "/my/file.rb"
|
59
|
-
@parser.expects(:require).with "/my/file.rb"
|
60
|
-
|
61
|
-
@parser.parse_ruby_file
|
62
|
-
end
|
63
|
-
end
|
64
55
|
end
|
65
56
|
|
66
57
|
describe "when parsing append operator" do
|
@@ -77,13 +77,6 @@ describe Puppet::Parser::TypeLoader do
|
|
77
77
|
@loader.load_until(["foo"], "bar") { |f| false }.should be_nil
|
78
78
|
end
|
79
79
|
|
80
|
-
it "should know when a given name has been loaded" do
|
81
|
-
@loader.expects(:name2files).returns %w{file}
|
82
|
-
@loader.expects(:import).with("file",nil)
|
83
|
-
@loader.load_until(["foo"], "bar") { |f| true }
|
84
|
-
@loader.should be_loaded("file")
|
85
|
-
end
|
86
|
-
|
87
80
|
it "should set the module name on any created resource types" do
|
88
81
|
type = Puppet::Resource::Type.new(:hostclass, "mytype")
|
89
82
|
|
@@ -113,7 +106,8 @@ describe Puppet::Parser::TypeLoader do
|
|
113
106
|
describe "when importing" do
|
114
107
|
before do
|
115
108
|
Puppet::Parser::Files.stubs(:find_manifests).returns ["modname", %w{file}]
|
116
|
-
|
109
|
+
Puppet::Parser::Parser.any_instance.stubs(:parse)
|
110
|
+
Puppet::Parser::Parser.any_instance.stubs(:file=)
|
117
111
|
end
|
118
112
|
|
119
113
|
it "should return immediately when imports are being ignored" do
|
@@ -154,16 +148,9 @@ describe Puppet::Parser::TypeLoader do
|
|
154
148
|
@loader.import("myfile", "/current/file")
|
155
149
|
end
|
156
150
|
|
157
|
-
it "should know when a given file has been imported" do
|
158
|
-
Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{/one}]
|
159
|
-
@loader.import("myfile")
|
160
|
-
|
161
|
-
@loader.should be_imported("/one")
|
162
|
-
end
|
163
|
-
|
164
151
|
it "should not attempt to import files that have already been imported" do
|
165
152
|
Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{/one}]
|
166
|
-
|
153
|
+
Puppet::Parser::Parser.any_instance.expects(:parse).once
|
167
154
|
@loader.import("myfile")
|
168
155
|
|
169
156
|
# This will fail if it tries to reimport the file.
|
@@ -98,19 +98,22 @@ describe provider_class do
|
|
98
98
|
it "should return true if the job plist says disabled is true and the global overrides says disabled is false" do
|
99
99
|
provider_class.stubs(:get_macosx_version_major).returns("10.6")
|
100
100
|
@provider.stubs(:plist_from_label).returns(["foo", {"Disabled" => true}])
|
101
|
-
|
101
|
+
@provider.class.stubs(:read_plist).returns({@resource[:name] => {"Disabled" => false}})
|
102
|
+
FileTest.expects(:file?).with(Launchd_Overrides).returns(true)
|
102
103
|
@provider.enabled?.should == :true
|
103
104
|
end
|
104
105
|
it "should return false if the job plist says disabled is false and the global overrides says disabled is true" do
|
105
106
|
provider_class.stubs(:get_macosx_version_major).returns("10.6")
|
106
107
|
@provider.stubs(:plist_from_label).returns(["foo", {"Disabled" => false}])
|
107
|
-
|
108
|
+
@provider.class.stubs(:read_plist).returns({@resource[:name] => {"Disabled" => true}})
|
109
|
+
FileTest.expects(:file?).with(Launchd_Overrides).returns(true)
|
108
110
|
@provider.enabled?.should == :false
|
109
111
|
end
|
110
112
|
it "should return true if the job plist and the global overrides have no disabled keys" do
|
111
113
|
provider_class.stubs(:get_macosx_version_major).returns("10.6")
|
112
114
|
@provider.stubs(:plist_from_label).returns(["foo", {}])
|
113
|
-
|
115
|
+
@provider.class.stubs(:read_plist).returns({})
|
116
|
+
FileTest.expects(:file?).with(Launchd_Overrides).returns(true)
|
114
117
|
@provider.enabled?.should == :true
|
115
118
|
end
|
116
119
|
end
|
@@ -182,7 +185,7 @@ describe provider_class do
|
|
182
185
|
describe "when enabling the service on OS X 10.6" do
|
183
186
|
it "should write to the global launchd overrides file once" do
|
184
187
|
provider_class.stubs(:get_macosx_version_major).returns("10.6")
|
185
|
-
|
188
|
+
@provider.class.stubs(:read_plist).returns({})
|
186
189
|
Plist::Emit.expects(:save_plist).once
|
187
190
|
@provider.enable
|
188
191
|
end
|
@@ -191,7 +194,7 @@ describe provider_class do
|
|
191
194
|
describe "when disabling the service on OS X 10.6" do
|
192
195
|
it "should write to the global launchd overrides file once" do
|
193
196
|
provider_class.stubs(:get_macosx_version_major).returns("10.6")
|
194
|
-
|
197
|
+
@provider.class.stubs(:read_plist).returns({})
|
195
198
|
Plist::Emit.expects(:save_plist).once
|
196
199
|
@provider.enable
|
197
200
|
end
|
@@ -56,7 +56,7 @@ describe provider_class do
|
|
56
56
|
it "should use the add command when the user is not a role" do
|
57
57
|
@provider.stubs(:is_role?).returns(false)
|
58
58
|
@provider.expects(:addcmd).returns("useradd")
|
59
|
-
@provider.expects(:run)
|
59
|
+
@provider.expects(:run).at_least_once
|
60
60
|
@provider.create
|
61
61
|
end
|
62
62
|
|
@@ -66,6 +66,15 @@ describe provider_class do
|
|
66
66
|
@provider.expects(:run)
|
67
67
|
@provider.create
|
68
68
|
end
|
69
|
+
|
70
|
+
it "should set password age rules" do
|
71
|
+
@resource = Puppet::Type.type(:user).new :name => "myuser", :password_min_age => 5, :password_max_age => 10, :provider => :user_role_add
|
72
|
+
@provider = provider_class.new(@resource)
|
73
|
+
@provider.stubs(:user_attributes)
|
74
|
+
@provider.stubs(:execute)
|
75
|
+
@provider.expects(:execute).with { |cmd, *args| args == ["-m", 5, "-M", 10, "myuser"] }
|
76
|
+
@provider.create
|
77
|
+
end
|
69
78
|
end
|
70
79
|
|
71
80
|
describe "when calling destroy" do
|
@@ -107,6 +116,7 @@ describe provider_class do
|
|
107
116
|
before do
|
108
117
|
@resource.expects(:allowdupe?).returns true
|
109
118
|
@provider.stubs(:is_role?).returns(false)
|
119
|
+
@provider.stubs(:execute)
|
110
120
|
@provider.expects(:execute).with { |args| args.include?("-o") }
|
111
121
|
end
|
112
122
|
|
@@ -246,4 +256,11 @@ describe provider_class do
|
|
246
256
|
@provider.password=("hashedpassword")
|
247
257
|
end
|
248
258
|
end
|
259
|
+
|
260
|
+
describe "#shadow_entry" do
|
261
|
+
it "should return the line for the right user" do
|
262
|
+
File.stubs(:readlines).returns(["someuser:!:10:5:20:7:1::\n", "fakeval:*:20:10:30:7:2::\n", "testuser:*:30:15:40:7:3::\n"])
|
263
|
+
@provider.shadow_entry.should == ["fakeval", "*", "20", "10", "30", "7", "2"]
|
264
|
+
end
|
265
|
+
end
|
249
266
|
end
|
@@ -15,6 +15,7 @@ describe provider_class do
|
|
15
15
|
# #1360
|
16
16
|
it "should add -o when allowdupe is enabled and the user is being created" do
|
17
17
|
@resource.expects(:allowdupe?).returns true
|
18
|
+
@provider.stubs(:execute)
|
18
19
|
@provider.expects(:execute).with { |args| args.include?("-o") }
|
19
20
|
@provider.create
|
20
21
|
end
|
@@ -26,6 +27,15 @@ describe provider_class do
|
|
26
27
|
@provider.uid = 150
|
27
28
|
end
|
28
29
|
|
30
|
+
it "should set password age rules" do
|
31
|
+
provider_class.has_feature :manages_password_age
|
32
|
+
@resource = Puppet::Type.type(:user).new :name => "myuser", :password_min_age => 5, :password_max_age => 10, :provider => :useradd
|
33
|
+
@provider = provider_class.new(@resource)
|
34
|
+
@provider.stubs(:execute)
|
35
|
+
@provider.expects(:execute).with { |cmd, *args| args == ["-m", 5, "-M", 10, "myuser"] }
|
36
|
+
@provider.create
|
37
|
+
end
|
38
|
+
|
29
39
|
describe "when checking to add allow dup" do
|
30
40
|
it "should check allow dup" do
|
31
41
|
@resource.expects(:allowdupe?)
|
@@ -109,6 +119,15 @@ describe provider_class do
|
|
109
119
|
@provider.stubs(:command).with(:add).returns("useradd")
|
110
120
|
@provider.stubs(:add_properties).returns(["-G", "somegroup"])
|
111
121
|
@resource.stubs(:[]).with(:name).returns("someuser")
|
122
|
+
@resource.stubs(:[]).with(:expiry).returns("somedate")
|
123
|
+
@provider.addcmd.must == ["useradd", "-G", "somegroup", "-o", "-m", '-e somedate', "someuser"]
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should return an array without -e if expery is undefined full command" do
|
127
|
+
@provider.stubs(:command).with(:add).returns("useradd")
|
128
|
+
@provider.stubs(:add_properties).returns(["-G", "somegroup"])
|
129
|
+
@resource.stubs(:[]).with(:name).returns("someuser")
|
130
|
+
@resource.stubs(:[]).with(:expiry).returns nil
|
112
131
|
@provider.addcmd.must == ["useradd", "-G", "somegroup", "-o", "-m", "someuser"]
|
113
132
|
end
|
114
133
|
end
|