puppet 7.4.1-x64-mingw32 → 7.5.0-x64-mingw32
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: x64-mingw32
|
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
|
@@ -740,6 +740,9 @@ files:
|
|
740
740
|
- lib/puppet/network/http/api/master.rb
|
741
741
|
- lib/puppet/network/http/api/master/v3.rb
|
742
742
|
- lib/puppet/network/http/api/master/v3/environments.rb
|
743
|
+
- lib/puppet/network/http/api/server.rb
|
744
|
+
- lib/puppet/network/http/api/server/v3.rb
|
745
|
+
- lib/puppet/network/http/api/server/v3/environments.rb
|
743
746
|
- lib/puppet/network/http/connection.rb
|
744
747
|
- lib/puppet/network/http/error.rb
|
745
748
|
- lib/puppet/network/http/handler.rb
|
@@ -1853,10 +1856,8 @@ files:
|
|
1853
1856
|
- spec/integration/util/windows/user_spec.rb
|
1854
1857
|
- spec/integration/util_spec.rb
|
1855
1858
|
- spec/lib/matchers/containment_matchers.rb
|
1856
|
-
- spec/lib/matchers/include.rb
|
1857
1859
|
- spec/lib/matchers/include_in_order.rb
|
1858
1860
|
- spec/lib/matchers/include_in_order_spec.rb
|
1859
|
-
- spec/lib/matchers/include_spec.rb
|
1860
1861
|
- spec/lib/matchers/json.rb
|
1861
1862
|
- spec/lib/matchers/match_tokens2.rb
|
1862
1863
|
- spec/lib/matchers/relationship_graph_matchers.rb
|
@@ -2181,8 +2182,9 @@ files:
|
|
2181
2182
|
- spec/unit/network/format_support_spec.rb
|
2182
2183
|
- spec/unit/network/formats_spec.rb
|
2183
2184
|
- spec/unit/network/http/api/indirected_routes_spec.rb
|
2184
|
-
- spec/unit/network/http/api/
|
2185
|
-
- spec/unit/network/http/api/
|
2185
|
+
- spec/unit/network/http/api/master_spec.rb
|
2186
|
+
- spec/unit/network/http/api/server/v3/environments_spec.rb
|
2187
|
+
- spec/unit/network/http/api/server/v3_spec.rb
|
2186
2188
|
- spec/unit/network/http/api_spec.rb
|
2187
2189
|
- spec/unit/network/http/connection_spec.rb
|
2188
2190
|
- spec/unit/network/http/error_spec.rb
|
@@ -2276,10 +2278,8 @@ files:
|
|
2276
2278
|
- spec/unit/pops/parser/evaluating_parser_spec.rb
|
2277
2279
|
- spec/unit/pops/parser/lexer2_spec.rb
|
2278
2280
|
- spec/unit/pops/parser/locator_spec.rb
|
2279
|
-
- spec/unit/pops/parser/parse_application_spec.rb
|
2280
2281
|
- spec/unit/pops/parser/parse_basic_expressions_spec.rb
|
2281
2282
|
- spec/unit/pops/parser/parse_calls_spec.rb
|
2282
|
-
- spec/unit/pops/parser/parse_capabilities_spec.rb
|
2283
2283
|
- spec/unit/pops/parser/parse_conditionals_spec.rb
|
2284
2284
|
- spec/unit/pops/parser/parse_containers_spec.rb
|
2285
2285
|
- spec/unit/pops/parser/parse_functions_spec.rb
|
@@ -2287,7 +2287,6 @@ files:
|
|
2287
2287
|
- spec/unit/pops/parser/parse_lambda_spec.rb
|
2288
2288
|
- spec/unit/pops/parser/parse_plan_spec.rb
|
2289
2289
|
- spec/unit/pops/parser/parse_resource_spec.rb
|
2290
|
-
- spec/unit/pops/parser/parse_site_spec.rb
|
2291
2290
|
- spec/unit/pops/parser/parser_rspec_helper.rb
|
2292
2291
|
- spec/unit/pops/parser/parser_spec.rb
|
2293
2292
|
- spec/unit/pops/parser/parsing_typed_parameters_spec.rb
|
@@ -3093,10 +3092,8 @@ test_files:
|
|
3093
3092
|
- spec/integration/util/windows/user_spec.rb
|
3094
3093
|
- spec/integration/util_spec.rb
|
3095
3094
|
- spec/lib/matchers/containment_matchers.rb
|
3096
|
-
- spec/lib/matchers/include.rb
|
3097
3095
|
- spec/lib/matchers/include_in_order.rb
|
3098
3096
|
- spec/lib/matchers/include_in_order_spec.rb
|
3099
|
-
- spec/lib/matchers/include_spec.rb
|
3100
3097
|
- spec/lib/matchers/json.rb
|
3101
3098
|
- spec/lib/matchers/match_tokens2.rb
|
3102
3099
|
- spec/lib/matchers/relationship_graph_matchers.rb
|
@@ -3421,8 +3418,9 @@ test_files:
|
|
3421
3418
|
- spec/unit/network/format_support_spec.rb
|
3422
3419
|
- spec/unit/network/formats_spec.rb
|
3423
3420
|
- spec/unit/network/http/api/indirected_routes_spec.rb
|
3424
|
-
- spec/unit/network/http/api/
|
3425
|
-
- spec/unit/network/http/api/
|
3421
|
+
- spec/unit/network/http/api/master_spec.rb
|
3422
|
+
- spec/unit/network/http/api/server/v3/environments_spec.rb
|
3423
|
+
- spec/unit/network/http/api/server/v3_spec.rb
|
3426
3424
|
- spec/unit/network/http/api_spec.rb
|
3427
3425
|
- spec/unit/network/http/connection_spec.rb
|
3428
3426
|
- spec/unit/network/http/error_spec.rb
|
@@ -3516,10 +3514,8 @@ test_files:
|
|
3516
3514
|
- spec/unit/pops/parser/evaluating_parser_spec.rb
|
3517
3515
|
- spec/unit/pops/parser/lexer2_spec.rb
|
3518
3516
|
- spec/unit/pops/parser/locator_spec.rb
|
3519
|
-
- spec/unit/pops/parser/parse_application_spec.rb
|
3520
3517
|
- spec/unit/pops/parser/parse_basic_expressions_spec.rb
|
3521
3518
|
- spec/unit/pops/parser/parse_calls_spec.rb
|
3522
|
-
- spec/unit/pops/parser/parse_capabilities_spec.rb
|
3523
3519
|
- spec/unit/pops/parser/parse_conditionals_spec.rb
|
3524
3520
|
- spec/unit/pops/parser/parse_containers_spec.rb
|
3525
3521
|
- spec/unit/pops/parser/parse_functions_spec.rb
|
@@ -3527,7 +3523,6 @@ test_files:
|
|
3527
3523
|
- spec/unit/pops/parser/parse_lambda_spec.rb
|
3528
3524
|
- spec/unit/pops/parser/parse_plan_spec.rb
|
3529
3525
|
- spec/unit/pops/parser/parse_resource_spec.rb
|
3530
|
-
- spec/unit/pops/parser/parse_site_spec.rb
|
3531
3526
|
- spec/unit/pops/parser/parser_rspec_helper.rb
|
3532
3527
|
- spec/unit/pops/parser/parser_spec.rb
|
3533
3528
|
- spec/unit/pops/parser/parsing_typed_parameters_spec.rb
|