license-acceptance 1.0.13 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,127 +0,0 @@
1
- require "spec_helper"
2
- require "license_acceptance/config"
3
- require "license_acceptance/strategy/file"
4
- require "license_acceptance/product_relationship"
5
- require "license_acceptance/product"
6
-
7
- RSpec.describe LicenseAcceptance::Strategy::File do
8
- let(:dir1) { "/dir1" }
9
- let(:dir2) { "/dir2" }
10
- let(:dir3) { "/dir3" }
11
- let(:config) do
12
- instance_double(LicenseAcceptance::Config, license_locations: [dir1, dir2], persist_location: dir3)
13
- end
14
- let(:acc) { LicenseAcceptance::Strategy::File.new(config) }
15
- let(:p1_id) { "foo" }
16
- let(:p1_filename) { "p1_filename" }
17
- let(:p1_pretty) { "Pretty Name" }
18
- let(:p1) { instance_double(LicenseAcceptance::Product, id: p1_id, filename: p1_filename, pretty_name: p1_pretty) }
19
- let(:version) { "0.1.0" }
20
- let(:product_relationship) { instance_double(LicenseAcceptance::ProductRelationship, parent: p1, children: [], parent_version: version) }
21
- let(:mode) { File::WRONLY | File::CREAT | File::EXCL }
22
-
23
- describe "#check" do
24
- describe "when there is an existing license file" do
25
- it "returns an empty missing product list" do
26
- expect(File).to receive(:exist?).with(File.join(dir1, p1_filename)).and_return(true)
27
- expect(acc.accepted?(product_relationship)).to eq([])
28
- end
29
- end
30
-
31
- describe "when there is not an existing license file" do
32
- it "returns the product in the missing product list" do
33
- expect(File).to receive(:exist?).with(File.join(dir1, p1_filename)).and_return(false)
34
- expect(File).to receive(:exist?).with(File.join(dir2, p1_filename)).and_return(false)
35
- expect(acc.accepted?(product_relationship)).to eq([p1])
36
- end
37
- end
38
-
39
- describe "#persist" do
40
- let(:file) { double("file") }
41
-
42
- it "stores a single license without children" do
43
- expect(Dir).to receive(:exist?).with(dir3).and_return(true)
44
- expect(File).to receive(:open).with(File.join(dir3, p1_filename), mode).and_yield(file)
45
- expect(file).to receive(:<<) do |yaml|
46
- yaml = YAML.load(yaml)
47
- expect(yaml["id"]).to eq(p1_id)
48
- expect(yaml["name"]).to eq(p1_pretty)
49
- expect(yaml["accepting_product"]).to eq(p1_id)
50
- expect(yaml["accepting_product_version"]).to eq(version)
51
- end
52
- expect(acc.persist(product_relationship, [p1])).to eq([])
53
- end
54
-
55
- describe "when license has children" do
56
- let(:p2_id) { "bar" }
57
- let(:p2_filename) { "p2_filename" }
58
- let(:p2_pretty) { "Other Pretty Name" }
59
- let(:p2) { instance_double(LicenseAcceptance::Product, id: p2_id, filename: p2_filename, pretty_name: p2_pretty) }
60
- let(:product_relationship) {
61
- instance_double(
62
- LicenseAcceptance::ProductRelationship,
63
- parent: p1,
64
- children: [p2],
65
- parent_version: version
66
- )
67
- }
68
-
69
- it "stores a license file for all" do
70
- expect(Dir).to receive(:exist?).with(dir3).and_return(true)
71
- expect(File).to receive(:open).with(File.join(dir3, p1_filename), mode).and_yield(file)
72
- expect(file).to receive(:<<) do |yaml|
73
- yaml = YAML.load(yaml)
74
- expect(yaml["id"]).to eq(p1_id)
75
- expect(yaml["name"]).to eq(p1_pretty)
76
- expect(yaml["accepting_product"]).to eq(p1_id)
77
- expect(yaml["accepting_product_version"]).to eq(version)
78
- end
79
- expect(File).to receive(:open).with(File.join(dir3, p2_filename), mode).and_yield(file)
80
- expect(file).to receive(:<<) do |yaml|
81
- yaml = YAML.load(yaml)
82
- expect(yaml["id"]).to eq(p2_id)
83
- expect(yaml["name"]).to eq(p2_pretty)
84
- expect(yaml["accepting_product"]).to eq(p1_id)
85
- expect(yaml["accepting_product_version"]).to eq(version)
86
- end
87
- expect(acc.persist(product_relationship, [p1, p2])).to eq([])
88
- end
89
-
90
- describe "when parent is already persisted" do
91
- it "only stores a license file for the child" do
92
- expect(Dir).to receive(:exist?).with(dir3).and_return(true)
93
- expect(File).to receive(:open).once.with(File.join(dir3, p2_filename), mode).and_yield(file)
94
- expect(file).to receive(:<<) do |yaml|
95
- yaml = YAML.load(yaml)
96
- expect(yaml["id"]).to eq(p2_id)
97
- expect(yaml["name"]).to eq(p2_pretty)
98
- expect(yaml["accepting_product"]).to eq(p1_id)
99
- expect(yaml["accepting_product_version"]).to eq(version)
100
- end
101
- expect(acc.persist(product_relationship, [p2])).to eq([])
102
- end
103
- end
104
- end
105
-
106
- describe "when the folder cannot be created" do
107
- let(:err) { StandardError.new("foo") }
108
- it "returns the error" do
109
- expect(Dir).to receive(:exist?).with(dir3).and_return(false)
110
- expect(FileUtils).to receive(:mkdir_p).and_raise(err)
111
- expect(File).to_not receive(:open)
112
- expect(acc.persist(product_relationship, [p1])).to eq([err])
113
- end
114
- end
115
-
116
- describe "when the file cannot be written" do
117
- let(:err) { StandardError.new("bar") }
118
- it "returns the error" do
119
- expect(Dir).to receive(:exist?).with(dir3).and_return(true)
120
- expect(File).to receive(:open).with(File.join(dir3, p1_filename), mode).and_raise(err)
121
- expect(acc.persist(product_relationship, [p1])).to eq([err])
122
- end
123
- end
124
- end
125
-
126
- end
127
- end
@@ -1,100 +0,0 @@
1
- require "spec_helper"
2
- require "license_acceptance/strategy/prompt"
3
- require "license_acceptance/product"
4
- require "tty-prompt"
5
-
6
- RSpec.describe LicenseAcceptance::Strategy::Prompt do
7
- let(:output) { StringIO.new }
8
- let(:config) do
9
- instance_double(LicenseAcceptance::Config, output: output)
10
- end
11
- let(:acc) { LicenseAcceptance::Strategy::Prompt.new(config) }
12
- let(:prompt) { instance_double(TTY::Prompt) }
13
- let(:p1) { instance_double(LicenseAcceptance::Product, id: "foo", pretty_name: "Pretty Name") }
14
- let(:missing_licenses) { [p1] }
15
-
16
- before do
17
- expect(TTY::Prompt).to receive(:new).at_least(:once).and_return(prompt)
18
- end
19
-
20
- describe "when the user accepts" do
21
- it "returns true" do
22
- expect(prompt).to receive(:ask).and_return("yes")
23
- msg1 = /License that need accepting:\n \* #{p1.pretty_name}/m
24
- msg2 = /product license persisted\./
25
- b = Proc.new { [] }
26
- expect(acc.request(missing_licenses, &b)).to eq(true)
27
- expect(output.string).to match(msg1)
28
- expect(output.string).to match(msg2)
29
- end
30
-
31
- describe "when there are multiple products" do
32
- let(:p2) { instance_double(LicenseAcceptance::Product, id: "bar", pretty_name: "Other") }
33
- let(:missing_licenses) { [p1, p2] }
34
- it "returns true" do
35
- expect(prompt).to receive(:ask).and_return("yes")
36
- msg1 = /Licenses that need accepting:\n \* #{p1.pretty_name}\n \* #{p2.pretty_name}/m
37
- msg2 = /product licenses persisted\./
38
- msg3 = /2 product licenses\nmust be accepted/m
39
- b = Proc.new { [] }
40
- expect(acc.request(missing_licenses, &b)).to eq(true)
41
- expect(output.string).to match(msg1)
42
- expect(output.string).to match(msg2)
43
- expect(output.string).to match(msg3)
44
- end
45
- end
46
-
47
- describe "when the callback returns an error" do
48
- it "returns true" do
49
- expect(prompt).to receive(:ask).and_return("yes")
50
- msg1 = /License that need accepting:\n \* #{p1.pretty_name}/m
51
- msg2 = /Could not persist acceptance:/
52
- b = Proc.new { [StandardError.new("foo")] }
53
- expect(acc.request(missing_licenses, &b)).to eq(true)
54
- expect(output.string).to match(msg1)
55
- expect(output.string).to match(msg2)
56
- end
57
- end
58
- end
59
-
60
- describe "when the prompt times out" do
61
- it "returns false" do
62
- expect(Timeout).to receive(:timeout).twice.and_yield
63
- expect(prompt).to receive(:ask).twice.and_raise(LicenseAcceptance::Strategy::PromptTimeout)
64
- expect(prompt).to receive(:unsubscribe).twice
65
- expect(prompt).to receive(:reader).twice
66
- msg1 = /Prompt timed out./
67
- b = Proc.new { [] }
68
- expect(acc.request(missing_licenses, &b)).to eq(false)
69
- expect(output.string).to match(msg1)
70
- end
71
- end
72
-
73
- describe "when the user declines twice" do
74
- it "returns false" do
75
- expect(prompt).to receive(:ask).twice.and_return("no")
76
- msg1 = /License that need accepting:\n \* #{p1.pretty_name}/m
77
- msg2 = /product license persisted\./
78
- b = Proc.new { raise "should not be called" }
79
- expect(acc.request(missing_licenses, &b)).to eq(false)
80
- expect(output.string).to match(msg1)
81
- expect(output.string).to_not match(msg2)
82
- end
83
- end
84
-
85
- describe "when the user declines once then accepts" do
86
- it "returns true" do
87
- expect(prompt).to receive(:ask).and_return("no")
88
- expect(prompt).to receive(:ask).and_return("yes")
89
- msg1 = /License that need accepting:\n \* #{p1.pretty_name}/m
90
- msg2 = /product license persisted\./
91
- msg3 = /If you do not accept this license you will\nnot be able to use Chef products/m
92
- b = Proc.new { [] }
93
- expect(acc.request(missing_licenses, &b)).to eq(true)
94
- expect(output.string).to match(msg1)
95
- expect(output.string).to match(msg2)
96
- expect(output.string).to match(msg3)
97
- end
98
- end
99
-
100
- end
@@ -1,55 +0,0 @@
1
- require "spec_helper"
2
- require "license_acceptance/strategy/provided_value"
3
-
4
- RSpec.describe LicenseAcceptance::Strategy::ProvidedValue do
5
- let(:acc) { LicenseAcceptance::Strategy::ProvidedValue.new(value) }
6
-
7
- describe "#accepted?" do
8
- describe "when the value is correct" do
9
- let(:value) { "accept" }
10
- it "returns true" do
11
- expect(acc.accepted?).to eq(true)
12
- end
13
- end
14
-
15
- describe "when the value is incorrect" do
16
- let(:value) { nil }
17
- it "returns false" do
18
- expect(acc.accepted?).to eq(false)
19
- end
20
- end
21
- end
22
-
23
- describe "#silent?" do
24
- describe "when the value is correct" do
25
- let(:value) { "accept-silent" }
26
- it "returns true" do
27
- expect(acc.silent?).to eq(true)
28
- end
29
- end
30
-
31
- describe "when the value is incorrect" do
32
- let(:value) { "accept" }
33
- it "returns false" do
34
- expect(acc.silent?).to eq(false)
35
- end
36
- end
37
- end
38
-
39
- describe "#no_persist?" do
40
- describe "when the value is correct" do
41
- let(:value) { "accept-no-persist" }
42
- it "returns true" do
43
- expect(acc.no_persist?).to eq(true)
44
- end
45
- end
46
-
47
- describe "when the value is incorrect" do
48
- let(:value) { "accept-silent" }
49
- it "returns false" do
50
- expect(acc.no_persist?).to eq(false)
51
- end
52
- end
53
- end
54
-
55
- end
@@ -1,25 +0,0 @@
1
- require "bundler/setup"
2
- require "license_acceptance/logger"
3
- require "logger"
4
-
5
- RSpec.configure do |config|
6
- # Enable flags like --only-failures and --next-failure
7
- config.example_status_persistence_file_path = ".rspec_status"
8
-
9
- # Disable RSpec exposing methods globally on `Module` and `main`
10
- config.disable_monkey_patching!
11
-
12
- config.filter_run :focus => true
13
- config.run_all_when_everything_filtered = true
14
- config.mock_with :rspec do |mocks|
15
- mocks.verify_partial_doubles = true
16
- end
17
-
18
- config.expect_with :rspec do |c|
19
- c.syntax = :expect
20
- end
21
-
22
- config.before(:all) do
23
- LicenseAcceptance::Logger.initialize(::Logger.new(IO::NULL))
24
- end
25
- end