/
configuration_management_test.rb
78 lines (68 loc) · 2.71 KB
/
configuration_management_test.rb
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
#!/usr/bin/env rspec
# encoding: utf-8
# Copyright (c) [2018] SUSE LLC
#
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 of the GNU General Public License as published
# by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, contact SUSE LLC.
#
# To contact SUSE LLC about this file by physical or electronic mail, you may
# find current contact information at www.suse.com.
require_relative "../../test_helper"
require "y2firstboot/clients/configuration_management"
require "configuration_management/configurators/salt"
describe Y2Firstboot::Clients::ConfigurationManagement do
subject(:client) { described_class.new }
describe "#run" do
let(:provisioner) do
instance_double(Yast::ConfigurationManagement::Clients::Provision, run: nil)
end
let(:configurator) do
instance_double(Yast::ConfigurationManagement::Configurators::Salt, prepare: nil)
end
let(:settings) { { "states_roots" => ["/srv/salt"] } }
before do
allow(Yast::ProductFeatures).to receive(:GetFeature)
.with("globals", "configuration_management")
.and_return(settings)
allow(Yast::ConfigurationManagement::Clients::Provision).to receive(:new)
.and_return(provisioner)
allow(Yast::ConfigurationManagement::Configurators::Base).to receive(:for)
.and_return(configurator)
end
it "uses the configuration from the control file" do
expect(Yast::ConfigurationManagement::Configurators::Base).to receive(:for) do |config|
expect(config.states_roots).to include(Pathname.new("/srv/salt"))
configurator
end
client.run
end
context "when type or mode are specified in the configuration" do
let(:settings) { { "type" => "puppet", "mode" => "client" } }
it "forces type and mode" do
expect(Yast::ConfigurationManagement::Configurators::Base).to receive(:for)
.with(an_object_having_attributes(type: "salt", mode: :masterless))
.and_return(configurator)
client.run
end
end
context "when no settings are specified" do
let(:settings) { nil }
it "uses the default configuration" do
expect(Yast::ConfigurationManagement::Configurators::Base).to receive(:for)
.with(an_object_having_attributes(type: "salt")).and_return(configurator)
client.run
end
end
end
end