sanford 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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