http_stub 0.15.4 → 0.15.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd0deffefb3609ce28def378afa514c15bf7a0f0
4
- data.tar.gz: 2f6ea87666f76d3a454e6b7d422268a76c4169d5
3
+ metadata.gz: de9073e7cd507e925511a4e9e4ab51c7182cb44c
4
+ data.tar.gz: 0922450c8acc9793b0472877dfd2f603008588cf
5
5
  SHA512:
6
- metadata.gz: 24e93f05fe3cebf14a56239a96bf10cf31d79a94db3dcdbf4699c9eeabdf65e808ebc3361cc7e28cafafd5499da8c1f6e6173e77a6f35b64243b5e08d1503533
7
- data.tar.gz: 51e0d3f4b7ceab10f084875e3eed84f8ec83a0035f685e4d29f43366ec649a97e23236fa2df10d5b24f7ad0bb0b9558b36c25311362f59d8bd934cd8f96a3d00
6
+ metadata.gz: 3722e4850fd58d0c2f104896e7f8b3662a39f596762ab78e35cebe8bdebe0266d956e94045f57ba1a659d6d4e89a9c163f8ca211da3e25064c5a85af86aad778
7
+ data.tar.gz: c9b22acf23548d508c60f5c00bec96b758cfbf2efee142d5e8fa43a3039095403f6b96f113e2703350c7a7949afe9a668a2ec8193f3716b36d33eb496d807aef
data/lib/http_stub.rb CHANGED
@@ -2,13 +2,14 @@ require 'sinatra'
2
2
  require 'sinatra/partial'
3
3
  require 'haml'
4
4
  require 'sass'
5
+ require 'json'
5
6
  require 'net/http'
6
7
  require 'net/http/post/multipart'
7
- require 'json'
8
8
  require 'http_server_manager'
9
9
 
10
10
  require 'active_support/core_ext/module/aliasing'
11
11
  require 'active_support/core_ext/module/delegation'
12
+ require 'active_support/core_ext/string/inflections'
12
13
  require 'active_support/core_ext/hash/slice'
13
14
  require 'active_support/core_ext/hash/deep_merge'
14
15
  require 'active_support/core_ext/hash/indifferent_access'
@@ -47,6 +47,10 @@ module HttpStub
47
47
  @original_args.empty?
48
48
  end
49
49
 
50
+ def type
51
+ self.class.name.demodulize.underscore
52
+ end
53
+
50
54
  def to_s
51
55
  @original_args.to_s
52
56
  end
@@ -6,9 +6,12 @@ module HttpStub
6
6
 
7
7
  add_default_headers "content-type" => "application/octet-stream"
8
8
 
9
+ attr_reader :uri
10
+
9
11
  def initialize(args)
10
12
  @file = args["body"][:tempfile]
11
- super(args.merge("body" => @file.path))
13
+ @uri = "file://#{@file.path}"
14
+ super(args.merge("body" => ""))
12
15
  end
13
16
 
14
17
  def serve_on(server)
@@ -19,7 +19,7 @@
19
19
  %td=h(the_stub.response.headers)
20
20
  %tr
21
21
  %td Response Body:
22
- %td=h(the_stub.response.body)
22
+ %td=partial "stub_#{the_stub.response.type}_response".to_sym, locals: { response: the_stub.response }
23
23
  %tr
24
24
  %td Response Delay:
25
25
  %td=h(the_stub.response.delay_in_seconds)
@@ -29,4 +29,3 @@
29
29
  - the_stub.triggers.each do |trigger|
30
30
  = partial :stub, locals: { the_stub: trigger }
31
31
  %br
32
-
@@ -0,0 +1 @@
1
+ %a{ href: response.uri, class: :file }= response.uri
@@ -0,0 +1 @@
1
+ =h(response.body)
@@ -1,6 +1,6 @@
1
1
  - stub_activators.each do |stub_activator|
2
2
  %div
3
3
  %span Response Activation URI:
4
- %a{ href: stub_activator.activation_uri }= stub_activator.activation_uri
4
+ %a{ href: stub_activator.activation_uri, class: :activator }= stub_activator.activation_uri
5
5
  = partial :stub, locals: { the_stub: stub_activator.the_stub }
6
6
  %br
@@ -1,3 +1,3 @@
1
1
  module HttpStub
2
- VERSION = "0.15.4".freeze
2
+ VERSION = "0.15.5".freeze
3
3
  end
@@ -38,7 +38,7 @@ describe HttpStub::Configurer, "when the server is running" do
38
38
 
39
39
  context "and the response contains a file" do
40
40
 
41
- let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponse.new }
41
+ let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponses.new }
42
42
 
43
43
  before(:example) { configurer.activate!("/a_file_activator") }
44
44
 
@@ -48,7 +48,7 @@ describe HttpStub::Configurer, "when the server is running" do
48
48
 
49
49
  it "replays the stubbed response" do
50
50
  expect(response.code).to eql(200)
51
- expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
51
+ expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponses::FILE_PATH)
52
52
  end
53
53
 
54
54
  end
@@ -667,7 +667,7 @@ describe HttpStub::Configurer, "when the server is running" do
667
667
 
668
668
  context "and the configurer stubs responses with a file body" do
669
669
 
670
- let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponse.new }
670
+ let(:configurer) { HttpStub::Examples::ConfigurerWithFileResponses.new }
671
671
 
672
672
  context "and a request that matches is made" do
673
673
 
@@ -684,7 +684,7 @@ describe HttpStub::Configurer, "when the server is running" do
684
684
  end
685
685
 
686
686
  it "responds with the configured file" do
687
- expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
687
+ expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponses::FILE_PATH)
688
688
  end
689
689
 
690
690
  end
@@ -698,7 +698,7 @@ describe HttpStub::Configurer, "when the server is running" do
698
698
  end
699
699
 
700
700
  it "responds with the configured response" do
701
- expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponse::FILE_PATH)
701
+ expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponses::FILE_PATH)
702
702
  end
703
703
 
704
704
  end
@@ -2,24 +2,26 @@ describe HttpStub::Server::Application, "when the server is running" do
2
2
  include Rack::Utils
3
3
  include_context "server integration"
4
4
 
5
- let(:configurer) { HttpStub::Examples::ConfigurerWithManyActivators.new }
5
+ let(:response_document) { Nokogiri::HTML(response.body) }
6
6
 
7
- describe "POST #stubs" do
7
+ describe "POST /stubs" do
8
8
 
9
9
  context "when provided with the minimum data required" do
10
10
 
11
- before(:example) do
12
- @response = HTTParty.post(
11
+ let(:response) do
12
+ HTTParty.post(
13
13
  "#{server_uri}/stubs",
14
14
  body: { uri: "/some/path", method: "get", response: { status: 200, body: "Some body" } }.to_json
15
15
  )
16
16
  end
17
17
 
18
18
  it "returns a 200 response code" do
19
- expect(@response.code).to eql(200)
19
+ expect(response.code).to eql(200)
20
20
  end
21
21
 
22
22
  it "registers a stub returning the provided response for a matching request" do
23
+ response
24
+
23
25
  stubbed_response = HTTParty.get("#{server_uri}/some/path")
24
26
 
25
27
  expect(stubbed_response.code).to eql(200)
@@ -33,7 +35,7 @@ describe HttpStub::Server::Application, "when the server is running" do
33
35
  describe "and a configurer with multiple stub activators is initialized" do
34
36
 
35
37
  before(:context) do
36
- configurer = HttpStub::Examples::ConfigurerWithManyActivators
38
+ configurer = HttpStub::Examples::ConfigurerWithClassActivators
37
39
  configurer.host(server_host)
38
40
  configurer.port(server_port)
39
41
  configurer.initialize!
@@ -121,12 +123,19 @@ describe HttpStub::Server::Application, "when the server is running" do
121
123
  end
122
124
  end
123
125
 
124
- it "returns a response whose body contains the response body of each stub" do
125
- expect(response.body).to match(/Plain text body/)
126
+ it "returns a response whose body contains the response body of stub returning JSON" do
126
127
  expect(response.body).to match(/#{escape_html({ "key" => "JSON body" }.to_json)}/)
128
+ end
129
+
130
+ it "returns a response whose body contains the response body of stub returning HTML" do
127
131
  expect(response.body).to match(/#{escape_html("<html><body>HTML body</body></html>")}/)
128
132
  end
129
133
 
134
+ it "returns a response whose body contains the response body of a stub returning a file" do
135
+ file_link = response_document.css("a.file").first
136
+ expect(file_link['href']).to match(/^file:\/\/[^']+\.pdf$/)
137
+ end
138
+
130
139
  it "returns a response whose body contains the response body of each stub trigger" do
131
140
  (1..3).each do |stub_number|
132
141
  (1..3).each do |trigger_number|
@@ -149,13 +158,12 @@ describe HttpStub::Server::Application, "when the server is running" do
149
158
 
150
159
  end
151
160
 
152
- describe "GET #stubs/activators" do
161
+ describe "GET /stubs/activators" do
153
162
 
154
- let(:response) { HTTParty.get("#{server_uri}/stubs/activators") }
155
- let(:response_document) { Nokogiri::HTML(response.body) }
163
+ let(:response) { HTTParty.get("#{server_uri}/stubs/activators") }
156
164
 
157
165
  it "returns response whose body contains links to each activator in alphabetical order" do
158
- response_document.css("a").each_with_index do |link, i|
166
+ response_document.css("a.activator").each_with_index do |link, i|
159
167
  expect(link['href']).to eql("/activator_#{i + 1}")
160
168
  end
161
169
  end
@@ -164,16 +172,13 @@ describe HttpStub::Server::Application, "when the server is running" do
164
172
 
165
173
  end
166
174
 
167
- describe "GET #stubs" do
175
+ describe "GET /stubs" do
168
176
 
169
177
  describe "when multiple stubs are configured" do
170
178
 
171
- before(:context) do
172
- (1..3).each { |i| HTTParty.get("#{server_uri}/activator_#{i}") }
173
- end
179
+ before(:context) { (1..3).each { |i| HTTParty.get("#{server_uri}/activator_#{i}") } }
174
180
 
175
- let(:response) { HTTParty.get("#{server_uri}/stubs") }
176
- let(:response_document) { Nokogiri::HTML(response.body) }
181
+ let(:response) { HTTParty.get("#{server_uri}/stubs") }
177
182
 
178
183
  include_context "the response contains HTML describing the configurers stubs"
179
184
 
@@ -184,6 +184,19 @@ describe HttpStub::Server::StubResponse::Base do
184
184
 
185
185
  end
186
186
 
187
+ describe "#type" do
188
+
189
+ class HttpStub::Server::StubResponse::TestableBaseClass < HttpStub::Server::StubResponse::Base
190
+ end
191
+
192
+ let(:testable_response_class) { HttpStub::Server::StubResponse::TestableBaseClass }
193
+
194
+ it "returns the name of the concrete base instance underscored" do
195
+ expect(response.type).to eql("testable_base_class")
196
+ end
197
+
198
+ end
199
+
187
200
  describe "#empty?" do
188
201
 
189
202
  context "when the response is EMPTY" do
@@ -18,6 +18,20 @@ describe HttpStub::Server::StubResponse::File do
18
18
  expect(response_file).to be_a(HttpStub::Server::StubResponse::Base)
19
19
  end
20
20
 
21
+ describe "#uri" do
22
+
23
+ subject { response_file.uri }
24
+
25
+ it "is prefixed with 'file://' to support display within a hyperlink" do
26
+ expect(subject).to start_with("file://")
27
+ end
28
+
29
+ it "concludes with the path to the temp file provided" do
30
+ expect(subject).to end_with(temp_file_path)
31
+ end
32
+
33
+ end
34
+
21
35
  describe "#serve_on" do
22
36
 
23
37
  let(:server) { instance_double(Sinatra::Base) }
data/spec/spec_helper.rb CHANGED
@@ -16,12 +16,12 @@ require 'http_server_manager/test_support'
16
16
  require_relative '../lib/http_stub/rake/task_generators'
17
17
  require_relative '../lib/http_stub'
18
18
  require_relative '../examples/configurer_with_class_activator'
19
- require_relative '../examples/configurer_with_many_class_activators'
19
+ require_relative '../examples/configurer_with_class_activators'
20
20
  require_relative '../examples/configurer_with_class_stub'
21
21
  require_relative '../examples/configurer_with_initialize_callback'
22
22
  require_relative '../examples/configurer_with_complex_initializer'
23
23
  require_relative '../examples/configurer_with_response_defaults'
24
- require_relative '../examples/configurer_with_file_response'
24
+ require_relative '../examples/configurer_with_file_responses'
25
25
 
26
26
  HttpStub::Server::Daemon.log_dir = ::File.expand_path('../../tmp/log', __FILE__)
27
27
  HttpStub::Server::Daemon.pid_dir = ::File.expand_path('../../tmp/pids', __FILE__)
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.15.4
4
+ version: 0.15.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ueckerman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-25 00:00:00.000000000 Z
12
+ date: 2015-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -309,6 +309,8 @@ files:
309
309
  - "./lib/http_stub/server/stub_triggers.rb"
310
310
  - "./lib/http_stub/server/stub_uri.rb"
311
311
  - "./lib/http_stub/server/views/_stub.haml"
312
+ - "./lib/http_stub/server/views/_stub_file_response.haml"
313
+ - "./lib/http_stub/server/views/_stub_text_response.haml"
312
314
  - "./lib/http_stub/server/views/application.sass"
313
315
  - "./lib/http_stub/server/views/layout.haml"
314
316
  - "./lib/http_stub/server/views/stub_activators.haml"