sanford 0.8.0 → 0.9.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.
@@ -1,23 +1,28 @@
1
1
  require 'assert'
2
- require 'sanford/test_runner'
2
+ require 'sanford/service_handler'
3
+
4
+ require 'bson'
5
+ require 'sanford/test_helpers'
6
+ require 'test/support/service_handlers'
3
7
 
4
8
  module Sanford::ServiceHandler
5
9
 
6
- class BaseTests < Assert::Context
7
- include Sanford::TestRunner::Helpers
10
+ class UnitTests < Assert::Context
11
+ include Sanford::TestHelpers
8
12
 
9
13
  desc "Sanford::ServiceHandler"
10
14
  setup do
11
- @handler = test_runner(TestServiceHandler).handler
15
+ @handler_class = Class.new{ include Sanford::ServiceHandler }
12
16
  end
13
- subject{ @handler }
17
+ subject{ @handler_class }
14
18
 
15
- should have_instance_methods :init, :init!, :run, :run!
16
- should have_class_methods :run
17
-
18
- should "raise a NotImplementedError if run! is not overwritten" do
19
- assert_raises(NotImplementedError){ subject.run! }
20
- end
19
+ should have_imeths :run
20
+ should have_imeths :before_init_callbacks, :after_init_callbacks
21
+ should have_imeths :before_run_callbacks, :after_run_callbacks
22
+ should have_imeths :before_init, :after_init
23
+ should have_imeths :before_run, :after_run
24
+ should have_imeths :prepend_before_init, :prepend_after_init
25
+ should have_imeths :prepend_before_run, :prepend_after_run
21
26
 
22
27
  should "allow running a handler class with the class method #run" do
23
28
  response = HaltServiceHandler.run({
@@ -28,46 +33,130 @@ module Sanford::ServiceHandler
28
33
  assert_equal true, response.data
29
34
  end
30
35
 
31
- end
36
+ should "return an empty array by default using `before_init_callbacks`" do
37
+ assert_equal [], subject.before_init_callbacks
38
+ end
32
39
 
33
- class RunHandlerTests < BaseTests
34
- desc "run_handler helper"
40
+ should "return an empty array by default using `after_init_callbacks`" do
41
+ assert_equal [], subject.after_init_callbacks
42
+ end
35
43
 
36
- should "allow easily running another handler" do
37
- response = test_runner(RunOtherHandler).run
38
- assert_equal 'RunOtherHandler', response.data
44
+ should "return an empty array by default using `before_run_callbacks`" do
45
+ assert_equal [], subject.before_run_callbacks
46
+ end
47
+
48
+ should "return an empty array by default using `after_run_callbacks`" do
49
+ assert_equal [], subject.after_run_callbacks
50
+ end
51
+
52
+ should "append a block to the before init callbacks using `before_init`" do
53
+ subject.before_init_callbacks << proc{ }
54
+ block = Proc.new{}
55
+ subject.before_init(&block)
56
+ assert_equal block, subject.before_init_callbacks.last
57
+ end
58
+
59
+ should "append a block to the after init callbacks using `after_init`" do
60
+ subject.after_init_callbacks << proc{ }
61
+ block = Proc.new{}
62
+ subject.after_init(&block)
63
+ assert_equal block, subject.after_init_callbacks.last
64
+ end
65
+
66
+ should "append a block to the before run callbacks using `before_run`" do
67
+ subject.before_run_callbacks << proc{ }
68
+ block = Proc.new{}
69
+ subject.before_run(&block)
70
+ assert_equal block, subject.before_run_callbacks.last
71
+ end
72
+
73
+ should "append a block to the after run callbacks using `after_run`" do
74
+ subject.after_run_callbacks << proc{ }
75
+ block = Proc.new{}
76
+ subject.after_run(&block)
77
+ assert_equal block, subject.after_run_callbacks.last
78
+ end
79
+
80
+ should "prepend a block to the before init callbacks using `prepend_before_init`" do
81
+ subject.before_init_callbacks << proc{ }
82
+ block = Proc.new{}
83
+ subject.prepend_before_init(&block)
84
+ assert_equal block, subject.before_init_callbacks.first
85
+ end
86
+
87
+ should "prepend a block to the after init callbacks using `prepend_after_init`" do
88
+ subject.after_init_callbacks << proc{ }
89
+ block = Proc.new{}
90
+ subject.prepend_after_init(&block)
91
+ assert_equal block, subject.after_init_callbacks.first
92
+ end
93
+
94
+ should "prepend a block to the before run callbacks using `prepend_before_run`" do
95
+ subject.before_run_callbacks << proc{ }
96
+ block = Proc.new{}
97
+ subject.prepend_before_run(&block)
98
+ assert_equal block, subject.before_run_callbacks.first
99
+ end
100
+
101
+ should "prepend a block to the after run callbacks using `prepend_after_run`" do
102
+ subject.after_run_callbacks << proc{ }
103
+ block = Proc.new{}
104
+ subject.prepend_after_run(&block)
105
+ assert_equal block, subject.after_run_callbacks.first
39
106
  end
107
+
40
108
  end
41
109
 
42
- class WithMethodFlagsTests < BaseTests
110
+ class InitTests < UnitTests
111
+ desc "when init"
43
112
  setup do
44
113
  @handler = test_runner(FlagServiceHandler).handler
45
114
  end
115
+ subject{ @handler }
116
+
117
+ should have_imeths :init, :init!, :run, :run!
118
+
119
+ should "raise a NotImplementedError if run! is not overwritten" do
120
+ handler = test_handler(@handler_class)
121
+ assert_raises(NotImplementedError){ handler.run! }
122
+ end
46
123
 
47
124
  should "have called `init!` and it's callbacks" do
48
- assert_equal true, subject.before_init_called
49
- assert_equal true, subject.init_bang_called
50
- assert_equal true, subject.after_init_called
125
+ assert_true subject.before_init_called
126
+ assert_true subject.second_before_init_called
127
+ assert_true subject.init_bang_called
128
+ assert_true subject.after_init_called
51
129
  end
52
130
 
53
131
  should "not have called `run!` or it's callbacks when initialized" do
54
132
  assert_nil subject.before_run_called
55
133
  assert_nil subject.run_bang_called
56
134
  assert_nil subject.after_run_called
135
+ assert_nil subject.second_after_run_called
57
136
  end
58
137
 
59
138
  should "call `run!` and it's callbacks when it's `run`" do
60
139
  subject.run
61
140
 
62
- assert_equal true, subject.before_run_called
63
- assert_equal true, subject.run_bang_called
64
- assert_equal true, subject.after_run_called
141
+ assert_true subject.before_run_called
142
+ assert_true subject.run_bang_called
143
+ assert_true subject.after_run_called
144
+ assert_true subject.second_after_run_called
65
145
  end
66
146
 
67
147
  end
68
148
 
69
- class HaltTests < BaseTests
70
- desc "halt"
149
+ class RunHandlerTests < UnitTests
150
+ desc "run_handler helper"
151
+
152
+ should "allow easily running another handler" do
153
+ response = test_runner(RunOtherHandler).run
154
+ assert_equal 'RunOtherHandler', response.data
155
+ end
156
+ end
157
+
158
+ class HaltTests < UnitTests
159
+ desc "when halted"
71
160
 
72
161
  should "return a response with the status code and the passed data" do
73
162
  runner = test_runner(HaltServiceHandler, {
@@ -76,8 +165,8 @@ module Sanford::ServiceHandler
76
165
  })
77
166
  runner.run
78
167
 
79
- assert_equal 648, runner.response.code
80
- assert_equal true, runner.response.data
168
+ assert_equal 648, runner.response.code
169
+ assert_true runner.response.data
81
170
  assert_nil runner.response.status.message
82
171
  end
83
172
 
@@ -88,15 +177,15 @@ module Sanford::ServiceHandler
88
177
  })
89
178
  runner.run
90
179
 
91
- assert_equal 200, runner.response.code
92
- assert_equal 'test message', runner.response.status.message
180
+ assert_equal 200, runner.response.code
181
+ assert_equal 'test message', runner.response.status.message
93
182
  assert_nil runner.response.data
94
183
  end
95
184
 
96
185
  end
97
186
 
98
- class HaltingTests < BaseTests
99
- desc "halting at different points"
187
+ class HaltingTests < UnitTests
188
+ desc "when halted at different points"
100
189
 
101
190
  should "not call `init!, `after_init`, `run!` or run's callbacks when `before_init` halts" do
102
191
  runner = test_runner(HaltingBehaviorServiceHandler, {
@@ -104,12 +193,12 @@ module Sanford::ServiceHandler
104
193
  })
105
194
  response = runner.response
106
195
 
107
- assert_equal true, response.data[:before_init_called]
108
- assert_equal nil, response.data[:init_bang_called]
109
- assert_equal nil, response.data[:after_init_called]
110
- assert_equal nil, response.data[:before_run_called]
111
- assert_equal nil, response.data[:run_bang_called]
112
- assert_equal nil, response.data[:after_run_called]
196
+ assert_equal true, response.data[:before_init_called]
197
+ assert_equal nil, response.data[:init_bang_called]
198
+ assert_equal nil, response.data[:after_init_called]
199
+ assert_equal nil, response.data[:before_run_called]
200
+ assert_equal nil, response.data[:run_bang_called]
201
+ assert_equal nil, response.data[:after_run_called]
113
202
 
114
203
  assert_equal 'before_init halting', response.status.message
115
204
  end
@@ -120,12 +209,12 @@ module Sanford::ServiceHandler
120
209
  })
121
210
  response = runner.response
122
211
 
123
- assert_equal true, response.data[:before_init_called]
124
- assert_equal true, response.data[:init_bang_called]
125
- assert_equal nil, response.data[:after_init_called]
126
- assert_equal nil, response.data[:before_run_called]
127
- assert_equal nil, response.data[:run_bang_called]
128
- assert_equal nil, response.data[:after_run_called]
212
+ assert_equal true, response.data[:before_init_called]
213
+ assert_equal true, response.data[:init_bang_called]
214
+ assert_equal nil, response.data[:after_init_called]
215
+ assert_equal nil, response.data[:before_run_called]
216
+ assert_equal nil, response.data[:run_bang_called]
217
+ assert_equal nil, response.data[:after_run_called]
129
218
 
130
219
  assert_equal 'init! halting', response.status.message
131
220
  end
@@ -136,12 +225,12 @@ module Sanford::ServiceHandler
136
225
  })
137
226
  response = runner.response
138
227
 
139
- assert_equal true, response.data[:before_init_called]
140
- assert_equal true, response.data[:init_bang_called]
141
- assert_equal true, response.data[:after_init_called]
142
- assert_equal nil, response.data[:before_run_called]
143
- assert_equal nil, response.data[:run_bang_called]
144
- assert_equal nil, response.data[:after_run_called]
228
+ assert_equal true, response.data[:before_init_called]
229
+ assert_equal true, response.data[:init_bang_called]
230
+ assert_equal true, response.data[:after_init_called]
231
+ assert_equal nil, response.data[:before_run_called]
232
+ assert_equal nil, response.data[:run_bang_called]
233
+ assert_equal nil, response.data[:after_run_called]
145
234
 
146
235
  assert_equal 'after_init halting', response.status.message
147
236
  end
@@ -152,12 +241,12 @@ module Sanford::ServiceHandler
152
241
  })
153
242
  response = runner.run
154
243
 
155
- assert_equal true, response.data[:before_init_called]
156
- assert_equal true, response.data[:init_bang_called]
157
- assert_equal true, response.data[:after_init_called]
158
- assert_equal true, response.data[:before_run_called]
159
- assert_equal nil, response.data[:run_bang_called]
160
- assert_equal nil, response.data[:after_run_called]
244
+ assert_equal true, response.data[:before_init_called]
245
+ assert_equal true, response.data[:init_bang_called]
246
+ assert_equal true, response.data[:after_init_called]
247
+ assert_equal true, response.data[:before_run_called]
248
+ assert_equal nil, response.data[:run_bang_called]
249
+ assert_equal nil, response.data[:after_run_called]
161
250
 
162
251
  assert_equal 'before_run halting', runner.response.status.message
163
252
  end
@@ -168,12 +257,12 @@ module Sanford::ServiceHandler
168
257
  })
169
258
  response = runner.run
170
259
 
171
- assert_equal true, response.data[:before_init_called]
172
- assert_equal true, response.data[:init_bang_called]
173
- assert_equal true, response.data[:after_init_called]
174
- assert_equal true, response.data[:before_run_called]
175
- assert_equal true, response.data[:run_bang_called]
176
- assert_equal nil, response.data[:after_run_called]
260
+ assert_equal true, response.data[:before_init_called]
261
+ assert_equal true, response.data[:init_bang_called]
262
+ assert_equal true, response.data[:after_init_called]
263
+ assert_equal true, response.data[:before_run_called]
264
+ assert_equal true, response.data[:run_bang_called]
265
+ assert_equal nil, response.data[:after_run_called]
177
266
 
178
267
  assert_equal 'run! halting', runner.response.status.message
179
268
  end
@@ -184,16 +273,38 @@ module Sanford::ServiceHandler
184
273
  })
185
274
  response = runner.run
186
275
 
187
- assert_equal true, response.data[:before_init_called]
188
- assert_equal true, response.data[:init_bang_called]
189
- assert_equal true, response.data[:after_init_called]
190
- assert_equal true, response.data[:before_run_called]
191
- assert_equal true, response.data[:run_bang_called]
192
- assert_equal true, response.data[:after_run_called]
276
+ assert_equal true, response.data[:before_init_called]
277
+ assert_equal true, response.data[:init_bang_called]
278
+ assert_equal true, response.data[:after_init_called]
279
+ assert_equal true, response.data[:before_run_called]
280
+ assert_equal true, response.data[:run_bang_called]
281
+ assert_equal true, response.data[:after_run_called]
193
282
 
194
283
  assert_equal 'after_run halting', runner.response.status.message
195
284
  end
196
285
 
197
286
  end
198
287
 
288
+ class InvalidHandlerTests < UnitTests
289
+ desc "that is invalid"
290
+
291
+ should "raise a custom error when initialized in a test" do
292
+ assert_raises Sanford::InvalidServiceHandlerError do
293
+ test_handler(InvalidServiceHandler)
294
+ end
295
+ end
296
+
297
+ end
298
+
299
+ class SerializeErrorTests < UnitTests
300
+ desc "that failse to serialize to BSON"
301
+
302
+ should "raise a BSON error when run in a test" do
303
+ assert_raises BSON::InvalidDocument do
304
+ test_runner(SerializeErrorServiceHandler).run
305
+ end
306
+ end
307
+
308
+ end
309
+
199
310
  end
@@ -1,11 +1,12 @@
1
1
  require 'assert'
2
- require 'sanford-protocol/test/helpers'
2
+ require 'sanford/worker'
3
3
 
4
- class Sanford::Worker
4
+ require 'sanford/host_data'
5
+ require 'test/support/fake_connection'
5
6
 
6
- class BaseTests < Assert::Context
7
- include Sanford::Protocol::Test::Helpers
7
+ class Sanford::Worker
8
8
 
9
+ class UnitTests < Assert::Context
9
10
  desc "Sanford::Worker"
10
11
  setup do
11
12
  @host_data = Sanford::HostData.new(TestHost)
@@ -14,7 +15,7 @@ class Sanford::Worker
14
15
  end
15
16
  subject{ @worker }
16
17
 
17
- should have_instance_methods :logger, :run
18
+ should have_imeths :logger, :run
18
19
 
19
20
  end
20
21
 
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanford
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
5
- prerelease:
6
- segments:
7
- - 0
8
- - 8
9
- - 0
10
- version: 0.8.0
4
+ version: 0.9.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - Collin Redding
@@ -16,83 +10,58 @@ 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: 3
28
- segments:
29
- - 0
30
- - 4
31
20
  version: "0.4"
32
21
  type: :runtime
33
- requirement: *id001
34
- prerelease: false
22
+ version_requirements: *id001
35
23
  name: dat-tcp
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: 15
43
- segments:
44
- - 1
45
- - 0
46
- version: "1.0"
30
+ version: "1.1"
47
31
  type: :runtime
48
- requirement: *id002
49
- prerelease: false
32
+ version_requirements: *id002
50
33
  name: ns-options
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: 7
58
- segments:
59
- - 0
60
- - 6
61
- version: "0.6"
40
+ version: "0.7"
62
41
  type: :runtime
63
- requirement: *id003
64
- prerelease: false
42
+ version_requirements: *id003
65
43
  name: sanford-protocol
44
+ prerelease: false
66
45
  - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
- none: false
46
+ requirement: &id004 !ruby/object:Gem::Requirement
69
47
  requirements:
70
48
  - - ~>
71
49
  - !ruby/object:Gem::Version
72
- hash: 5
73
- segments:
74
- - 2
75
- - 3
76
- version: "2.3"
50
+ version: "2.10"
77
51
  type: :development
78
- requirement: *id004
79
- prerelease: false
52
+ version_requirements: *id004
80
53
  name: assert
54
+ prerelease: false
81
55
  - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
83
- none: false
56
+ requirement: &id005 !ruby/object:Gem::Requirement
84
57
  requirements:
85
58
  - - ~>
86
59
  - !ruby/object:Gem::Version
87
- hash: 15
88
- segments:
89
- - 1
90
- - 0
91
- version: "1.0"
60
+ version: "1.1"
92
61
  type: :development
93
- requirement: *id005
94
- prerelease: false
62
+ version_requirements: *id005
95
63
  name: assert-mocha
64
+ prerelease: false
96
65
  description: Sanford TCP protocol server for hosting services
97
66
  email:
98
67
  - collin.redding@me.com
@@ -121,9 +90,11 @@ files:
121
90
  - lib/sanford/host.rb
122
91
  - lib/sanford/host_data.rb
123
92
  - lib/sanford/logger.rb
93
+ - lib/sanford/manager.rb
124
94
  - lib/sanford/runner.rb
125
95
  - lib/sanford/server.rb
126
96
  - lib/sanford/service_handler.rb
97
+ - lib/sanford/test_helpers.rb
127
98
  - lib/sanford/test_runner.rb
128
99
  - lib/sanford/version.rb
129
100
  - lib/sanford/worker.rb
@@ -136,15 +107,12 @@ files:
136
107
  - test/support/services.rb
137
108
  - test/support/simple_client.rb
138
109
  - test/system/request_handling_tests.rb
139
- - test/unit/config_tests.rb
140
110
  - test/unit/error_handler_tests.rb
141
- - test/unit/host_configuration_tests.rb
142
111
  - test/unit/host_data_tests.rb
143
112
  - test/unit/host_tests.rb
144
- - test/unit/hosts_tests.rb
145
- - test/unit/manager_pid_file_tests.rb
146
113
  - test/unit/manager_tests.rb
147
114
  - test/unit/runner_tests.rb
115
+ - test/unit/sanford_tests.rb
148
116
  - test/unit/server_tests.rb
149
117
  - test/unit/service_handler_tests.rb
150
118
  - test/unit/worker_tests.rb
@@ -152,35 +120,28 @@ files:
152
120
  homepage: https://github.com/redding/sanford
153
121
  licenses:
154
122
  - MIT
123
+ metadata: {}
124
+
155
125
  post_install_message:
156
126
  rdoc_options: []
157
127
 
158
128
  require_paths:
159
129
  - lib
160
130
  required_ruby_version: !ruby/object:Gem::Requirement
161
- none: false
162
131
  requirements:
163
- - - ">="
132
+ - &id006
133
+ - ">="
164
134
  - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
167
- - 0
168
135
  version: "0"
169
136
  required_rubygems_version: !ruby/object:Gem::Requirement
170
- none: false
171
137
  requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- hash: 3
175
- segments:
176
- - 0
177
- version: "0"
138
+ - *id006
178
139
  requirements: []
179
140
 
180
141
  rubyforge_project:
181
- rubygems_version: 1.8.15
142
+ rubygems_version: 2.2.2
182
143
  signing_key:
183
- specification_version: 3
144
+ specification_version: 4
184
145
  summary: Sanford TCP protocol server for hosting services
185
146
  test_files:
186
147
  - test/helper.rb
@@ -190,15 +151,12 @@ test_files:
190
151
  - test/support/services.rb
191
152
  - test/support/simple_client.rb
192
153
  - test/system/request_handling_tests.rb
193
- - test/unit/config_tests.rb
194
154
  - test/unit/error_handler_tests.rb
195
- - test/unit/host_configuration_tests.rb
196
155
  - test/unit/host_data_tests.rb
197
156
  - test/unit/host_tests.rb
198
- - test/unit/hosts_tests.rb
199
- - test/unit/manager_pid_file_tests.rb
200
157
  - test/unit/manager_tests.rb
201
158
  - test/unit/runner_tests.rb
159
+ - test/unit/sanford_tests.rb
202
160
  - test/unit/server_tests.rb
203
161
  - test/unit/service_handler_tests.rb
204
162
  - test/unit/worker_tests.rb
@@ -1,12 +0,0 @@
1
- require 'assert'
2
-
3
- module Sanford::Config
4
-
5
- class BaseTests < Assert::Context
6
- desc "Sanford::Config"
7
- subject{ Sanford::Config }
8
-
9
- should have_instance_methods :services_file, :logger
10
- end
11
-
12
- end
@@ -1,37 +0,0 @@
1
- require 'assert'
2
-
3
- class Sanford::Host::Configuration
4
-
5
- class BaseTests < Assert::Context
6
- desc "Sanford::Host::Configuration"
7
- setup do
8
- @configuration = Sanford::Host::Configuration.new(EmptyHost.instance)
9
- end
10
- subject{ @configuration }
11
-
12
- should have_instance_methods :name, :ip, :port, :pid_file, :logger,
13
- :verbose_logging, :logger, :error_procs
14
-
15
- should "default name to the class name of the host" do
16
- assert_equal 'EmptyHost', subject.name
17
- end
18
-
19
- should "default ip to 0.0.0.0" do
20
- assert_equal '0.0.0.0', subject.ip
21
- end
22
-
23
- should "not default the port" do
24
- assert_nil subject.port
25
- end
26
-
27
- should "default logger to a null logger" do
28
- assert_instance_of Sanford::NullLogger, subject.logger
29
- end
30
-
31
- should "default verbose_logging to true" do
32
- assert_equal true, subject.verbose_logging
33
- end
34
-
35
- end
36
-
37
- end