bosh-core 1.5.0.pre.1226 → 1.5.0.pre.1244

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.
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Core
3
- VERSION = '1.5.0.pre.1226'
3
+ VERSION = '1.5.0.pre.1244'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0.pre.1226
4
+ version: 1.5.0.pre.1244
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-01 00:00:00.000000000 Z
12
+ date: 2013-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gibberish
@@ -97,18 +97,10 @@ executables: []
97
97
  extensions: []
98
98
  extra_rdoc_files: []
99
99
  files:
100
- - .gitignore
101
- - .rspec
102
- - bosh-core.gemspec
103
100
  - lib/bosh/core.rb
104
101
  - lib/bosh/core/encryption_handler.rb
105
102
  - lib/bosh/core/shell.rb
106
103
  - lib/bosh/core/version.rb
107
- - spec/bosh/core/shell_spec.rb
108
- - spec/bosh/core/version_spec.rb
109
- - spec/bosh/core_spec.rb
110
- - spec/bosh/encryption_handler_spec.rb
111
- - spec/spec_helper.rb
112
104
  homepage: https://github.com/cloudfoundry/bosh
113
105
  licenses:
114
106
  - Apache 2.0
@@ -134,9 +126,4 @@ rubygems_version: 1.8.23
134
126
  signing_key:
135
127
  specification_version: 3
136
128
  summary: Bosh::Core provides things BOSH needs to exist
137
- test_files:
138
- - spec/bosh/core/shell_spec.rb
139
- - spec/bosh/core/version_spec.rb
140
- - spec/bosh/core_spec.rb
141
- - spec/bosh/encryption_handler_spec.rb
142
- - spec/spec_helper.rb
129
+ test_files: []
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color
data/bosh-core.gemspec DELETED
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- version = File.read(File.expand_path('../../BOSH_VERSION', __FILE__)).strip
3
-
4
- Gem::Specification.new do |spec|
5
- spec.name = 'bosh-core'
6
- spec.version = version
7
- spec.authors = 'Pivotal'
8
- spec.email = 'support@cloudfoundry.com'
9
- spec.description = 'Bosh::Core provides things BOSH needs to exist'
10
- spec.summary = 'Bosh::Core provides things BOSH needs to exist'
11
- spec.homepage = 'https://github.com/cloudfoundry/bosh'
12
- spec.license = 'Apache 2.0'
13
-
14
- spec.required_ruby_version = Gem::Requirement.new('>= 1.9.3')
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = %w[lib]
20
-
21
- spec.add_dependency 'gibberish', '~>1.2.0'
22
- spec.add_dependency 'yajl-ruby', '~>1.1.0'
23
-
24
- spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'rspec-fire'
27
- end
@@ -1,66 +0,0 @@
1
- require 'spec_helper'
2
- require 'bosh/core/shell'
3
-
4
- module Bosh::Core
5
- describe Shell do
6
- let(:stdout) { StringIO.new }
7
-
8
- subject do
9
- Shell.new(stdout)
10
- end
11
-
12
- describe '#run' do
13
- it 'shells out, prints and returns the output of the command' do
14
- expect(subject.run('echo hello; echo world')).to eq("hello\nworld")
15
- expect(stdout.string).to eq("hello\nworld\n")
16
- end
17
-
18
- context 'when "output_command" is specified' do
19
- it 'outputs the command' do
20
- cmd = 'echo 1;echo 2;echo 3;echo 4;echo 5'
21
- subject.run(cmd, output_command: true)
22
-
23
- expect(stdout.string).to include('echo 1;echo 2;echo 3;echo 4;echo 5')
24
- end
25
- end
26
-
27
- context 'when "last_number" is specified' do
28
- it 'tails "last_number" lines of output' do
29
- cmd = 'echo 1;echo 2;echo 3;echo 4;echo 5'
30
- expect(subject.run(cmd, last_number: 3)).to eq("3\n4\n5")
31
- expect(stdout.string).to eq("1\n2\n3\n4\n5\n")
32
- end
33
-
34
- it 'outputs the entire output if more lines are requested than generated' do
35
- cmd = 'echo 1;echo 2;echo 3;echo 4;echo 5'
36
- expect(subject.run(cmd, last_number: 6)).to eq("1\n2\n3\n4\n5")
37
- expect(stdout.string).to eq("1\n2\n3\n4\n5\n")
38
- end
39
- end
40
-
41
- context 'when the command fails' do
42
- it 'raises an error' do
43
- expect {
44
- subject.run('false')
45
- }.to raise_error /Failed: 'false' from /
46
- end
47
-
48
- context 'because the working directory has gone missing' do
49
- it 'fails gracefully with a slightly helpful error message' do
50
- Dir.stub(:pwd).and_raise(Errno::ENOENT, 'No such file or directory - getcwd')
51
- expect {
52
- subject.run('false')
53
- }.to raise_error /from a deleted directory/
54
- end
55
- end
56
-
57
- context 'and ignoring failures' do
58
- it 'raises an error' do
59
- subject.run('false', ignore_failures: true)
60
- expect(stdout.string).to match(/continuing anyway/)
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
- require 'bosh/core/version'
3
-
4
- module Bosh::Core
5
- describe VERSION do
6
- let(:bosh_version_file) do
7
- File.expand_path('../../../../BOSH_VERSION', File.dirname(__FILE__))
8
- end
9
-
10
- it { should eq(File.read(bosh_version_file).strip) }
11
- end
12
- end
@@ -1,6 +0,0 @@
1
- require 'spec_helper'
2
- require 'bosh/core'
3
-
4
- describe Bosh::Core do
5
- it { should be_a(Module) }
6
- end
@@ -1,135 +0,0 @@
1
- require 'spec_helper'
2
- require 'bosh/core/encryption_handler'
3
-
4
- module Bosh::Core
5
- describe EncryptionHandler do
6
- before(:each) do
7
- @credentials = EncryptionHandler.generate_credentials
8
- @cipher = Gibberish::AES.new(@credentials['crypt_key'])
9
- @sign_key = @credentials['sign_key']
10
- end
11
-
12
- it 'should encrypt data' do
13
- handler = EncryptionHandler.new('client_id', @credentials)
14
- encrypted_data = handler.encrypt('hubba' => 'bubba')
15
-
16
- # double decode is not an error - data need to be serialized before it is
17
- # signed and then serialized again to be encrypted
18
- decrypted_data = handler.decode(handler.decode(@cipher.decrypt(encrypted_data))['json_data'])
19
- decrypted_data['hubba'].should eq 'bubba'
20
- end
21
-
22
- it 'should be signed' do
23
- handler = EncryptionHandler.new('client_id', @credentials)
24
- encrypted_data = handler.encrypt('hubba' => 'bubba')
25
-
26
- decrypted_data = handler.decode(@cipher.decrypt(encrypted_data))
27
- signature = decrypted_data['hmac']
28
- json_data = decrypted_data['json_data']
29
-
30
- signature.should eq Gibberish.HMAC(@sign_key, json_data, { digest: :sha256 })
31
- end
32
-
33
- it 'should decrypt' do
34
- handler = EncryptionHandler.new('client_id', @credentials)
35
-
36
- encrypted_data = handler.encrypt('hubba' => 'bubba')
37
- handler.decrypt(encrypted_data)['hubba'].should eq 'bubba'
38
- end
39
-
40
- it 'should verify signature' do
41
- handler = EncryptionHandler.new('client_id', @credentials)
42
-
43
- encrypted_data = handler.encrypt('hubba' => 'bubba')
44
-
45
- # build bad data
46
- manipulated_data = handler.decode(@cipher.decrypt(encrypted_data))
47
- manipulated_data['hmac'] = 'foo'
48
- encrypted_manipulated_data = @cipher.encrypt(handler.encode(manipulated_data))
49
-
50
- lambda {
51
- handler.decrypt(encrypted_manipulated_data)
52
- }.should raise_error(EncryptionHandler::SignatureError,
53
- /Expected hmac \(foo\)/)
54
- end
55
-
56
- it 'should verify session' do
57
- handler = EncryptionHandler.new('client_id', @credentials)
58
-
59
- encrypted_data = handler.encrypt('knife' => 'fork')
60
-
61
- # build bad data
62
- decrypted_data = handler.decode(@cipher.decrypt(encrypted_data))
63
-
64
- bad_data = handler.decode(decrypted_data['json_data'])
65
- bad_data['session_id'] = 'bad_session_data'
66
-
67
- bad_json_data = handler.encode(bad_data)
68
-
69
- manipulated_data = {
70
- 'hmac' => handler.signature(bad_json_data),
71
- 'json_data' => bad_json_data
72
- }
73
-
74
- encrypted_manipulated_data = @cipher.encrypt(handler.encode(manipulated_data))
75
-
76
- lambda {
77
- handler.decrypt(encrypted_manipulated_data)
78
- }.should raise_error(EncryptionHandler::SessionError)
79
- end
80
-
81
- it 'should decrypt for multiple messages' do
82
- h1 = EncryptionHandler.new('client_id', @credentials)
83
- h2 = EncryptionHandler.new('client_id', @credentials)
84
- encrypted_data1 = h1.encrypt('hubba' => 'bubba')
85
- encrypted_data2 = h1.encrypt('bubba' => 'hubba')
86
-
87
- h2.decrypt(encrypted_data1)['hubba'].should eq 'bubba'
88
- h2.decrypt(encrypted_data2)['bubba'].should eq 'hubba'
89
- end
90
-
91
- it 'should exchange messages' do
92
- h1 = EncryptionHandler.new('client_id', @credentials)
93
- h2 = EncryptionHandler.new('client_id', @credentials)
94
-
95
- encrypted_data1 = h1.encrypt('hubba' => 'bubba')
96
- h2.decrypt(encrypted_data1)['hubba'].should eq 'bubba'
97
-
98
- encrypted_data2 = h2.encrypt('kermit' => 'frog')
99
- h1.decrypt(encrypted_data2)['kermit'].should eq 'frog'
100
-
101
- encrypted_data3 = h1.encrypt('frank' => 'zappa')
102
- h2.decrypt(encrypted_data3)['frank'].should eq 'zappa'
103
- end
104
-
105
- it 'should fail when sequence number is out of order' do
106
- handler = EncryptionHandler.new('client_id', @credentials)
107
- encrypted_data1 = handler.encrypt('foo' => 'bar')
108
- encrypted_data2 = handler.encrypt('baz' => 'bus')
109
-
110
- handler.decrypt(encrypted_data2)
111
-
112
- lambda {
113
- handler.decrypt(encrypted_data1)
114
- }.should raise_error(EncryptionHandler::SequenceNumberError)
115
- end
116
-
117
- it 'should handle garbage encrypt args' do
118
- handler = EncryptionHandler.new('client_id', @credentials)
119
- lambda {
120
- handler.encrypt('bleh')
121
- }.should raise_error(ArgumentError)
122
- end
123
-
124
- it 'should handle garbage decrypt args' do
125
- handler = EncryptionHandler.new('client_id', @credentials)
126
- lambda {
127
- handler.decrypt('f')
128
- }.should raise_error(EncryptionHandler::DecryptionError, /TypeError/)
129
-
130
- lambda {
131
- handler.decrypt('fddddddddddddddddddddddddddddddddddddddddddddddddd')
132
- }.should raise_error(EncryptionHandler::DecryptionError, /CipherError/)
133
- end
134
- end
135
- end
data/spec/spec_helper.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'rspec'
2
-
3
- Dir.glob(File.expand_path('support/**/*.rb', File.dirname(__FILE__))).each do |support|
4
- require support
5
- end