puppet 7.4.1-universal-darwin → 7.5.0-universal-darwin
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +19 -13
- data/lib/puppet/application/ssl.rb +11 -0
- data/lib/puppet/defaults.rb +8 -0
- data/lib/puppet/environments.rb +16 -1
- data/lib/puppet/ffi/windows/api_types.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +8 -1
- data/lib/puppet/file_system/windows.rb +2 -0
- data/lib/puppet/http/factory.rb +4 -0
- data/lib/puppet/network/http.rb +5 -2
- data/lib/puppet/network/http/api.rb +10 -6
- data/lib/puppet/network/http/api/master.rb +3 -2
- data/lib/puppet/network/http/api/master/v3.rb +2 -25
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -33
- data/lib/puppet/network/http/api/server.rb +10 -0
- data/lib/puppet/network/http/api/server/v3.rb +39 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
- data/lib/puppet/pops/parser/lexer2.rb +0 -4
- data/lib/puppet/pops/validation/checker4_0.rb +0 -1
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/util/monkey_patches.rb +7 -0
- data/lib/puppet/util/windows/adsi.rb +46 -0
- data/lib/puppet/util/windows/principal.rb +9 -2
- data/lib/puppet/util/windows/sid.rb +4 -2
- data/lib/puppet/version.rb +1 -1
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +5 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/plugin_spec.rb +1 -1
- data/spec/integration/http/client_spec.rb +12 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/util/windows/adsi_spec.rb +18 -0
- data/spec/integration/util/windows/principal_spec.rb +21 -0
- data/spec/integration/util/windows/registry_spec.rb +6 -0
- data/spec/unit/application/facts_spec.rb +5 -5
- data/spec/unit/application/ssl_spec.rb +23 -0
- data/spec/unit/environments_spec.rb +164 -88
- data/spec/unit/file_system_spec.rb +9 -0
- data/spec/unit/http/factory_spec.rb +19 -0
- data/spec/unit/network/http/api/master_spec.rb +38 -0
- data/spec/unit/network/http/api/{master → server}/v3/environments_spec.rb +2 -2
- data/spec/unit/network/http/api/{master → server}/v3_spec.rb +19 -19
- data/spec/unit/network/http/api_spec.rb +11 -11
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- data/spec/unit/pops/validator/validator_spec.rb +20 -43
- data/spec/unit/util/windows/sid_spec.rb +6 -0
- metadata +11 -16
- data/spec/lib/matchers/include.rb +0 -27
- data/spec/lib/matchers/include_spec.rb +0 -32
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -13
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -23
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -43
@@ -999,6 +999,15 @@ describe "Puppet::FileSystem" do
|
|
999
999
|
Puppet::FileSystem.replace_file(dest, 0755) { |_| }
|
1000
1000
|
}.to raise_error(ArgumentError, /Only modes 0644, 0640, 0660, and 0440 are allowed/)
|
1001
1001
|
end
|
1002
|
+
|
1003
|
+
it 'falls back to fully qualified user name when sid retrieval fails' do
|
1004
|
+
current_user_sid = Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_user_name)
|
1005
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with(Puppet::Util::Windows::ADSI::User.current_user_name).and_return(nil, current_user_sid)
|
1006
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with(Puppet::Util::Windows::ADSI::User.current_sam_compatible_user_name).and_call_original
|
1007
|
+
|
1008
|
+
Puppet::FileSystem.replace_file(dest, 0644) { |f| f.write(content) }
|
1009
|
+
expects_public_file(dest)
|
1010
|
+
end
|
1002
1011
|
end
|
1003
1012
|
end
|
1004
1013
|
|
@@ -138,4 +138,23 @@ describe Puppet::HTTP::Factory do
|
|
138
138
|
expect(conn.local_host).to eq('127.0.0.1')
|
139
139
|
end
|
140
140
|
end
|
141
|
+
|
142
|
+
context 'tls' do
|
143
|
+
it "sets the minimum version to TLS 1.0", if: RUBY_VERSION.to_f >= 2.5 do
|
144
|
+
conn = create_connection(site)
|
145
|
+
expect(conn.min_version).to eq(OpenSSL::SSL::TLS1_VERSION)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "defaults to ciphersuites providing 128 bits of security or greater" do
|
149
|
+
conn = create_connection(site)
|
150
|
+
expect(conn.ciphers).to eq("ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256")
|
151
|
+
end
|
152
|
+
|
153
|
+
it "can be restricted to TLSv1.3 ciphers" do
|
154
|
+
tls13_ciphers = "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
|
155
|
+
Puppet[:ciphers] = tls13_ciphers
|
156
|
+
conn = create_connection(site)
|
157
|
+
expect(conn.ciphers).to eq(tls13_ciphers)
|
158
|
+
end
|
159
|
+
end
|
141
160
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Tests the backwards compatibility of our master -> server changes
|
2
|
+
# in the HTTP API
|
3
|
+
# This may be removed in Puppet 8
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
require 'puppet/network/http'
|
7
|
+
require 'puppet_spec/network'
|
8
|
+
|
9
|
+
describe Puppet::Network::HTTP::API::Master::V3 do
|
10
|
+
include PuppetSpec::Network
|
11
|
+
|
12
|
+
let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
|
13
|
+
let(:server_url_prefix) { "#{Puppet::Network::HTTP::MASTER_URL_PREFIX}/v3" }
|
14
|
+
let(:server_routes) {
|
15
|
+
Puppet::Network::HTTP::Route.
|
16
|
+
path(Regexp.new("#{Puppet::Network::HTTP::MASTER_URL_PREFIX}/")).
|
17
|
+
any.
|
18
|
+
chain(Puppet::Network::HTTP::API::Master::V3.routes)
|
19
|
+
}
|
20
|
+
|
21
|
+
# simulate puppetserver registering its authconfigloader class
|
22
|
+
around :each do |example|
|
23
|
+
Puppet::Network::Authorization.authconfigloader_class = Object
|
24
|
+
begin
|
25
|
+
example.run
|
26
|
+
ensure
|
27
|
+
Puppet::Network::Authorization.authconfigloader_class = nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "mounts the environments endpoint" do
|
32
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/environments")
|
33
|
+
server_routes.process(request, response)
|
34
|
+
|
35
|
+
expect(response.code).to eq(200)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -4,12 +4,12 @@ require 'puppet/node/environment'
|
|
4
4
|
require 'puppet/network/http'
|
5
5
|
require 'matchers/json'
|
6
6
|
|
7
|
-
describe Puppet::Network::HTTP::API::
|
7
|
+
describe Puppet::Network::HTTP::API::Server::V3::Environments do
|
8
8
|
include JSONMatchers
|
9
9
|
|
10
10
|
let(:environment) { Puppet::Node::Environment.create(:production, ["/first", "/second"], '/manifests') }
|
11
11
|
let(:loader) { Puppet::Environments::Static.new(environment) }
|
12
|
-
let(:handler) { Puppet::Network::HTTP::API::
|
12
|
+
let(:handler) { Puppet::Network::HTTP::API::Server::V3::Environments.new(loader) }
|
13
13
|
let(:request) { Puppet::Network::HTTP::Request.from_hash(:headers => { 'accept' => 'application/json' }) }
|
14
14
|
let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
|
15
15
|
|
@@ -3,16 +3,16 @@ require 'spec_helper'
|
|
3
3
|
require 'puppet/network/http'
|
4
4
|
require 'puppet_spec/network'
|
5
5
|
|
6
|
-
describe Puppet::Network::HTTP::API::
|
6
|
+
describe Puppet::Network::HTTP::API::Server::V3 do
|
7
7
|
include PuppetSpec::Network
|
8
8
|
|
9
9
|
let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
|
10
|
-
let(:
|
11
|
-
let(:
|
10
|
+
let(:server_url_prefix) { "#{Puppet::Network::HTTP::SERVER_URL_PREFIX}/v3" }
|
11
|
+
let(:server_routes) {
|
12
12
|
Puppet::Network::HTTP::Route.
|
13
|
-
path(Regexp.new("#{Puppet::Network::HTTP::
|
13
|
+
path(Regexp.new("#{Puppet::Network::HTTP::SERVER_URL_PREFIX}/")).
|
14
14
|
any.
|
15
|
-
chain(Puppet::Network::HTTP::API::
|
15
|
+
chain(Puppet::Network::HTTP::API::Server::V3.routes)
|
16
16
|
}
|
17
17
|
|
18
18
|
# simulate puppetserver registering its authconfigloader class
|
@@ -26,53 +26,53 @@ describe Puppet::Network::HTTP::API::Master::V3 do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "mounts the environments endpoint" do
|
29
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
30
|
-
|
29
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/environments")
|
30
|
+
server_routes.process(request, response)
|
31
31
|
|
32
32
|
expect(response.code).to eq(200)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "matches only complete routes" do
|
36
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
37
|
-
expect {
|
36
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/foo/environments")
|
37
|
+
expect { server_routes.process(request, response) }.to raise_error(Puppet::Network::HTTP::Error::HTTPNotFoundError)
|
38
38
|
|
39
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
40
|
-
expect {
|
39
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/foo/environment/production")
|
40
|
+
expect { server_routes.process(request, response) }.to raise_error(Puppet::Network::HTTP::Error::HTTPNotFoundError)
|
41
41
|
end
|
42
42
|
|
43
43
|
it "mounts indirected routes" do
|
44
44
|
request = Puppet::Network::HTTP::Request.
|
45
|
-
from_hash(:path => "#{
|
45
|
+
from_hash(:path => "#{server_url_prefix}/node/foo",
|
46
46
|
:params => {:environment => "production"},
|
47
47
|
:headers => {"accept" => "application/json"})
|
48
|
-
|
48
|
+
server_routes.process(request, response)
|
49
49
|
|
50
50
|
expect(response.code).to eq(200)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "responds to unknown paths by raising not_found_error" do
|
54
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
54
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/unknown")
|
55
55
|
|
56
56
|
expect {
|
57
|
-
|
57
|
+
server_routes.process(request, response)
|
58
58
|
}.to raise_error(not_found_error)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "checks authorization for indirected routes" do
|
62
62
|
Puppet::Network::Authorization.authconfigloader_class = nil
|
63
63
|
|
64
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
64
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/catalog/foo")
|
65
65
|
expect {
|
66
|
-
|
66
|
+
server_routes.process(request, response)
|
67
67
|
}.to raise_error(Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, %r{Not Authorized: Forbidden request: /puppet/v3/catalog/foo \(method GET\)})
|
68
68
|
end
|
69
69
|
|
70
70
|
it "checks authorization for environments" do
|
71
71
|
Puppet::Network::Authorization.authconfigloader_class = nil
|
72
72
|
|
73
|
-
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
73
|
+
request = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_url_prefix}/environments")
|
74
74
|
expect {
|
75
|
-
|
75
|
+
server_routes.process(request, response)
|
76
76
|
}.to raise_error(Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, %r{Not Authorized: Forbidden request: /puppet/v3/environments \(method GET\)})
|
77
77
|
end
|
78
78
|
end
|
@@ -36,12 +36,12 @@ describe Puppet::Network::HTTP::API do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "Puppet API" do
|
39
|
-
let(:handler) { PuppetSpec::Handler.new(Puppet::Network::HTTP::API.
|
39
|
+
let(:handler) { PuppetSpec::Handler.new(Puppet::Network::HTTP::API.server_routes,
|
40
40
|
Puppet::Network::HTTP::API.not_found_upgrade) }
|
41
41
|
|
42
|
-
let(:
|
42
|
+
let(:server_prefix) { Puppet::Network::HTTP::SERVER_URL_PREFIX }
|
43
43
|
|
44
|
-
it "raises a not-found error for non-CA or
|
44
|
+
it "raises a not-found error for non-CA or server routes and suggests an upgrade" do
|
45
45
|
req = Puppet::Network::HTTP::Request.from_hash(:path => "/unknown")
|
46
46
|
res = {}
|
47
47
|
handler.process(req, res)
|
@@ -50,13 +50,13 @@ describe Puppet::Network::HTTP::API do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "when processing Puppet 3 routes" do
|
53
|
-
it "gives an upgrade message for
|
53
|
+
it "gives an upgrade message for server routes" do
|
54
54
|
req = Puppet::Network::HTTP::Request.from_hash(:path => "/production/node/foo")
|
55
55
|
res = {}
|
56
56
|
handler.process(req, res)
|
57
57
|
expect(res[:status]).to eq(404)
|
58
58
|
expect(res[:body]).to include("Puppet version: #{Puppet.version}")
|
59
|
-
expect(res[:body]).to include("Supported /puppet API versions: #{Puppet::Network::HTTP::
|
59
|
+
expect(res[:body]).to include("Supported /puppet API versions: #{Puppet::Network::HTTP::SERVER_URL_VERSIONS}")
|
60
60
|
end
|
61
61
|
|
62
62
|
it "gives an upgrade message for CA routes" do
|
@@ -65,11 +65,11 @@ describe Puppet::Network::HTTP::API do
|
|
65
65
|
handler.process(req, res)
|
66
66
|
expect(res[:status]).to eq(404)
|
67
67
|
expect(res[:body]).to include("Puppet version: #{Puppet.version}")
|
68
|
-
expect(res[:body]).to include("Supported /puppet API versions: #{Puppet::Network::HTTP::
|
68
|
+
expect(res[:body]).to include("Supported /puppet API versions: #{Puppet::Network::HTTP::SERVER_URL_VERSIONS}")
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
describe "when processing
|
72
|
+
describe "when processing server routes" do
|
73
73
|
# simulate puppetserver registering its authconfigloader class
|
74
74
|
around :each do |example|
|
75
75
|
Puppet::Network::Authorization.authconfigloader_class = Object
|
@@ -81,7 +81,7 @@ describe Puppet::Network::HTTP::API do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "responds to v3 indirector requests" do
|
84
|
-
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
84
|
+
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_prefix}/v3/node/foo",
|
85
85
|
:params => {:environment => "production"},
|
86
86
|
:headers => {'accept' => "application/json"})
|
87
87
|
res = {}
|
@@ -90,18 +90,18 @@ describe Puppet::Network::HTTP::API do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "responds to v3 environments requests" do
|
93
|
-
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
93
|
+
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_prefix}/v3/environments")
|
94
94
|
res = {}
|
95
95
|
handler.process(req, res)
|
96
96
|
expect(res[:status]).to eq(200)
|
97
97
|
end
|
98
98
|
|
99
99
|
it "responds with a not found error to non-v3 requests and does not suggest an upgrade" do
|
100
|
-
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{
|
100
|
+
req = Puppet::Network::HTTP::Request.from_hash(:path => "#{server_prefix}/unknown")
|
101
101
|
res = {}
|
102
102
|
handler.process(req, res)
|
103
103
|
expect(res[:status]).to eq(404)
|
104
|
-
expect(res[:body]).to include("No route for GET #{
|
104
|
+
expect(res[:body]).to include("No route for GET #{server_prefix}/unknown")
|
105
105
|
expect(res[:body]).not_to include("Puppet version: #{Puppet.version}")
|
106
106
|
end
|
107
107
|
end
|
@@ -94,10 +94,6 @@ describe 'Lexer2' do
|
|
94
94
|
"private" => :PRIVATE,
|
95
95
|
"type" => :TYPE,
|
96
96
|
"attr" => :ATTR,
|
97
|
-
"application" => :APPLICATION,
|
98
|
-
"consumes" => :CONSUMES,
|
99
|
-
"produces" => :PRODUCES,
|
100
|
-
"site" => :SITE,
|
101
97
|
}.each do |string, name|
|
102
98
|
it "should lex a keyword from '#{string}'" do
|
103
99
|
expect(tokens_scanned_from(string)).to match_tokens2(name)
|
@@ -344,18 +344,6 @@ describe "validating 4x" do
|
|
344
344
|
end
|
345
345
|
end
|
346
346
|
|
347
|
-
it 'produces a syntax error for application' do
|
348
|
-
expect {
|
349
|
-
parse('application test {}')
|
350
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'application'/)
|
351
|
-
end
|
352
|
-
|
353
|
-
it 'produces a syntax error for capability mapping' do
|
354
|
-
expect {
|
355
|
-
parse('Foo produces Sql {}')
|
356
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'produces'/)
|
357
|
-
end
|
358
|
-
|
359
347
|
it 'produces an error for collect expressions with virtual query' do
|
360
348
|
acceptor = validate(parse("User <| title == 'admin' |>"))
|
361
349
|
expect(acceptor.error_count).to eql(1)
|
@@ -410,12 +398,6 @@ describe "validating 4x" do
|
|
410
398
|
expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
|
411
399
|
end
|
412
400
|
|
413
|
-
it 'produces a syntax error for site definitions' do
|
414
|
-
expect {
|
415
|
-
parse('site {}')
|
416
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'site'/)
|
417
|
-
end
|
418
|
-
|
419
401
|
context 'validating apply() blocks' do
|
420
402
|
it 'allows empty apply() blocks' do
|
421
403
|
acceptor = validate(parse('apply("foo.example.com") { }'))
|
@@ -468,18 +450,6 @@ describe "validating 4x" do
|
|
468
450
|
expect(acceptor.error_count).to eql(0)
|
469
451
|
end
|
470
452
|
|
471
|
-
it 'produces a syntax error for application' do
|
472
|
-
expect {
|
473
|
-
parse('apply("foo.example.com") { application test {} }')
|
474
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'application'/)
|
475
|
-
end
|
476
|
-
|
477
|
-
it 'produces a syntax error for capability mapping' do
|
478
|
-
expect {
|
479
|
-
parse('apply("foo.example.com") { Foo produces Sql {} }')
|
480
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'produces'/)
|
481
|
-
end
|
482
|
-
|
483
453
|
it 'produces an error for class expressions' do
|
484
454
|
acceptor = validate(parse('apply("foo.example.com") { class test {} }'))
|
485
455
|
expect(acceptor.error_count).to eql(1)
|
@@ -503,12 +473,6 @@ describe "validating 4x" do
|
|
503
473
|
expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
|
504
474
|
end
|
505
475
|
|
506
|
-
it 'produces an error for site definitions' do
|
507
|
-
expect {
|
508
|
-
parse('apply("foo.example.com") { site {} }')
|
509
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'site'/)
|
510
|
-
end
|
511
|
-
|
512
476
|
it 'produces an error for apply() inside apply()' do
|
513
477
|
acceptor = validate(parse('apply("foo.example.com") { apply("foo.example.com") { } }'))
|
514
478
|
expect(acceptor.error_count).to eql(1)
|
@@ -1010,14 +974,27 @@ describe "validating 4x" do
|
|
1010
974
|
expect(acceptor.errors[2].source_pos.line).to eql(5)
|
1011
975
|
end
|
1012
976
|
end
|
1013
|
-
|
977
|
+
[
|
978
|
+
"application",
|
979
|
+
"consumes",
|
980
|
+
"produces",
|
981
|
+
"site",
|
982
|
+
].each do |kw|
|
983
|
+
it "allow usage of #{kw} keyword (it was reserved in puppet 6.x)" do
|
984
|
+
source = <<-SOURCE
|
985
|
+
class foo (
|
986
|
+
$#{kw},
|
987
|
+
) {
|
988
|
+
notice $#{kw}
|
989
|
+
}
|
990
|
+
|
991
|
+
class { foo:
|
992
|
+
#{kw} => 'bar'
|
993
|
+
}
|
994
|
+
SOURCE
|
1014
995
|
|
1015
|
-
|
1016
|
-
|
1017
|
-
it "raises a syntax error in #{word} clauses" do
|
1018
|
-
expect {
|
1019
|
-
parse("foo #{word} Bar {}")
|
1020
|
-
}.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at '#{word}'/)
|
996
|
+
acceptor = validate(parse(source, 'path/foo/manifests/init.pp'))
|
997
|
+
expect(acceptor.error_count).to eql(0)
|
1021
998
|
end
|
1022
999
|
end
|
1023
1000
|
end
|
@@ -158,6 +158,12 @@ describe "Puppet::Util::Windows::SID", :if => Puppet::Util::Platform.windows? do
|
|
158
158
|
# this works in French Windows, even though the account is really AUTORITE NT\\Syst\u00E8me
|
159
159
|
expect(subject.name_to_principal('NT AUTHORITY\SYSTEM').sid).to eq(sid)
|
160
160
|
end
|
161
|
+
|
162
|
+
it "should print a debug message on failures" do
|
163
|
+
expect(Puppet).to receive(:debug).with(/Could not retrieve raw SID bytes from 'NonExistingUser'/)
|
164
|
+
expect(Puppet).to receive(:debug).with(/No mapping between account names and security IDs was done/)
|
165
|
+
subject.name_to_principal('NonExistingUser')
|
166
|
+
end
|
161
167
|
end
|
162
168
|
|
163
169
|
context "#ads_to_principal" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.5.0
|
5
5
|
platform: universal-darwin
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facter
|
@@ -720,6 +720,9 @@ files:
|
|
720
720
|
- lib/puppet/network/http/api/master.rb
|
721
721
|
- lib/puppet/network/http/api/master/v3.rb
|
722
722
|
- lib/puppet/network/http/api/master/v3/environments.rb
|
723
|
+
- lib/puppet/network/http/api/server.rb
|
724
|
+
- lib/puppet/network/http/api/server/v3.rb
|
725
|
+
- lib/puppet/network/http/api/server/v3/environments.rb
|
723
726
|
- lib/puppet/network/http/connection.rb
|
724
727
|
- lib/puppet/network/http/error.rb
|
725
728
|
- lib/puppet/network/http/handler.rb
|
@@ -1833,10 +1836,8 @@ files:
|
|
1833
1836
|
- spec/integration/util/windows/user_spec.rb
|
1834
1837
|
- spec/integration/util_spec.rb
|
1835
1838
|
- spec/lib/matchers/containment_matchers.rb
|
1836
|
-
- spec/lib/matchers/include.rb
|
1837
1839
|
- spec/lib/matchers/include_in_order.rb
|
1838
1840
|
- spec/lib/matchers/include_in_order_spec.rb
|
1839
|
-
- spec/lib/matchers/include_spec.rb
|
1840
1841
|
- spec/lib/matchers/json.rb
|
1841
1842
|
- spec/lib/matchers/match_tokens2.rb
|
1842
1843
|
- spec/lib/matchers/relationship_graph_matchers.rb
|
@@ -2161,8 +2162,9 @@ files:
|
|
2161
2162
|
- spec/unit/network/format_support_spec.rb
|
2162
2163
|
- spec/unit/network/formats_spec.rb
|
2163
2164
|
- spec/unit/network/http/api/indirected_routes_spec.rb
|
2164
|
-
- spec/unit/network/http/api/
|
2165
|
-
- spec/unit/network/http/api/
|
2165
|
+
- spec/unit/network/http/api/master_spec.rb
|
2166
|
+
- spec/unit/network/http/api/server/v3/environments_spec.rb
|
2167
|
+
- spec/unit/network/http/api/server/v3_spec.rb
|
2166
2168
|
- spec/unit/network/http/api_spec.rb
|
2167
2169
|
- spec/unit/network/http/connection_spec.rb
|
2168
2170
|
- spec/unit/network/http/error_spec.rb
|
@@ -2256,10 +2258,8 @@ files:
|
|
2256
2258
|
- spec/unit/pops/parser/evaluating_parser_spec.rb
|
2257
2259
|
- spec/unit/pops/parser/lexer2_spec.rb
|
2258
2260
|
- spec/unit/pops/parser/locator_spec.rb
|
2259
|
-
- spec/unit/pops/parser/parse_application_spec.rb
|
2260
2261
|
- spec/unit/pops/parser/parse_basic_expressions_spec.rb
|
2261
2262
|
- spec/unit/pops/parser/parse_calls_spec.rb
|
2262
|
-
- spec/unit/pops/parser/parse_capabilities_spec.rb
|
2263
2263
|
- spec/unit/pops/parser/parse_conditionals_spec.rb
|
2264
2264
|
- spec/unit/pops/parser/parse_containers_spec.rb
|
2265
2265
|
- spec/unit/pops/parser/parse_functions_spec.rb
|
@@ -2267,7 +2267,6 @@ files:
|
|
2267
2267
|
- spec/unit/pops/parser/parse_lambda_spec.rb
|
2268
2268
|
- spec/unit/pops/parser/parse_plan_spec.rb
|
2269
2269
|
- spec/unit/pops/parser/parse_resource_spec.rb
|
2270
|
-
- spec/unit/pops/parser/parse_site_spec.rb
|
2271
2270
|
- spec/unit/pops/parser/parser_rspec_helper.rb
|
2272
2271
|
- spec/unit/pops/parser/parser_spec.rb
|
2273
2272
|
- spec/unit/pops/parser/parsing_typed_parameters_spec.rb
|
@@ -3073,10 +3072,8 @@ test_files:
|
|
3073
3072
|
- spec/integration/util/windows/user_spec.rb
|
3074
3073
|
- spec/integration/util_spec.rb
|
3075
3074
|
- spec/lib/matchers/containment_matchers.rb
|
3076
|
-
- spec/lib/matchers/include.rb
|
3077
3075
|
- spec/lib/matchers/include_in_order.rb
|
3078
3076
|
- spec/lib/matchers/include_in_order_spec.rb
|
3079
|
-
- spec/lib/matchers/include_spec.rb
|
3080
3077
|
- spec/lib/matchers/json.rb
|
3081
3078
|
- spec/lib/matchers/match_tokens2.rb
|
3082
3079
|
- spec/lib/matchers/relationship_graph_matchers.rb
|
@@ -3401,8 +3398,9 @@ test_files:
|
|
3401
3398
|
- spec/unit/network/format_support_spec.rb
|
3402
3399
|
- spec/unit/network/formats_spec.rb
|
3403
3400
|
- spec/unit/network/http/api/indirected_routes_spec.rb
|
3404
|
-
- spec/unit/network/http/api/
|
3405
|
-
- spec/unit/network/http/api/
|
3401
|
+
- spec/unit/network/http/api/master_spec.rb
|
3402
|
+
- spec/unit/network/http/api/server/v3/environments_spec.rb
|
3403
|
+
- spec/unit/network/http/api/server/v3_spec.rb
|
3406
3404
|
- spec/unit/network/http/api_spec.rb
|
3407
3405
|
- spec/unit/network/http/connection_spec.rb
|
3408
3406
|
- spec/unit/network/http/error_spec.rb
|
@@ -3496,10 +3494,8 @@ test_files:
|
|
3496
3494
|
- spec/unit/pops/parser/evaluating_parser_spec.rb
|
3497
3495
|
- spec/unit/pops/parser/lexer2_spec.rb
|
3498
3496
|
- spec/unit/pops/parser/locator_spec.rb
|
3499
|
-
- spec/unit/pops/parser/parse_application_spec.rb
|
3500
3497
|
- spec/unit/pops/parser/parse_basic_expressions_spec.rb
|
3501
3498
|
- spec/unit/pops/parser/parse_calls_spec.rb
|
3502
|
-
- spec/unit/pops/parser/parse_capabilities_spec.rb
|
3503
3499
|
- spec/unit/pops/parser/parse_conditionals_spec.rb
|
3504
3500
|
- spec/unit/pops/parser/parse_containers_spec.rb
|
3505
3501
|
- spec/unit/pops/parser/parse_functions_spec.rb
|
@@ -3507,7 +3503,6 @@ test_files:
|
|
3507
3503
|
- spec/unit/pops/parser/parse_lambda_spec.rb
|
3508
3504
|
- spec/unit/pops/parser/parse_plan_spec.rb
|
3509
3505
|
- spec/unit/pops/parser/parse_resource_spec.rb
|
3510
|
-
- spec/unit/pops/parser/parse_site_spec.rb
|
3511
3506
|
- spec/unit/pops/parser/parser_rspec_helper.rb
|
3512
3507
|
- spec/unit/pops/parser/parser_spec.rb
|
3513
3508
|
- spec/unit/pops/parser/parsing_typed_parameters_spec.rb
|