http_stub 0.24.2 → 0.24.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19a6a02a024a22ad07ff458e4076ac6b3edae3c9
4
- data.tar.gz: 2a8a5a9f5d0e4dd10e1e6e8471f7e263045b72d9
3
+ metadata.gz: ae298667f0d24ef61eee93ad2a8a9daa92d5ed87
4
+ data.tar.gz: 82479a4ed23ef2173f90a9f19504fdaa72377f50
5
5
  SHA512:
6
- metadata.gz: 2c427195bbf661e6a9717658b1ca3a6f2b4cc286194fe3f2a8a677356da3f73bb187c336c14248ce4f37105ae3f78df2becc33dcb599b3854581f3008b6a7431
7
- data.tar.gz: ddab90edb0e73220865ab2378295e90331d2e1692833c997380521e22217a817fc64ad6c4472563424f7fca79de85331e4795a097d0ad9892db51381221dae86
6
+ metadata.gz: 5f81e67a3de971f554b81ce98e0d0fdd49534d855ae524466ee030ea46eedfd63baafd5900f37795daabddfbe4ef75071834dcf2d5e6110b01a826c1e9358b2a
7
+ data.tar.gz: b0858d659ce4bacb911d4b16e7ab870219384901881668ee181c7a68285b6d6291114f568c4be25ecdcca8318b1b4b5af796495bc411ddd92f3bf0d40b2d7ae3
@@ -35,7 +35,7 @@ module HttpStub
35
35
  end
36
36
 
37
37
  def invoke(&block)
38
- block.arity == 0 ? self.instance_eval(&block) : (yield self)
38
+ block.arity.zero? ? self.instance_eval(&block) : (yield self)
39
39
  end
40
40
 
41
41
  def merge!(stub_builder)
@@ -10,7 +10,11 @@ module HttpStub
10
10
  end
11
11
 
12
12
  def method_missing(name, *args, &block)
13
- @configurer.send(name, *args, &block)
13
+ @configurer.respond_to?(name, true) ? @configurer.send(name, *args, &block) : super
14
+ end
15
+
16
+ def respond_to_missing?(name, include_private = false)
17
+ @configurer.respond_to?(name, include_private)
14
18
  end
15
19
 
16
20
  end
@@ -12,7 +12,7 @@ module HttpStub
12
12
  private
13
13
 
14
14
  def indifferent_and_insensitive_find(key)
15
- entry = self.find { |entry_key, _entry_value| entry_key.to_s.casecmp(key.to_s) == 0 }
15
+ entry = self.find { |entry_key, _entry_value| entry_key.to_s.casecmp(key.to_s).zero? }
16
16
  entry ? entry[1] : nil
17
17
  end
18
18
 
@@ -11,7 +11,7 @@ module HttpStub
11
11
  end
12
12
 
13
13
  def matches?(request, _logger)
14
- @method.blank? || @method.casecmp(request.method) == 0
14
+ @method.blank? || @method.casecmp(request.method).zero?
15
15
  end
16
16
 
17
17
  def to_s
@@ -26,7 +26,7 @@ module HttpStub
26
26
  private
27
27
 
28
28
  def send_options
29
- { status: @status, type: @headers["content-type"] }.tap do |options|
29
+ { type: @headers["content-type"] }.tap do |options|
30
30
  options[:last_modified] = @headers["last-modified"] if @headers["last-modified"]
31
31
  options[:disposition] = @headers["content-disposition"] if @headers["content-disposition"]
32
32
  end
@@ -1,3 +1,3 @@
1
1
  module HttpStub
2
- VERSION = "0.24.2".freeze
2
+ VERSION = "0.24.3".freeze
3
3
  end
@@ -237,11 +237,11 @@ describe "Stub basics acceptance" do
237
237
 
238
238
  context "and a request that matches is made" do
239
239
 
240
- context "that matches a stub with a custom content-type" do
240
+ context "matching a stub with a custom content-type" do
241
241
 
242
- let(:response) { HTTParty.get("#{server_uri}/stub_response_with_file") }
242
+ let(:response) { issue_request }
243
243
 
244
- it "responds with the configured status code" do
244
+ it "responds with a status code of 200" do
245
245
  expect(response.code).to eql(200)
246
246
  end
247
247
 
@@ -253,9 +253,34 @@ describe "Stub basics acceptance" do
253
253
  expect_response_to_contain_file(HttpStub::Examples::ConfigurerWithFileResponses::FILE_PATH)
254
254
  end
255
255
 
256
+ context "and a subsequent request is made that requests the file if it has been modified" do
257
+
258
+ let(:first_response) { issue_request }
259
+ let(:file_last_modified_time) { first_response.headers["Last-Modified"] }
260
+
261
+ let(:second_response) { issue_request("if_modified_since" => file_last_modified_time) }
262
+
263
+ it "responds with a status code of 304 to indicate the file is unchanged" do
264
+ expect(second_response.code).to eql(304)
265
+ end
266
+
267
+ it "responds with no content type" do
268
+ expect(second_response.content_type).to be(nil)
269
+ end
270
+
271
+ it "responds with an empty body" do
272
+ expect(second_response.body).to be(nil)
273
+ end
274
+
275
+ end
276
+
277
+ def issue_request(headers={})
278
+ HTTParty.get("#{server_uri}/stub_response_with_file", headers: headers)
279
+ end
280
+
256
281
  end
257
282
 
258
- context "that matches a stub with no content-type" do
283
+ context "matching a stub with no content-type" do
259
284
 
260
285
  let(:response) { HTTParty.get("#{server_uri}/stub_response_with_file_and_no_content_type") }
261
286
 
@@ -61,9 +61,8 @@ describe "Stub trigger acceptance" do
61
61
  stub_server.build_stub do |stub|
62
62
  stub.match_requests(uri: "/triggered_stub_pdf_file", method: :get)
63
63
  stub.respond_with(
64
- status: 201,
65
64
  headers: { "content-type" => "application/pdf" },
66
- body: { file: { path: pdf_file_path, name: ::File.basename(pdf_file_path) } }
65
+ body: { file: { path: pdf_file_path, name: ::File.basename(pdf_file_path) } }
67
66
  )
68
67
  end
69
68
  end
@@ -72,7 +71,7 @@ describe "Stub trigger acceptance" do
72
71
  let(:text_trigger) do
73
72
  stub_server.build_stub do |stub|
74
73
  stub.match_requests(uri: "/triggered_stub_text", method: :get)
75
- stub.respond_with(status: 202, body: "Sample trigger stub body")
74
+ stub.respond_with(status: 201, body: "Sample trigger stub body")
76
75
  end
77
76
  end
78
77
 
@@ -81,9 +80,8 @@ describe "Stub trigger acceptance" do
81
80
  stub_server.build_stub do |stub|
82
81
  stub.match_requests(uri: "/triggered_stub_txt_file", method: :get)
83
82
  stub.respond_with(
84
- status: 203,
85
83
  headers: { "content-type" => "text/plain" },
86
- body: { file: { path: txt_file_path, name: ::File.basename(txt_file_path) } }
84
+ body: { file: { path: txt_file_path, name: ::File.basename(txt_file_path) } }
87
85
  )
88
86
  end
89
87
  end
@@ -107,7 +105,7 @@ describe "Stub trigger acceptance" do
107
105
  let(:response) { HTTParty.get("#{server_uri}/triggered_stub_pdf_file") }
108
106
 
109
107
  it "replays the triggered response" do
110
- expect(response.code).to eql(201)
108
+ expect(response.code).to eql(200)
111
109
  expect_response_to_contain_file(pdf_file_path)
112
110
  end
113
111
 
@@ -118,7 +116,7 @@ describe "Stub trigger acceptance" do
118
116
  let(:response) { HTTParty.get("#{server_uri}/triggered_stub_text") }
119
117
 
120
118
  it "replays the triggered response" do
121
- expect(response.code).to eql(202)
119
+ expect(response.code).to eql(201)
122
120
  expect(response.body).to eql(text_body)
123
121
  end
124
122
 
@@ -129,7 +127,7 @@ describe "Stub trigger acceptance" do
129
127
  let(:response) { HTTParty.get("#{server_uri}/triggered_stub_txt_file") }
130
128
 
131
129
  it "replays the triggered response" do
132
- expect(response.code).to eql(203)
130
+ expect(response.code).to eql(200)
133
131
  expect(response.parsed_response).to eql(::File.read(txt_file_path))
134
132
  end
135
133
 
@@ -8,7 +8,7 @@ describe HttpStub::Configurer::Part do
8
8
  Class.new.tap { |part_class| part_class.send(:include, HttpStub::Configurer::Part) }
9
9
  end
10
10
 
11
- let(:part) { part_class.new }
11
+ let(:part) { part_class.new }
12
12
 
13
13
  describe "#configure" do
14
14
 
@@ -66,4 +66,38 @@ describe HttpStub::Configurer::Part do
66
66
 
67
67
  end
68
68
 
69
+ context "when configured" do
70
+
71
+ before(:example) { part.configure(configurer) }
72
+
73
+ describe "other methods on the part" do
74
+
75
+ context "when defined in the configurer" do
76
+
77
+ it "are defined on the part" do
78
+ expect(part.respond_to?(:stub_server)).to be(true)
79
+ end
80
+
81
+ it "are delegated to the configurer" do
82
+ expect(part.stub_server).to eql(configurer.stub_server)
83
+ end
84
+
85
+ end
86
+
87
+ context "when not defined in the configurer" do
88
+
89
+ it "are not defined on the part" do
90
+ expect(part.respond_to?(:not_in_configurer)).to be(false)
91
+ end
92
+
93
+ it "raise an error on the part when invoked" do
94
+ expect { part.not_in_configurer }.to raise_error(/#{part_class}/)
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+
101
+ end
102
+
69
103
  end
@@ -1,11 +1,11 @@
1
1
  describe HttpStub::Server::Stub::Response::File do
2
2
 
3
- let(:status) { 321 }
4
- let(:headers) { {} }
5
- let(:file_name) { "sample.txt" }
6
- let(:temp_file_path) { "#{HttpStub::Spec::RESOURCES_DIR}/#{file_name}" }
7
- let(:body) { { filename: file_name, tempfile: File.new(temp_file_path) } }
8
- let(:args) { { "status" => status, "headers" => headers, "body" => body } }
3
+ let(:headers) { {} }
4
+ let(:file_name) { "sample.txt" }
5
+ let(:temp_file_path) { "#{HttpStub::Spec::RESOURCES_DIR}/#{file_name}" }
6
+ let(:body) { { filename: file_name, tempfile: File.new(temp_file_path) } }
7
+ let(:additional_args) { {} }
8
+ let(:args) { { "headers" => headers, "body" => body }.merge(additional_args) }
9
9
 
10
10
  let(:response_file) { HttpStub::Server::Stub::Response::File.new(args) }
11
11
 
@@ -55,7 +55,7 @@ describe HttpStub::Server::Stub::Response::File do
55
55
  end
56
56
 
57
57
  it "creates a new response file with other arguments preserved" do
58
- expect(described_class).to receive(:new).with(hash_including("status" => status, "body" => body))
58
+ expect(described_class).to receive(:new).with(hash_including("body" => body))
59
59
 
60
60
  subject
61
61
  end
@@ -75,7 +75,9 @@ describe HttpStub::Server::Stub::Response::File do
75
75
 
76
76
  describe "#serve_on" do
77
77
 
78
- let(:server) { instance_double(Sinatra::Base) }
78
+ let(:status) { 321 }
79
+ let(:additional_args) { { "status" => status } }
80
+ let(:server) { instance_double(Sinatra::Base) }
79
81
 
80
82
  subject { response_file.serve_on(server) }
81
83
 
@@ -85,8 +87,8 @@ describe HttpStub::Server::Stub::Response::File do
85
87
  subject
86
88
  end
87
89
 
88
- it "sends the file with the responses status" do
89
- expect(server).to receive(:send_file).with(anything, hash_including(status: status))
90
+ it "sends the file without any provided response status to ensure that 304 responses are honoured" do
91
+ expect(server).to receive(:send_file).with(anything, hash_excluding(:status))
90
92
 
91
93
  subject
92
94
  end
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.24.2
4
+ version: 0.24.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - dueckes
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-07-19 00:00:00.000000000 Z
15
+ date: 2016-08-02 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rake
@@ -146,14 +146,14 @@ dependencies:
146
146
  requirements:
147
147
  - - "~>"
148
148
  - !ruby/object:Gem::Version
149
- version: '0.41'
149
+ version: '0.42'
150
150
  type: :development
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
153
153
  requirements:
154
154
  - - "~>"
155
155
  - !ruby/object:Gem::Version
156
- version: '0.41'
156
+ version: '0.42'
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: rspec
159
159
  requirement: !ruby/object:Gem::Requirement
@@ -188,14 +188,14 @@ dependencies:
188
188
  requirements:
189
189
  - - "~>"
190
190
  - !ruby/object:Gem::Version
191
- version: '0.13'
191
+ version: '0.14'
192
192
  type: :development
193
193
  prerelease: false
194
194
  version_requirements: !ruby/object:Gem::Requirement
195
195
  requirements:
196
196
  - - "~>"
197
197
  - !ruby/object:Gem::Version
198
- version: '0.13'
198
+ version: '0.14'
199
199
  - !ruby/object:Gem::Dependency
200
200
  name: rack-test
201
201
  requirement: !ruby/object:Gem::Requirement