http-testing 0.1.0 → 0.1.1
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/lib/http_testing.rb +3 -0
- data/lib/http_testing/context.rb +19 -14
- data/lib/http_testing/version.rb +1 -1
- data/spec/context_spec.rb +35 -0
- data/spec/spec_helper.rb +8 -0
- metadata +7 -4
data/lib/http_testing.rb
CHANGED
data/lib/http_testing/context.rb
CHANGED
@@ -3,23 +3,27 @@ require 'monitor'
|
|
3
3
|
|
4
4
|
class HttpTesting::Context
|
5
5
|
include WEBrick
|
6
|
+
# extend MonitorMixin
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
def initialize(port, options = {})
|
9
|
+
@options = {
|
10
|
+
:wait_timeout => 3 #seconds
|
11
|
+
}.merge options
|
10
12
|
@port = port
|
11
13
|
|
12
|
-
@monitor
|
14
|
+
@monitor = Monitor.new
|
13
15
|
@completed_cond = @monitor.new_cond
|
14
|
-
@started_cond
|
16
|
+
@started_cond = @monitor.new_cond
|
15
17
|
|
18
|
+
@started = false
|
16
19
|
@completed = false
|
17
|
-
@error
|
20
|
+
@error = nil
|
18
21
|
end
|
19
22
|
|
20
23
|
def start(&block)
|
24
|
+
@started = false
|
21
25
|
@completed = false
|
22
|
-
@error
|
26
|
+
@error = nil
|
23
27
|
|
24
28
|
#Starting separate thread for the server
|
25
29
|
@main = Thread.start do
|
@@ -36,24 +40,25 @@ class HttpTesting::Context
|
|
36
40
|
@completed_cond.signal
|
37
41
|
end
|
38
42
|
end
|
39
|
-
|
43
|
+
@started = true
|
44
|
+
@monitor.synchronize do
|
45
|
+
@started_cond.signal
|
46
|
+
end
|
40
47
|
@server.start
|
41
48
|
end
|
42
49
|
|
43
50
|
#Waiting for server to start
|
44
51
|
@monitor.synchronize do
|
45
|
-
@started_cond.
|
52
|
+
@started_cond.wait_until { @started }
|
46
53
|
end
|
47
54
|
end
|
48
55
|
|
49
56
|
def wait
|
50
57
|
@monitor.synchronize do
|
51
|
-
@completed_cond.wait(
|
58
|
+
@completed_cond.wait(@options[:wait_timeout]) unless @completed
|
52
59
|
end
|
53
|
-
|
54
60
|
@server.shutdown
|
55
|
-
|
56
|
-
raise "HTTP Connection was not completed within #{WAIT_TIMEOUT} seconds" unless @completed
|
61
|
+
raise HttpTesting::HttpTestingError.new "HTTP Connection was not completed within #{@options[:wait_timeout]} seconds" unless @completed
|
57
62
|
raise @error if @error
|
58
63
|
end
|
59
|
-
end
|
64
|
+
end
|
data/lib/http_testing/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe HttpTesting::Context do
|
4
|
+
def context(options = {})
|
5
|
+
HttpTesting::Context.new(30013, options)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should start web server at specified port" do
|
9
|
+
started = false
|
10
|
+
c = context
|
11
|
+
c.start do |request, response|
|
12
|
+
started = true
|
13
|
+
end
|
14
|
+
Net::HTTP.get(URI.parse('http://localhost:30013/'))
|
15
|
+
c.wait
|
16
|
+
started.should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "wait" do
|
20
|
+
it "should raise exception if no request received withing wait_timeout" do
|
21
|
+
c = context(:wait_timeout => 0)
|
22
|
+
c.start do |request, response| end
|
23
|
+
lambda { c.wait }.should raise_error(HttpTesting::HttpTestingError)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should reraise exception that was raised in start block" do
|
27
|
+
c = context(:wait_timeout => 0)
|
28
|
+
c.start do |request, response|
|
29
|
+
raise "Error in start block"
|
30
|
+
end
|
31
|
+
Net::HTTP.get(URI.parse('http://localhost:30013/'))
|
32
|
+
lambda { c.wait }.should raise_error(RuntimeError)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Evgeny Myasishchev
|
@@ -49,6 +49,8 @@ files:
|
|
49
49
|
- lib/http_testing.rb
|
50
50
|
- lib/http_testing/context.rb
|
51
51
|
- lib/http_testing/version.rb
|
52
|
+
- spec/context_spec.rb
|
53
|
+
- spec/spec_helper.rb
|
52
54
|
has_rdoc: true
|
53
55
|
homepage: http://github.com/evgeny-myasishchev/http-testing
|
54
56
|
licenses: []
|
@@ -79,5 +81,6 @@ rubygems_version: 1.3.6
|
|
79
81
|
signing_key:
|
80
82
|
specification_version: 3
|
81
83
|
summary: Library for testing HTTP requests in Ruby.
|
82
|
-
test_files:
|
83
|
-
|
84
|
+
test_files:
|
85
|
+
- spec/context_spec.rb
|
86
|
+
- spec/spec_helper.rb
|