ridley 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,119 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ridley::Bootstrapper::Context do
4
+ let(:host) { "reset.riotgames.com" }
5
+
6
+ let(:options) do
7
+ {
8
+ server_url: "https://api.opscode.com/organizations/vialstudios",
9
+ validator_client: "chef-validator",
10
+ validator_path: fixtures_path.join("reset.pem").to_s,
11
+ encrypted_data_bag_secret_path: fixtures_path.join("reset.pem").to_s
12
+ }
13
+ end
14
+
15
+ describe "ClassMethods" do
16
+ subject { Ridley::Bootstrapper::Context }
17
+
18
+ describe "::new" do
19
+ context "when validator_path is not specified" do
20
+ let(:options) { Hash.new }
21
+
22
+ it "raises an ArgumentError" do
23
+ lambda {
24
+ subject.new(host, options)
25
+ }.should raise_error(Ridley::Errors::ArgumentError)
26
+ end
27
+ end
28
+
29
+ context "when a validator_path is specified" do
30
+ let(:options) do
31
+ {
32
+ server_url: "https://api.opscode.com/organizations/vialstudios",
33
+ validator_path: fixtures_path.join("reset.pem").to_s
34
+ }
35
+ end
36
+
37
+ it "sets a value for validation_key" do
38
+ subject.new(host, options).validation_key.should_not be_nil
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ subject { Ridley::Bootstrapper::Context.new(host, options) }
45
+
46
+ describe "#boot_command" do
47
+ it "returns a string" do
48
+ subject.boot_command.should be_a(String)
49
+ end
50
+ end
51
+
52
+ describe "#chef_run" do
53
+ it "returns a string" do
54
+ subject.chef_run.should be_a(String)
55
+ end
56
+ end
57
+
58
+ describe "#chef_config" do
59
+ it "returns a string" do
60
+ subject.chef_config.should be_a(String)
61
+ end
62
+ end
63
+
64
+ describe "#first_boot" do
65
+ it "returns a string" do
66
+ subject.first_boot.should be_a(String)
67
+ end
68
+ end
69
+
70
+ describe "#validation_key" do
71
+ it "returns a string" do
72
+ subject.validation_key.should be_a(String)
73
+ end
74
+
75
+ it "returns the chomped contents of the file found at validator_path" do
76
+ subject.validation_key.should eql(File.read(options[:validator_path]).chomp)
77
+ end
78
+
79
+ context "when a validator file is not found at validator_path" do
80
+ before(:each) do
81
+ subject.stub(:validator_path) { fixtures_path.join("not.txt").to_s }
82
+ end
83
+
84
+ it "raises a ValidatorNotFound error" do
85
+ lambda {
86
+ subject.validation_key
87
+ }.should raise_error(Ridley::Errors::ValidatorNotFound)
88
+ end
89
+ end
90
+ end
91
+
92
+ describe "#encrypted_data_bag_secret" do
93
+ it "returns a string" do
94
+ subject.encrypted_data_bag_secret.should be_a(String)
95
+ end
96
+
97
+ context "when a encrypted_data_bag_secret_path is not provided" do
98
+ before(:each) do
99
+ subject.stub(:encrypted_data_bag_secret_path) { nil }
100
+ end
101
+
102
+ it "returns nil" do
103
+ subject.encrypted_data_bag_secret.should be_nil
104
+ end
105
+ end
106
+
107
+ context "when the file is not found at the given encrypted_data_bag_secret_path" do
108
+ before(:each) do
109
+ subject.stub(:encrypted_data_bag_secret_path) { fixtures_path.join("not.txt").to_s }
110
+ end
111
+
112
+ it "raises an EncryptedDataBagSecretNotFound erorr" do
113
+ lambda {
114
+ subject.encrypted_data_bag_secret
115
+ }.should raise_error(Ridley::Errors::EncryptedDataBagSecretNotFound)
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ridley::Bootstrapper do
4
+ let(:nodes) do
5
+ [
6
+ "33.33.33.10"
7
+ ]
8
+ end
9
+
10
+ let(:options) do
11
+ {
12
+ ssh_user: "vagrant",
13
+ ssh_password: "vagrant",
14
+ server_url: "https://api.opscode.com/organizations/vialstudios",
15
+ validator_client: "vialstudios-validator",
16
+ validator_path: fixtures_path.join("reset.pem").to_s,
17
+ encrypted_data_bag_secret_path: fixtures_path.join("reset.pem").to_s
18
+ }
19
+ end
20
+
21
+ describe "ClassMethods" do
22
+ subject { Ridley::Bootstrapper }
23
+
24
+ describe "::new" do
25
+ context "given a single string for nodes" do
26
+ before(:each) do
27
+ @obj = subject.new("33.33.33.10", options)
28
+ end
29
+
30
+ it "has one node" do
31
+ @obj.hosts.should have(1).item
32
+ end
33
+
34
+ it "has one context" do
35
+ @obj.contexts.should have(1).item
36
+ end
37
+ end
38
+
39
+ context "given an an array of strings nodes" do
40
+ before(:each) do
41
+ @obj = subject.new(["33.33.33.10", "33.33.33.11"], options)
42
+ end
43
+
44
+ it "has a host for each item given" do
45
+ @obj.hosts.should have(2).items
46
+ end
47
+
48
+ it "has a context for each item given" do
49
+ @obj.contexts.should have(2).items
50
+ end
51
+ end
52
+ end
53
+
54
+ describe "::templates_path" do
55
+ it "returns a pathname" do
56
+ subject.templates_path.should be_a(Pathname)
57
+ end
58
+ end
59
+
60
+ describe "::default_template" do
61
+ it "returns a string" do
62
+ subject.default_template.should be_a(String)
63
+ end
64
+ end
65
+ end
66
+
67
+ subject { Ridley::Bootstrapper.new(nodes, options) }
68
+
69
+ describe "#hosts" do
70
+ it "returns an array of strings" do
71
+ subject.hosts.should be_a(Array)
72
+ subject.hosts.should each be_a(String)
73
+ end
74
+ end
75
+
76
+ describe "#contexts" do
77
+ it "returns an array of Bootstrapper::Contexts" do
78
+ subject.contexts.should be_a(Array)
79
+ subject.contexts.should each be_a(Ridley::Bootstrapper::Context)
80
+ end
81
+ end
82
+
83
+ describe "#run" do
84
+ pending
85
+ end
86
+ end
@@ -3,7 +3,39 @@ require 'spec_helper'
3
3
  describe Ridley::Node do
4
4
  it_behaves_like "a Ridley Resource", Ridley::Node
5
5
 
6
- let(:connection) { double("connection") }
6
+ let(:connection) do
7
+ double('conn',
8
+ server_url: "https://api.opscode.com/organizations/vialstudios",
9
+ validator_client: "chef-validator",
10
+ ssh: {
11
+ user: "reset",
12
+ password: "lol"
13
+ }
14
+ )
15
+ end
16
+
17
+ describe "ClassMethods" do
18
+ subject { Ridley::Node }
19
+
20
+ describe "::bootstrap" do
21
+ let(:boot_options) do
22
+ {
23
+ validator_path: fixtures_path.join("reset.pem").to_s,
24
+ encrypted_data_bag_secret_path: fixtures_path.join("reset.pem").to_s
25
+ }
26
+ end
27
+
28
+ it "bootstraps a single node" do
29
+ pending
30
+ subject.bootstrap(connection, "33.33.33.10", boot_options)
31
+ end
32
+
33
+ it "bootstraps multiple nodes" do
34
+ pending
35
+ subject.bootstrap(connection, "33.33.33.10", "33.33.33.11", boot_options)
36
+ end
37
+ end
38
+ end
7
39
 
8
40
  subject { Ridley::Node.new(connection) }
9
41
 
@@ -245,4 +277,12 @@ describe Ridley::Node do
245
277
  subject.public_hostname.should eql("reset.internal.riotgames.com")
246
278
  end
247
279
  end
280
+
281
+ describe "#chef_solo" do
282
+ pending
283
+ end
284
+
285
+ describe "#chef_client" do
286
+ pending
287
+ end
248
288
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ridley::SSH do
4
+ let(:connection) { double('conn', ssh: { user: "vagrant", password: "vagrant" }) }
5
+
6
+ let(:node_one) do
7
+ Ridley::Node.new(connection, automatic: { cloud: { public_hostname: "33.33.33.10" } })
8
+ end
9
+
10
+ let(:node_two) do
11
+ Ridley::Node.new(connection, automatic: { cloud: { public_hostname: "33.33.33.11" } })
12
+ end
13
+
14
+ describe "ClassMethods" do
15
+ subject { Ridley::SSH }
16
+
17
+ describe "::start" do
18
+ pending
19
+ end
20
+ end
21
+
22
+ subject { Ridley::SSH.new([node_one, node_two], user: "vagrant", password: "vagrant") }
23
+
24
+ describe "#workers" do
25
+ pending
26
+ end
27
+
28
+ describe "#run" do
29
+ pending
30
+ end
31
+ end
@@ -22,11 +22,5 @@ describe Ridley do
22
22
  subject.connection(config).should eql(conn)
23
23
  end
24
24
  end
25
-
26
- describe "::log" do
27
- it "returns the Ridley::Log singleton" do
28
- subject.log.should eql(Ridley::Log)
29
- end
30
- end
31
25
  end
32
26
  end