mock-server-thin 0.1.1 → 0.2
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.
- data/README.markdown +1 -1
- data/lib/mock_server_thin.rb +43 -8
- data/test/mock_server_test.rb +22 -3
- metadata +6 -6
data/README.markdown
CHANGED
data/lib/mock_server_thin.rb
CHANGED
@@ -2,13 +2,48 @@ require "sinatra/base"
|
|
2
2
|
require "logger"
|
3
3
|
|
4
4
|
class MockServerThin
|
5
|
+
|
5
6
|
class App < Sinatra::Base
|
6
7
|
use Rack::ShowExceptions
|
7
8
|
end
|
8
9
|
|
9
|
-
|
10
|
+
class << self
|
11
|
+
attr_accessor :config
|
12
|
+
end
|
13
|
+
|
14
|
+
class Config
|
15
|
+
attr_accessor :timeout, :port, :host
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@timeout = 5
|
19
|
+
@port = 4000
|
20
|
+
@host = "0.0.0.0"
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_hash
|
24
|
+
Hash[instance_variables.map { |var| [var[1..-1].to_sym, instance_variable_get(var)] }]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.configure
|
29
|
+
yield(config)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.config
|
33
|
+
@config ||= Config.new
|
34
|
+
end
|
35
|
+
|
36
|
+
def config
|
37
|
+
self.class.config
|
38
|
+
end
|
39
|
+
|
40
|
+
def initialize(app, opts = {}, &block)
|
10
41
|
@app = app
|
11
|
-
|
42
|
+
options = config.to_hash.merge!(opts)
|
43
|
+
puts "SERVER OPTIONS: %s" % options.inspect
|
44
|
+
@port = options[:port]
|
45
|
+
@timeout = options[:timeout]
|
46
|
+
@host = options[:host]
|
12
47
|
end
|
13
48
|
|
14
49
|
def start
|
@@ -18,16 +53,16 @@ class MockServerThin
|
|
18
53
|
end
|
19
54
|
end
|
20
55
|
|
21
|
-
wait_for_service(
|
56
|
+
wait_for_service(@host, @port)
|
22
57
|
|
23
58
|
self
|
24
59
|
end
|
25
60
|
|
26
61
|
module Methods
|
27
|
-
def mock_server(
|
62
|
+
def mock_server(opts = {}, &block)
|
28
63
|
app = Class.new(Sinatra::Base)
|
29
64
|
app.class_eval(&block)
|
30
|
-
@server = MockServerThin.new(app,
|
65
|
+
@server = MockServerThin.new(app, opts, &block).start
|
31
66
|
end
|
32
67
|
end
|
33
68
|
|
@@ -51,12 +86,12 @@ protected
|
|
51
86
|
end
|
52
87
|
end
|
53
88
|
|
54
|
-
def wait_for_service(host, port
|
89
|
+
def wait_for_service(host, port)
|
55
90
|
start_time = Time.now
|
56
91
|
|
57
92
|
until listening?(host, port)
|
58
|
-
if timeout && (Time.now > (start_time + timeout))
|
59
|
-
raise SocketError.new("Socket did not open within #{timeout} seconds")
|
93
|
+
if @timeout && (Time.now > (start_time + @timeout))
|
94
|
+
raise SocketError.new("Socket did not open within #{@timeout} seconds")
|
60
95
|
end
|
61
96
|
end
|
62
97
|
|
data/test/mock_server_test.rb
CHANGED
@@ -29,18 +29,19 @@ end
|
|
29
29
|
|
30
30
|
class MockServerRackBuilderTest < Test::Unit::TestCase
|
31
31
|
def setup
|
32
|
-
@server = MockServerThin.new(HelloWorldRackBuilder, 4001)
|
32
|
+
@server = MockServerThin.new(HelloWorldRackBuilder, :port => 4001)
|
33
33
|
@server.start
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_server
|
37
37
|
assert_equal "Rackup!", open("http://localhost:4001").read
|
38
|
-
end
|
38
|
+
end
|
39
|
+
end
|
39
40
|
|
40
41
|
class MockServerMethodsTest < Test::Unit::TestCase
|
41
42
|
extend MockServerThin::Methods
|
42
43
|
|
43
|
-
mock_server(4002) {
|
44
|
+
mock_server(:port => 4002) {
|
44
45
|
get "/" do
|
45
46
|
"Goodbye"
|
46
47
|
end
|
@@ -50,3 +51,21 @@ class MockServerMethodsTest < Test::Unit::TestCase
|
|
50
51
|
assert_equal "Goodbye", open("http://localhost:4002").read
|
51
52
|
end
|
52
53
|
end
|
54
|
+
|
55
|
+
class MockServerConfigTest < Test::Unit::TestCase
|
56
|
+
def setup
|
57
|
+
MockServerThin.configure do |config|
|
58
|
+
config.port = 5067
|
59
|
+
config.timeout = 10
|
60
|
+
config.host = "127.0.0.1"
|
61
|
+
end
|
62
|
+
@server = MockServerThin.new(HelloWorldSinatra)
|
63
|
+
@server.start
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_server_config
|
67
|
+
assert_equal 5067, @server.config.port
|
68
|
+
assert_equal 10, @server.config.timeout
|
69
|
+
assert_equal "127.0.0.1", @server.config.host
|
70
|
+
end
|
71
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mock-server-thin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.2'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-01-02 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sinatra
|
17
|
-
requirement: &
|
17
|
+
requirement: &2153247480 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2153247480
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: thin
|
28
|
-
requirement: &
|
28
|
+
requirement: &2153246160 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2153246160
|
37
37
|
description:
|
38
38
|
email:
|
39
39
|
- djanowski@dimaion.com
|