http_stub 0.0.3 → 0.0.4
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/stub/client.rb +19 -4
- data/lib/http/stub/registry.rb +5 -0
- data/lib/http/stub/server.rb +5 -0
- data/lib/http/stub/{rake_task.rb → start_server_rake_task.rb} +5 -5
- data/lib/http/stub/version.rb +1 -1
- data/spec/lib/http/client_integration_spec.rb +17 -1
- data/spec/lib/http/registry_spec.rb +20 -0
- data/spec/lib/http/server_spec.rb +18 -2
- data/spec/lib/http/{rake_task_integration_spec.rb → start_server_rake_task_integration_spec.rb} +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/server_integration.rb +1 -1
- metadata +6 -6
data/lib/http/stub/client.rb
CHANGED
@@ -23,19 +23,34 @@ module Http
|
|
23
23
|
|
24
24
|
module InstanceMethods
|
25
25
|
|
26
|
-
def
|
26
|
+
def stub!(uri, options)
|
27
|
+
response_options = options[:response]
|
27
28
|
request = Net::HTTP::Post.new("/stub")
|
28
29
|
request.content_type = "application/json"
|
29
30
|
request.body = {
|
30
31
|
"uri" => uri,
|
31
|
-
"method" =>
|
32
|
+
"method" => options[:method],
|
32
33
|
"response" => {
|
33
34
|
"status" => response_options[:status] || "200",
|
34
35
|
"body" => response_options[:body]
|
35
36
|
}
|
36
37
|
}.to_json
|
37
|
-
response =
|
38
|
-
raise "Unable to stub request
|
38
|
+
response = submit(request)
|
39
|
+
raise "Unable to stub request: #{response.message}" unless response.code == "200"
|
40
|
+
end
|
41
|
+
|
42
|
+
alias_method :stub_response!, :stub!
|
43
|
+
|
44
|
+
def clear!
|
45
|
+
request = Net::HTTP::Delete.new("/stubs")
|
46
|
+
response = submit(request)
|
47
|
+
raise "Unable to clear stubs: #{response.message}" unless response.code == "200"
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def submit(request)
|
53
|
+
Net::HTTP.new(self.class.host_value, self.class.port_value).start { |http| http.request(request) }
|
39
54
|
end
|
40
55
|
|
41
56
|
end
|
data/lib/http/stub/registry.rb
CHANGED
data/lib/http/stub/server.rb
CHANGED
@@ -4,13 +4,13 @@ require 'rake/tasklib' unless defined?(::Rake::TaskLib)
|
|
4
4
|
module Http
|
5
5
|
module Stub
|
6
6
|
|
7
|
-
class
|
7
|
+
class StartServerRakeTask < ::Rake::TaskLib
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
desc "Starts stub #{
|
11
|
-
task "start_#{
|
9
|
+
def initialize(options)
|
10
|
+
desc "Starts stub #{options[:name]}"
|
11
|
+
task "start_#{options[:name]}" do
|
12
12
|
Http::Stub::Server.instance_eval do
|
13
|
-
set :port,
|
13
|
+
set :port, options[:port]
|
14
14
|
run!
|
15
15
|
end
|
16
16
|
end
|
data/lib/http/stub/version.rb
CHANGED
@@ -12,7 +12,7 @@ describe Http::Stub::Client do
|
|
12
12
|
|
13
13
|
describe "when a response for a request is stubbed" do
|
14
14
|
|
15
|
-
before(:each) { client.stub_response!("/a_path", method: :get, status: 200, body: "Some body") }
|
15
|
+
before(:each) { client.stub_response!("/a_path", method: :get, response: { status: 200, body: "Some body" }) }
|
16
16
|
|
17
17
|
describe "and that request is made" do
|
18
18
|
|
@@ -25,6 +25,22 @@ describe Http::Stub::Client do
|
|
25
25
|
|
26
26
|
end
|
27
27
|
|
28
|
+
describe "and the stub is cleared" do
|
29
|
+
|
30
|
+
before(:each) { client.clear! }
|
31
|
+
|
32
|
+
describe "and the original request is made" do
|
33
|
+
|
34
|
+
let(:response) { Net::HTTP.get_response("localhost", "/a_path", 8001) }
|
35
|
+
|
36
|
+
it "should respond with a 404 status code" do
|
37
|
+
response.code.should eql("404")
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
28
44
|
end
|
29
45
|
|
30
46
|
end
|
@@ -36,6 +36,16 @@ describe Http::Stub::Registry do
|
|
36
36
|
registry.find_for(request).should eql(stubs[1])
|
37
37
|
end
|
38
38
|
|
39
|
+
describe "and the registry is subsequently cleared" do
|
40
|
+
|
41
|
+
before(:each) { registry.clear(request) }
|
42
|
+
|
43
|
+
it "should return nil" do
|
44
|
+
registry.find_for(request).should be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
39
49
|
end
|
40
50
|
|
41
51
|
describe "and multiple registered stubs match the request" do
|
@@ -76,4 +86,14 @@ describe Http::Stub::Registry do
|
|
76
86
|
|
77
87
|
end
|
78
88
|
|
89
|
+
describe "#clear" do
|
90
|
+
|
91
|
+
it "should log that the stubs are being cleared" do
|
92
|
+
logger.should_receive(:info).with(/clearing stubs/i)
|
93
|
+
|
94
|
+
registry.clear(request)
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
79
99
|
end
|
@@ -21,7 +21,7 @@ describe Http::Stub::Server do
|
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
|
-
describe "when a
|
24
|
+
describe "when a replay request is received" do
|
25
25
|
|
26
26
|
describe "and the request has been stubbed" do
|
27
27
|
|
@@ -50,7 +50,7 @@ describe Http::Stub::Server do
|
|
50
50
|
registry.stub!(:find_for).and_return(nil)
|
51
51
|
end
|
52
52
|
|
53
|
-
it "should respond with a 404" do
|
53
|
+
it "should respond with a 404 status code" do
|
54
54
|
get "/a_path"
|
55
55
|
|
56
56
|
response.status.should eql(404)
|
@@ -60,6 +60,22 @@ describe Http::Stub::Server do
|
|
60
60
|
|
61
61
|
end
|
62
62
|
|
63
|
+
describe "when a request to clear the stub has been received" do
|
64
|
+
|
65
|
+
it "should clear the contents of the registry" do
|
66
|
+
registry.should_receive(:clear)
|
67
|
+
|
68
|
+
delete "/stubs"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should respond with a 200 status code" do
|
72
|
+
delete "/stubs"
|
73
|
+
|
74
|
+
response.status.should eql(200)
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
63
79
|
def issue_stub_request
|
64
80
|
post "/stub", {
|
65
81
|
"uri" => "/a_path",
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'cover_me'
|
2
2
|
require 'rack/test'
|
3
3
|
|
4
|
-
require File.expand_path('../../lib/http/stub/
|
4
|
+
require File.expand_path('../../lib/http/stub/start_server_rake_task', __FILE__)
|
5
5
|
require File.expand_path('../../lib/http_stub', __FILE__)
|
6
6
|
|
7
7
|
Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |file| require file }
|
@@ -3,7 +3,7 @@ share_examples_for "server integration" do
|
|
3
3
|
FIVE_SECONDS = 5
|
4
4
|
|
5
5
|
before(:all) do
|
6
|
-
@pid = Process.spawn("rake
|
6
|
+
@pid = Process.spawn("rake start_test_server --trace")
|
7
7
|
wait_until("http stub server started") { Net::HTTP.get_response("localhost", "/", 8001) }
|
8
8
|
end
|
9
9
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_stub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-02-
|
13
|
+
date: 2013-02-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sinatra
|
@@ -52,17 +52,17 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- ./lib/http/stub/client.rb
|
55
|
-
- ./lib/http/stub/rake_task.rb
|
56
55
|
- ./lib/http/stub/registry.rb
|
57
56
|
- ./lib/http/stub/server.rb
|
57
|
+
- ./lib/http/stub/start_server_rake_task.rb
|
58
58
|
- ./lib/http/stub/stub.rb
|
59
59
|
- ./lib/http/stub/version.rb
|
60
60
|
- ./lib/http_stub.rb
|
61
61
|
- ./spec/curl_sample.txt
|
62
62
|
- ./spec/lib/http/client_integration_spec.rb
|
63
|
-
- ./spec/lib/http/rake_task_integration_spec.rb
|
64
63
|
- ./spec/lib/http/registry_spec.rb
|
65
64
|
- ./spec/lib/http/server_spec.rb
|
65
|
+
- ./spec/lib/http/start_server_rake_task_integration_spec.rb
|
66
66
|
- ./spec/lib/http/stub_spec.rb
|
67
67
|
- ./spec/spec_helper.rb
|
68
68
|
- ./spec/support/server_integration.rb
|
@@ -87,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
87
|
version: '0'
|
88
88
|
segments:
|
89
89
|
- 0
|
90
|
-
hash:
|
90
|
+
hash: 698355929090701443
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project: http_stub
|
93
93
|
rubygems_version: 1.8.25
|
@@ -97,9 +97,9 @@ summary: A Http Server replaying configured stub responses
|
|
97
97
|
test_files:
|
98
98
|
- ./spec/curl_sample.txt
|
99
99
|
- ./spec/lib/http/client_integration_spec.rb
|
100
|
-
- ./spec/lib/http/rake_task_integration_spec.rb
|
101
100
|
- ./spec/lib/http/registry_spec.rb
|
102
101
|
- ./spec/lib/http/server_spec.rb
|
102
|
+
- ./spec/lib/http/start_server_rake_task_integration_spec.rb
|
103
103
|
- ./spec/lib/http/stub_spec.rb
|
104
104
|
- ./spec/spec_helper.rb
|
105
105
|
- ./spec/support/server_integration.rb
|