rightscale-nanite 0.4.1.4 → 0.4.1.10

Sign up to get free protection for your applications and to get access to all the features.
data/spec/packet_spec.rb DELETED
@@ -1,220 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- class TestPacket < Nanite::Packet
4
- @@cls_attr = "ignore"
5
- def initialize(attr1)
6
- @attr1 = attr1
7
- end
8
- end
9
-
10
- describe "Packet: Base class" do
11
-
12
- before(:all) do
13
- end
14
-
15
- it "should be an abstract class" do
16
- lambda { Nanite::Packet.new }.should raise_error(NotImplementedError, "Nanite::Packet is an abstract class.")
17
- end
18
-
19
- it "should know how to dump itself to JSON" do
20
- packet = TestPacket.new(1)
21
- packet.should respond_to(:to_json)
22
- end
23
-
24
- it "should dump the class name in 'json_class' JSON key" do
25
- packet = TestPacket.new(42)
26
- packet.to_json().should =~ /\"json_class\":\"TestPacket\"/
27
- end
28
-
29
- it "should dump instance variables in 'data' JSON key" do
30
- packet = TestPacket.new(188)
31
- packet.to_json().should =~ /\"data\":\{\"attr1\":188\}/
32
- end
33
-
34
- it "should not dump class variables" do
35
- packet = TestPacket.new(382)
36
- packet.to_json().should_not =~ /cls_attr/
37
- end
38
-
39
- it "should store instance variables in 'data' JSON key as JSON object" do
40
- packet = TestPacket.new(382)
41
- packet.to_json().should =~ /\"data\":\{[\w:"]+\}/
42
- end
43
-
44
- it "should remove '@' from instance variables" do
45
- packet = TestPacket.new(2)
46
- packet.to_json().should_not =~ /@attr1/
47
- packet.to_json().should =~ /attr1/
48
- end
49
- end
50
-
51
-
52
- describe "Packet: FileStart" do
53
- it "should dump/load as JSON objects" do
54
- packet = Nanite::FileStart.new('foo.txt', 'somewhere/foo.txt', '0xdeadbeef')
55
- packet2 = JSON.parse(packet.to_json)
56
- packet.filename.should == packet2.filename
57
- packet.dest.should == packet2.dest
58
- packet.token.should == packet2.token
59
- end
60
-
61
- it "should dump/load as Marshalled ruby objects" do
62
- packet = Nanite::FileStart.new('foo.txt', 'somewhere/foo.txt', '0xdeadbeef')
63
- packet2 = Marshal.load(Marshal.dump(packet))
64
- packet.filename.should == packet2.filename
65
- packet.dest.should == packet2.dest
66
- packet.token.should == packet2.token
67
- end
68
- end
69
-
70
-
71
- describe "Packet: FileEnd" do
72
- it "should dump/load as JSON objects" do
73
- packet = Nanite::FileEnd.new('0xdeadbeef', 'metadata')
74
- packet2 = JSON.parse(packet.to_json)
75
- packet.meta.should == packet2.meta
76
- packet.token.should == packet2.token
77
- end
78
-
79
- it "should dump/load as Marshalled ruby objects" do
80
- packet = Nanite::FileEnd.new('0xdeadbeef', 'metadata')
81
- packet2 = Marshal.load(Marshal.dump(packet))
82
- packet.meta.should == packet2.meta
83
- packet.token.should == packet2.token
84
- end
85
- end
86
-
87
-
88
- describe "Packet: FileChunk" do
89
- it "should dump/load as JSON objects" do
90
- packet = Nanite::FileChunk.new('chunk','0xdeadbeef')
91
- packet2 = JSON.parse(packet.to_json)
92
- packet.chunk.should == packet2.chunk
93
- packet.token.should == packet2.token
94
- end
95
-
96
- it "should dump/load as Marshalled ruby objects" do
97
- packet = Nanite::FileChunk.new('chunk','0xdeadbeef')
98
- packet2 = Marshal.load(Marshal.dump(packet))
99
- packet.chunk.should == packet2.chunk
100
- packet.token.should == packet2.token
101
- end
102
- end
103
-
104
-
105
- describe "Packet: Request" do
106
- it "should dump/load as JSON objects" do
107
- packet = Nanite::Request.new('/some/foo', 'payload', :from => 'from', :token => '0xdeadbeef', :reply_to => 'reply_to')
108
- packet2 = JSON.parse(packet.to_json)
109
- packet.type.should == packet2.type
110
- packet.payload.should == packet2.payload
111
- packet.from.should == packet2.from
112
- packet.token.should == packet2.token
113
- packet.reply_to.should == packet2.reply_to
114
- end
115
-
116
- it "should dump/load as Marshalled ruby objects" do
117
- packet = Nanite::Request.new('/some/foo', 'payload', :from => 'from', :token => '0xdeadbeef', :reply_to => 'reply_to')
118
- packet2 = Marshal.load(Marshal.dump(packet))
119
- packet.type.should == packet2.type
120
- packet.payload.should == packet2.payload
121
- packet.from.should == packet2.from
122
- packet.token.should == packet2.token
123
- packet.reply_to.should == packet2.reply_to
124
- end
125
- end
126
-
127
-
128
- describe "Packet: Result" do
129
- it "should dump/load as JSON objects" do
130
- packet = Nanite::Result.new('0xdeadbeef', 'to', 'results', 'from')
131
- packet2 = JSON.parse(packet.to_json)
132
- packet.token.should == packet2.token
133
- packet.to.should == packet2.to
134
- packet.results.should == packet2.results
135
- packet.from.should == packet2.from
136
- end
137
-
138
- it "should dump/load as Marshalled ruby objects" do
139
- packet = Nanite::Result.new('0xdeadbeef', 'to', 'results', 'from')
140
- packet2 = Marshal.load(Marshal.dump(packet))
141
- packet.token.should == packet2.token
142
- packet.to.should == packet2.to
143
- packet.results.should == packet2.results
144
- packet.from.should == packet2.from
145
- end
146
- end
147
-
148
-
149
- describe "Packet: IntermediateMessage" do
150
- it "should dump/load as JSON objects" do
151
- packet = Nanite::IntermediateMessage.new('0xdeadbeef', 'to', 'from', 'messagekey', 'message')
152
- packet2 = JSON.parse(packet.to_json)
153
- packet.token.should == packet2.token
154
- packet.to.should == packet2.to
155
- packet.from.should == packet2.from
156
- packet.messagekey.should == packet2.messagekey
157
- packet.message.should == packet2.message
158
- end
159
-
160
- it "should dump/load as Marshalled ruby objects" do
161
- packet = Nanite::IntermediateMessage.new('0xdeadbeef', 'to', 'from', 'messagekey', 'message')
162
- packet2 = Marshal.load(Marshal.dump(packet))
163
- packet.token.should == packet2.token
164
- packet.to.should == packet2.to
165
- packet.from.should == packet2.from
166
- packet.messagekey.should == packet2.messagekey
167
- packet.message.should == packet2.message
168
- end
169
- end
170
-
171
-
172
- describe "Packet: Register" do
173
- it "should dump/load as JSON objects" do
174
- packet = Nanite::Register.new('0xdeadbeef', ['/foo/bar', '/nik/qux'], 0.8, ['foo'])
175
- packet2 = JSON.parse(packet.to_json)
176
- packet.identity.should == packet2.identity
177
- packet.services.should == packet2.services
178
- packet.status.should == packet2.status
179
- end
180
-
181
- it "should dump/load as Marshalled ruby objects" do
182
- packet = Nanite::Register.new('0xdeadbeef', ['/foo/bar', '/nik/qux'], 0.8, ['foo'])
183
- packet2 = Marshal.load(Marshal.dump(packet))
184
- packet.identity.should == packet2.identity
185
- packet.services.should == packet2.services
186
- packet.status.should == packet2.status
187
- end
188
- end
189
-
190
-
191
- describe "Packet: UnRegister" do
192
- it "should dump/load as JSON objects" do
193
- packet = Nanite::UnRegister.new('0xdeadbeef')
194
- packet2 = JSON.parse(packet.to_json)
195
- packet.identity.should == packet2.identity
196
- end
197
-
198
- it "should dump/load as Marshalled ruby objects" do
199
- packet = Nanite::UnRegister.new('0xdeadbeef')
200
- packet2 = Marshal.load(Marshal.dump(packet))
201
- packet.identity.should == packet2.identity
202
- end
203
- end
204
-
205
-
206
- describe "Packet: Ping" do
207
- it "should dump/load as JSON objects" do
208
- packet = Nanite::Ping.new('0xdeadbeef', 0.8)
209
- packet2 = JSON.parse(packet.to_json)
210
- packet.identity.should == packet2.identity
211
- packet.status.should == packet2.status
212
- end
213
-
214
- it "should dump/load as Marshalled ruby objects" do
215
- packet = Nanite::Ping.new('0xdeadbeef', 0.8)
216
- packet2 = Marshal.load(Marshal.dump(packet))
217
- packet.identity.should == packet2.identity
218
- packet.status.should == packet2.status
219
- end
220
- end
@@ -1,33 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe Nanite::RsaKeyPair do
4
-
5
- before(:all) do
6
- @pair = Nanite::RsaKeyPair.new
7
- end
8
-
9
- it 'should create a private and a public keys' do
10
- @pair.has_private?.should be_true
11
- end
12
-
13
- it 'should strip out private key in to_public' do
14
- @pair.to_public.has_private?.should be_false
15
- end
16
-
17
- it 'should save' do
18
- filename = File.join(File.dirname(__FILE__), "key.pem")
19
- @pair.save(filename)
20
- File.size(filename).should be > 0
21
- File.delete(filename)
22
- end
23
-
24
- it 'should load' do
25
- filename = File.join(File.dirname(__FILE__), "key.pem")
26
- @pair.save(filename)
27
- key = Nanite::RsaKeyPair.load(filename)
28
- File.delete(filename)
29
- key.should_not be_nil
30
- key.data.should == @pair.data
31
- end
32
-
33
- end
@@ -1,41 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- module Nanite
4
-
5
- # Add the ability to compare pings for test purposes
6
- class Ping
7
- def ==(other)
8
- @status == other.status && @identity == other.identity
9
- end
10
- end
11
-
12
- end
13
-
14
- describe Nanite::SecureSerializer do
15
-
16
- include SpecHelpers
17
-
18
- before(:all) do
19
- @certificate, @key = issue_cert
20
- @store = Nanite::StaticCertificateStore.new(@certificate, @certificate)
21
- @identity = "id"
22
- @data = Nanite::Ping.new("Test", 0.5)
23
- end
24
-
25
- it 'should raise when not initialized' do
26
- lambda { Nanite::SecureSerializer.dump(@data) }.should raise_error
27
- end
28
-
29
- it 'should deserialize signed data' do
30
- Nanite::SecureSerializer.init(@identity, @certificate, @key, @store, false)
31
- data = Nanite::SecureSerializer.dump(@data)
32
- Nanite::SecureSerializer.load(data).should == @data
33
- end
34
-
35
- it 'should deserialize encrypted data' do
36
- Nanite::SecureSerializer.init(@identity, @certificate, @key, @store, true)
37
- data = Nanite::SecureSerializer.dump(@data)
38
- Nanite::SecureSerializer.load(data).should == @data
39
- end
40
-
41
- end
@@ -1,107 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe Nanite::Serializer do
4
-
5
- describe "Format" do
6
-
7
- it "supports JSON format" do
8
- [ :json, "json" ].each do |format|
9
- serializer = Nanite::Serializer.new(format)
10
- serializer.instance_eval { @serializers.first }.should == JSON
11
- end
12
- end
13
-
14
- it "supports Marshal format" do
15
- [ :marshal, "marshal" ].each do |format|
16
- serializer = Nanite::Serializer.new(format)
17
- serializer.instance_eval { @serializers.first }.should == Marshal
18
- end
19
- end
20
-
21
- it "supports YAML format" do
22
- [ :yaml, "yaml" ].each do |format|
23
- serializer = Nanite::Serializer.new(format)
24
- serializer.instance_eval { @serializers.first }.should == YAML
25
- end
26
- end
27
-
28
- it "should default to Marshal format if not specified" do
29
- serializer = Nanite::Serializer.new
30
- serializer.instance_eval { @serializers.first }.should == Marshal
31
- serializer = Nanite::Serializer.new(nil)
32
- serializer.instance_eval { @serializers.first }.should == Marshal
33
- end
34
-
35
- end # Format
36
-
37
- describe "Serialization of Packet" do
38
-
39
- it "should cascade through available serializers" do
40
- serializer = Nanite::Serializer.new
41
- serializer.should_receive(:cascade_serializers).with(:dump, "hello")
42
- serializer.dump("hello")
43
- end
44
-
45
- it "should try all three supported formats (JSON, Marshal, YAML)" do
46
- JSON.should_receive(:dump).with("hello").and_raise(StandardError)
47
- Marshal.should_receive(:dump).with("hello").and_raise(StandardError)
48
- YAML.should_receive(:dump).with("hello").and_raise(StandardError)
49
-
50
- lambda { Nanite::Serializer.new.dump("hello") }.should raise_error(Nanite::Serializer::SerializationError)
51
- end
52
-
53
- it "should raise SerializationError if packet could not be serialized" do
54
- JSON.should_receive(:dump).with("hello").and_raise(StandardError)
55
- Marshal.should_receive(:dump).with("hello").and_raise(StandardError)
56
- YAML.should_receive(:dump).with("hello").and_raise(StandardError)
57
-
58
- serializer = Nanite::Serializer.new
59
- lambda { serializer.dump("hello") }.should raise_error(Nanite::Serializer::SerializationError)
60
- end
61
-
62
- it "should return serialized packet" do
63
- serialized_packet = mock("Packet")
64
- Marshal.should_receive(:dump).with("hello").and_return(serialized_packet)
65
-
66
- serializer = Nanite::Serializer.new(:marshal)
67
- serializer.dump("hello").should == serialized_packet
68
- end
69
-
70
- end # Serialization of Packet
71
-
72
- describe "De-Serialization of Packet" do
73
-
74
- it "should cascade through available serializers" do
75
- serializer = Nanite::Serializer.new
76
- serializer.should_receive(:cascade_serializers).with(:load, "olleh")
77
- serializer.load("olleh")
78
- end
79
-
80
- it "should try all three supported formats (JSON, Marshal, YAML)" do
81
- JSON.should_receive(:load).with("olleh").and_raise(StandardError)
82
- Marshal.should_receive(:load).with("olleh").and_raise(StandardError)
83
- YAML.should_receive(:load).with("olleh").and_raise(StandardError)
84
-
85
- lambda { Nanite::Serializer.new.load("olleh") }.should raise_error(Nanite::Serializer::SerializationError)
86
- end
87
-
88
- it "should raise SerializationError if packet could not be de-serialized" do
89
- JSON.should_receive(:load).with("olleh").and_raise(StandardError)
90
- Marshal.should_receive(:load).with("olleh").and_raise(StandardError)
91
- YAML.should_receive(:load).with("olleh").and_raise(StandardError)
92
-
93
- serializer = Nanite::Serializer.new
94
- lambda { serializer.load("olleh") }.should raise_error(Nanite::Serializer::SerializationError)
95
- end
96
-
97
- it "should return de-serialized packet" do
98
- deserialized_packet = mock("Packet")
99
- Marshal.should_receive(:load).with("olleh").and_return(deserialized_packet)
100
-
101
- serializer = Nanite::Serializer.new(:marshal)
102
- serializer.load("olleh").should == deserialized_packet
103
- end
104
-
105
- end # De-Serialization of Packet
106
-
107
- end # Nanite::Serializer
@@ -1,30 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe Nanite::Signature do
4
-
5
- include SpecHelpers
6
-
7
- before(:all) do
8
- @test_data = "Test Data"
9
- @cert, @key = issue_cert
10
- @sig = Nanite::Signature.new(@test_data, @cert, @key)
11
- end
12
-
13
- it 'should create signed data' do
14
- @sig.to_s.should_not be_empty
15
- end
16
-
17
- it 'should verify the signature' do
18
- cert2, key2 = issue_cert
19
-
20
- @sig.should be_a_match(@cert)
21
- @sig.should_not be_a_match(cert2)
22
- end
23
-
24
- it 'should load from serialized signature' do
25
- sig2 = Nanite::Signature.from_data(@sig.data)
26
- sig2.should_not be_nil
27
- sig2.should be_a_match(@cert)
28
- end
29
-
30
- end
data/spec/spec_helper.rb DELETED
@@ -1,30 +0,0 @@
1
- $TESTING=true
2
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
-
4
- require 'rubygems'
5
- require 'spec'
6
- require 'nanite'
7
-
8
- module SpecHelpers
9
-
10
- # Create test certificate
11
- def issue_cert
12
- test_dn = { 'C' => 'US',
13
- 'ST' => 'California',
14
- 'L' => 'Santa Barbara',
15
- 'O' => 'Nanite',
16
- 'OU' => 'Certification Services',
17
- 'CN' => 'Nanite test' }
18
- dn = Nanite::DistinguishedName.new(test_dn)
19
- key = Nanite::RsaKeyPair.new
20
- [ Nanite::Certificate.new(key, dn, dn), key ]
21
- end
22
-
23
- def run_in_em(stop_event_loop = true)
24
- EM.run do
25
- yield
26
- EM.stop_event_loop if stop_event_loop
27
- end
28
- end
29
-
30
- end
@@ -1,30 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe Nanite::StaticCertificateStore do
4
-
5
- include SpecHelpers
6
-
7
- before(:all) do
8
- @signer, key = issue_cert
9
- @recipient, key = issue_cert
10
- @cert, @key = issue_cert
11
- @store = Nanite::StaticCertificateStore.new(@signer, @recipient)
12
- end
13
-
14
- it 'should not raise when passed nil objects' do
15
- res = nil
16
- lambda { res = @store.get_signer(nil) }.should_not raise_error
17
- res.should == [ @signer ]
18
- lambda { res = @store.get_recipients(nil) }.should_not raise_error
19
- res.should == [ @recipient ]
20
- end
21
-
22
- it 'should return signer certificates' do
23
- @store.get_signer('anything').should == [ @signer ]
24
- end
25
-
26
- it 'should return recipient certificates' do
27
- @store.get_recipients('anything').should == [ @recipient ]
28
- end
29
-
30
- end
data/spec/util_spec.rb DELETED
@@ -1,63 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe String do
4
-
5
- describe ".snake_case" do
6
-
7
- it "should downcase single word" do
8
- ["FOO", "Foo", "foo"].each do |w|
9
- w.snake_case.should == "foo"
10
- end
11
- end
12
-
13
- it "should not separate numbers from end of word" do
14
- ["Foo1234", "foo1234"].each do |w|
15
- w.snake_case.should == "foo1234"
16
- end
17
- end
18
-
19
- it "should separate numbers from word it starts with uppercase letter" do
20
- "1234Foo".snake_case.should == "1234_foo"
21
- end
22
-
23
- it "should not separate numbers from word starts with lowercase letter" do
24
- "1234foo".snake_case.should == "1234foo"
25
- end
26
-
27
- it "should downcase camel-cased words and connect with underscore" do
28
- ["FooBar", "fooBar"].each do |w|
29
- w.snake_case.should == "foo_bar"
30
- end
31
- end
32
-
33
- it "should start new word with uppercase letter before lower case letter" do
34
- ["FooBARBaz", "fooBARBaz"].each do |w|
35
- w.snake_case.should == "foo_bar_baz"
36
- end
37
- end
38
-
39
- end
40
-
41
- describe ".to_const_path" do
42
-
43
- it "should snake-case the string" do
44
- str = "hello"
45
- str.should_receive(:snake_case).and_return("snake-cased hello")
46
- str.to_const_path
47
- end
48
-
49
- it "should leave (snake-cased) string without '::' unchanged" do
50
- "hello".to_const_path.should == "hello"
51
- end
52
-
53
- it "should replace single '::' with '/'" do
54
- "hello::world".to_const_path.should == "hello/world"
55
- end
56
-
57
- it "should replace multiple '::' with '/'" do
58
- "hello::nanite::world".to_const_path.should == "hello/nanite/world"
59
- end
60
-
61
- end
62
-
63
- end # String