sanford-protocol 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA512:
3
+ metadata.gz: 68b7b525fe9392a33da58986ca25635e1f7a5d3b85c3693d91c997e590454926b3f4dafdae56ba312c14abb303d71ba63b5b2696daea971ec27e7974d40e72ef
4
+ data.tar.gz: 463b28ddbf3a33f4e337c632bcd041c3bcbfcdd16c9f2bf2a4acd217c02fdb7befb0d620311c322b01e6b46e9be54a17d7f4f23e93eff1dfda99d3ee00f85961
5
+ SHA1:
6
+ metadata.gz: a74f6081b63378c6751e542f72f1567a2bac8b7e
7
+ data.tar.gz: d6883452581ee91aa26edc5fc6cddaa1d7ef30e7
data/README.md CHANGED
@@ -144,7 +144,7 @@ incoming_response = Sanford::Protocol::Response.parse(data_hash)
144
144
 
145
145
  ## Test Helpers
146
146
 
147
- A `FakeSocket` helper class and an associated `Test::Helpers` module are provided to help test receiving and sending Sanford::Protocol messages without using real sockets.
147
+ A `FakeSocket` helper class and an associated `TestHelpers` module are provided to help test receiving and sending Sanford::Protocol messages without using real sockets.
148
148
 
149
149
  ```ruby
150
150
  # fake a socket with some incoming binary
@@ -5,7 +5,9 @@ require 'sanford-protocol/request'
5
5
  # environment. Instead of passing a real socket, pass an instance of this class.
6
6
  # It mimics the socket API that sanford is concerned with.
7
7
 
8
- module Sanford::Protocol::Test
8
+ module Sanford; end
9
+ module Sanford::Protocol
10
+
9
11
  class FakeSocket
10
12
 
11
13
  def self.with_request(*request_params)
@@ -64,4 +66,5 @@ module Sanford::Protocol::Test
64
66
  end
65
67
 
66
68
  end
69
+
67
70
  end
@@ -17,7 +17,7 @@ module Sanford::Protocol
17
17
 
18
18
  def initialize(name, params)
19
19
  self.validate!(name, params)
20
- @name, @params = name, params
20
+ @name, @params = name.to_s, params
21
21
  end
22
22
 
23
23
  def to_hash
@@ -40,7 +40,7 @@ module Sanford::Protocol
40
40
  def validate!(name, params)
41
41
  problem = if !name
42
42
  "The request doesn't contain a name."
43
- elsif !params.kind_of?(Hash)
43
+ elsif !params.kind_of?(::Hash)
44
44
  "The request's params are not a valid BSON document."
45
45
  end
46
46
  raise(BadRequestError, problem) if problem
@@ -3,6 +3,7 @@
3
3
 
4
4
  module Sanford; end
5
5
  module Sanford::Protocol
6
+
6
7
  class ResponseStatus < Struct.new(:code_obj, :message)
7
8
 
8
9
  def initialize(code, message = nil)
@@ -43,4 +44,5 @@ module Sanford::Protocol
43
44
  end
44
45
 
45
46
  end
47
+
46
48
  end
@@ -1,25 +1,27 @@
1
- require 'sanford-protocol/test/fake_socket'
1
+ require 'sanford-protocol/fake_socket'
2
+ require 'sanford-protocol/connection'
2
3
  require 'sanford-protocol/response'
3
4
 
4
- module Sanford::Protocol::Test
5
+ module Sandord; end
6
+ module Sanford::Protocol
5
7
 
6
- module Helpers
8
+ module TestHelpers
7
9
  extend self
8
10
 
9
11
  def fake_socket_with_request(*args)
10
- FakeSocket.with_request(*args)
12
+ Sanford::Protocol::FakeSocket.with_request(*args)
11
13
  end
12
14
 
13
15
  def fake_socket_with_msg_body(*args)
14
- FakeSocket.with_msg_body(*args)
16
+ Sanford::Protocol::FakeSocket.with_msg_body(*args)
15
17
  end
16
18
 
17
19
  def fake_socket_with_encoded_msg_body(*args)
18
- FakeSocket.with_encoded_msg_body(*args)
20
+ Sanford::Protocol::FakeSocket.with_encoded_msg_body(*args)
19
21
  end
20
22
 
21
23
  def fake_socket_with(*args)
22
- FakeSocket.new(*args)
24
+ Sanford::Protocol::FakeSocket.new(*args)
23
25
  end
24
26
 
25
27
  def read_response_from_fake_socket(from_fake_socket)
@@ -28,7 +30,7 @@ module Sanford::Protocol::Test
28
30
  end
29
31
 
30
32
  def read_written_response_from_fake_socket(from_fake_socket)
31
- read_response_from_fake_socket(FakeSocket.new(from_fake_socket.out))
33
+ read_response_from_fake_socket(Sanford::Protocol::FakeSocket.new(from_fake_socket.out))
32
34
  end
33
35
 
34
36
  end
@@ -1,5 +1,5 @@
1
1
  module Sanford
2
2
  module Protocol
3
- GEM_VERSION = "0.6.0"
3
+ GEM_VERSION = "0.7.0"
4
4
  end
5
5
  end
@@ -19,6 +19,6 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_dependency("bson", ["~> 1.7"])
21
21
 
22
- gem.add_development_dependency("assert", ["~> 2.3"])
23
- gem.add_development_dependency("assert-mocha", ["~> 1.0"])
22
+ gem.add_development_dependency("assert", ["~> 2.10"])
23
+ gem.add_development_dependency("assert-mocha", ["~> 1.1"])
24
24
  end
@@ -9,14 +9,14 @@ require 'pry'
9
9
 
10
10
  ENV['SANFORD_PROTOCOL_DEBUG'] = 'yes'
11
11
 
12
- require 'sanford-protocol/test/fake_socket'
13
- FakeSocket = Sanford::Protocol::Test::FakeSocket
12
+ require 'sanford-protocol/fake_socket'
13
+ FakeSocket = Sanford::Protocol::FakeSocket
14
14
 
15
15
  require 'assert-mocha' if defined?(Assert)
16
16
 
17
17
  class Assert::Context
18
18
 
19
- def setup_some_msg_data(data=nil)
19
+ def setup_some_msg_data(data = nil)
20
20
  @data = data || { 'something' => true }
21
21
  @encoded_body = Sanford::Protocol.msg_body.encode(@data)
22
22
  @encoded_size = Sanford::Protocol.msg_size.encode(@encoded_body.bytesize)
@@ -3,7 +3,7 @@ require 'sanford-protocol/connection'
3
3
 
4
4
  class Sanford::Protocol::Connection
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "Sanford::Protocol::Connection"
8
8
  setup do
9
9
  setup_some_msg_data
@@ -39,7 +39,7 @@ class Sanford::Protocol::Connection
39
39
 
40
40
  end
41
41
 
42
- class RealConnectionTests < BaseTests
42
+ class RealConnectionTests < UnitTests
43
43
 
44
44
  def start_server(options, &block)
45
45
  begin
@@ -1,11 +1,12 @@
1
1
  require 'assert'
2
- require 'sanford-protocol/test/fake_socket'
2
+ require 'sanford-protocol/fake_socket'
3
+
3
4
  require 'sanford-protocol/request'
4
5
 
5
- class Sanford::Protocol::Test::FakeSocket
6
+ class Sanford::Protocol::FakeSocket
6
7
 
7
- class BaseTests < Assert::Context
8
- desc "a FakeSocket"
8
+ class UnitTests < Assert::Context
9
+ desc "Sanford::Protocol::FakeSocket"
9
10
  setup do
10
11
  @fs = FakeSocket.new
11
12
  end
@@ -27,7 +28,7 @@ class Sanford::Protocol::Test::FakeSocket
27
28
 
28
29
  end
29
30
 
30
- class WithInDataTests < BaseTests
31
+ class WithInDataTests < UnitTests
31
32
  desc "created given some data"
32
33
  setup do
33
34
  @in_data = 'some in data'
@@ -51,7 +52,7 @@ class Sanford::Protocol::Test::FakeSocket
51
52
 
52
53
  end
53
54
 
54
- class EncodedMessageTests < BaseTests
55
+ class EncodedMessageTests < UnitTests
55
56
  desc "with encoded msg data"
56
57
  setup do
57
58
  setup_some_msg_data
@@ -69,7 +70,7 @@ class Sanford::Protocol::Test::FakeSocket
69
70
 
70
71
  end
71
72
 
72
- class RequestTests < BaseTests
73
+ class RequestTests < UnitTests
73
74
  desc "that is a request"
74
75
  setup do
75
76
  setup_some_request_data
@@ -1,6 +1,7 @@
1
1
  require 'assert'
2
2
  require 'sanford-protocol/msg_data'
3
- require 'sanford-protocol'
3
+
4
+ require 'sanford-protocol/connection'
4
5
 
5
6
  class Sanford::Protocol::MsgData
6
7
 
@@ -3,21 +3,31 @@ require 'sanford-protocol/request'
3
3
 
4
4
  class Sanford::Protocol::Request
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "Sanford::Protocol::Request"
8
8
  setup do
9
9
  @request = Sanford::Protocol::Request.new('some_service', { 'key' => 'value' })
10
10
  end
11
11
  subject{ @request }
12
12
 
13
- should have_instance_methods :name, :params, :to_hash
14
- should have_class_methods :parse
13
+ should have_imeths :name, :params, :to_hash
14
+ should have_cmeths :parse
15
+
16
+ should "know its name and params" do
17
+ assert_equal 'some_service', subject.name
18
+ assert_equal({ 'key' => 'value' }, subject.params)
19
+ end
20
+
21
+ should "force string request names" do
22
+ request = Sanford::Protocol::Request.new(:symbol_service_name, {})
23
+ assert_equal 'symbol_service_name', request.name
24
+ end
15
25
 
16
26
  should "return it's name with #to_s" do
17
27
  assert_equal subject.name, subject.to_s
18
28
  end
19
29
 
20
- should "return an instance of a Sanford::Protocol::Request given a hash using #parse" do
30
+ should "parse requests given a body hash" do
21
31
  # using BSON messages are hashes
22
32
  hash = {
23
33
  'name' => 'service_name',
@@ -33,7 +43,7 @@ class Sanford::Protocol::Request
33
43
  should "return the request as a hash with stringified params with #to_hash" do
34
44
  # using BSON, messages are hashes
35
45
  request = Sanford::Protocol::Request.new('service', {
36
- 1 => 1,
46
+ 1 => 1,
37
47
  :symbol => :symbol
38
48
  })
39
49
  expected = {
@@ -45,7 +55,7 @@ class Sanford::Protocol::Request
45
55
 
46
56
  end
47
57
 
48
- class ValidTests < BaseTests
58
+ class ValidTests < UnitTests
49
59
 
50
60
  should "not raise an exception with valid request args" do
51
61
  assert_nothing_raised do
@@ -3,7 +3,7 @@ require 'sanford-protocol/response_status'
3
3
 
4
4
  class Sanford::Protocol::ResponseStatus
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "Sanford::Protocol::ResponseStatus"
8
8
  setup do
9
9
  @status = Sanford::Protocol::ResponseStatus.new(200, "OK")
@@ -11,7 +11,7 @@ class Sanford::Protocol::ResponseStatus
11
11
  subject{ @status }
12
12
 
13
13
  should have_readers :code_obj, :message
14
- should have_instance_methods :code, :name, :to_i
14
+ should have_imeths :code, :name, :to_i
15
15
 
16
16
  should "know it's code name" do
17
17
  named = Sanford::Protocol::ResponseStatus.new(200)
@@ -3,15 +3,15 @@ require 'sanford-protocol/response'
3
3
 
4
4
  class Sanford::Protocol::Response
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "Sanford::Protocol::Response"
8
8
  setup do
9
9
  @response = Sanford::Protocol::Response.new([ 672, 'YAR!' ], { 'something' => true })
10
10
  end
11
11
  subject{ @response }
12
12
 
13
- should have_instance_methods :status, :code, :data, :to_hash, :to_s
14
- should have_class_methods :parse
13
+ should have_imeths :status, :code, :data, :to_hash, :to_s
14
+ should have_cmeths :parse
15
15
 
16
16
  should "return its status#code with #code" do
17
17
  assert_equal subject.status.code, subject.code
@@ -49,7 +49,7 @@ class Sanford::Protocol::Response
49
49
 
50
50
  # Somewhat of a system test, want to make sure if Response is passed some
51
51
  # "fuzzy" args that it will build it's status object as expected
52
- class StatusBuildingTests < BaseTests
52
+ class StatusBuildingTests < UnitTests
53
53
 
54
54
  should "build a status with it's code set, given an integer" do
55
55
  response = Sanford::Protocol::Response.new(574)
@@ -75,8 +75,8 @@ class Sanford::Protocol::Response
75
75
  should "build a status with a code and message set, when given both" do
76
76
  response = Sanford::Protocol::Response.new([ 348, "my message" ])
77
77
 
78
- assert_equal 348, response.status.code
79
- assert_equal "my message", response.status.message
78
+ assert_equal 348, response.status.code
79
+ assert_equal "my message", response.status.message
80
80
  end
81
81
  end
82
82
 
@@ -1,16 +1,17 @@
1
+ require 'assert'
2
+ require 'sanford-protocol'
3
+
1
4
  # These tests are intended to be brittle and make sure the protocol conforms to
2
5
  # an expected spec. If any of these tests fail, you probably need to modify the
3
6
  # protocol's version constant.
4
7
 
5
- require 'assert'
6
- require 'sanford-protocol'
7
-
8
8
  module Sanford::Protocol
9
- class BaseTests < Assert::Context
9
+
10
+ class UnitTests < Assert::Context
10
11
  desc "Sanford::Protocol"
11
12
  subject{ Sanford::Protocol }
12
13
 
13
- should have_instance_methods :msg_version, :msg_size, :msg_body
14
+ should have_imeths :msg_version, :msg_size, :msg_body
14
15
 
15
16
  should "define the protocol version" do
16
17
  assert_equal 2, subject::VERSION
@@ -1,11 +1,13 @@
1
1
  require 'assert'
2
- require 'sanford-protocol/test/helpers'
2
+ require 'sanford-protocol/test_helpers'
3
3
 
4
- module Sanford::Protocol::Test::Helpers
4
+ require 'sanford-protocol/response'
5
5
 
6
- class BaseTests < Assert::Context
7
- desc "the test helpers"
8
- subject { Sanford::Protocol::Test::Helpers }
6
+ module Sanford::Protocol::TestHelpers
7
+
8
+ class UnitTests < Assert::Context
9
+ desc "Sanford::Protocol::TestHelpers"
10
+ subject { Sanford::Protocol::TestHelpers }
9
11
 
10
12
  should have_imeths :fake_socket_with_request, :fake_socket_with_msg_body
11
13
  should have_imeths :fake_socket_with_encoded_msg_body, :fake_socket_with
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanford-protocol
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease:
6
- segments:
7
- - 0
8
- - 6
9
- - 0
10
- version: 0.6.0
4
+ version: 0.7.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - Collin Redding
@@ -16,53 +10,38 @@ autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
12
 
19
- date: 2013-10-14 00:00:00 Z
13
+ date: 2014-06-06 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- none: false
16
+ requirement: &id001 !ruby/object:Gem::Requirement
24
17
  requirements:
25
18
  - - ~>
26
19
  - !ruby/object:Gem::Version
27
- hash: 1
28
- segments:
29
- - 1
30
- - 7
31
20
  version: "1.7"
32
21
  type: :runtime
33
- requirement: *id001
34
- prerelease: false
22
+ version_requirements: *id001
35
23
  name: bson
24
+ prerelease: false
36
25
  - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
38
- none: false
26
+ requirement: &id002 !ruby/object:Gem::Requirement
39
27
  requirements:
40
28
  - - ~>
41
29
  - !ruby/object:Gem::Version
42
- hash: 5
43
- segments:
44
- - 2
45
- - 3
46
- version: "2.3"
30
+ version: "2.10"
47
31
  type: :development
48
- requirement: *id002
49
- prerelease: false
32
+ version_requirements: *id002
50
33
  name: assert
34
+ prerelease: false
51
35
  - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
53
- none: false
36
+ requirement: &id003 !ruby/object:Gem::Requirement
54
37
  requirements:
55
38
  - - ~>
56
39
  - !ruby/object:Gem::Version
57
- hash: 15
58
- segments:
59
- - 1
60
- - 0
61
- version: "1.0"
40
+ version: "1.1"
62
41
  type: :development
63
- requirement: *id003
64
- prerelease: false
42
+ version_requirements: *id003
65
43
  name: assert-mocha
44
+ prerelease: false
66
45
  description: Ruby implementation of the Sanford TCP communication protocol.
67
46
  email:
68
47
  - collin.redding@me.com
@@ -81,63 +60,56 @@ files:
81
60
  - Rakefile
82
61
  - lib/sanford-protocol.rb
83
62
  - lib/sanford-protocol/connection.rb
63
+ - lib/sanford-protocol/fake_socket.rb
84
64
  - lib/sanford-protocol/msg_data.rb
85
65
  - lib/sanford-protocol/request.rb
86
66
  - lib/sanford-protocol/response.rb
87
67
  - lib/sanford-protocol/response_status.rb
88
- - lib/sanford-protocol/test/fake_socket.rb
89
- - lib/sanford-protocol/test/helpers.rb
68
+ - lib/sanford-protocol/test_helpers.rb
90
69
  - lib/sanford-protocol/version.rb
91
70
  - sanford-protocol.gemspec
92
71
  - test/helper.rb
93
72
  - test/unit/connection_tests.rb
94
73
  - test/unit/fake_socket_tests.rb
95
74
  - test/unit/msg_data_tests.rb
96
- - test/unit/protocol_tests.rb
97
75
  - test/unit/request_tests.rb
98
76
  - test/unit/response_status_tests.rb
99
77
  - test/unit/response_tests.rb
78
+ - test/unit/sanford-protocol_tests.rb
100
79
  - test/unit/test_helpers_tests.rb
101
80
  homepage: https://github.com/redding/sanford-protocol
102
81
  licenses: []
103
82
 
83
+ metadata: {}
84
+
104
85
  post_install_message:
105
86
  rdoc_options: []
106
87
 
107
88
  require_paths:
108
89
  - lib
109
90
  required_ruby_version: !ruby/object:Gem::Requirement
110
- none: false
111
91
  requirements:
112
- - - ">="
92
+ - &id004
93
+ - ">="
113
94
  - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
95
  version: "0"
118
96
  required_rubygems_version: !ruby/object:Gem::Requirement
119
- none: false
120
97
  requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- hash: 3
124
- segments:
125
- - 0
126
- version: "0"
98
+ - *id004
127
99
  requirements: []
128
100
 
129
101
  rubyforge_project:
130
- rubygems_version: 1.8.15
102
+ rubygems_version: 2.2.2
131
103
  signing_key:
132
- specification_version: 3
104
+ specification_version: 4
133
105
  summary: Ruby implementation of the Sanford TCP communication protocol.
134
106
  test_files:
135
107
  - test/helper.rb
136
108
  - test/unit/connection_tests.rb
137
109
  - test/unit/fake_socket_tests.rb
138
110
  - test/unit/msg_data_tests.rb
139
- - test/unit/protocol_tests.rb
140
111
  - test/unit/request_tests.rb
141
112
  - test/unit/response_status_tests.rb
142
113
  - test/unit/response_tests.rb
114
+ - test/unit/sanford-protocol_tests.rb
143
115
  - test/unit/test_helpers_tests.rb