http_stub 0.22.2 → 0.22.3

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: e4c4645eda720411e136a1e6b217cc9ee3fde9f2
4
- data.tar.gz: 5b6592c82b4e506028076c326b39fc6d0214dbf4
3
+ metadata.gz: 4c80f3899b852c169dc4f860759ae6c096e29fdb
4
+ data.tar.gz: 4a56c16de077939fb79a6152f4d98dcf7ff1c6b7
5
5
  SHA512:
6
- metadata.gz: 0a5971eca0c6d1e0ade4f7963a00f4259e2fd14d3274d5a1af9ef817b2ea597666f84a445b4bfcb584b369987742ec730ac896710af9c695a685d7e0b4de25be
7
- data.tar.gz: 11933cc237590fb5b30e6e1f96eef69461d3f7b8281cb44d1f8756261e944330ab54acbcb9d093f08e62e594c60cc6f78822edf3399c3f4b184b3bfe4bdf8d30
6
+ metadata.gz: 3940ab6caac7e382d473acefc9fa09e8f3232b56ae5430df606bd50761a081c1962d5f1321d2ff8582e027e7e33d588e67eaf67e3b94edac705a4556cb669214
7
+ data.tar.gz: 4aea566a355af20b43c457819319cd22ed412d5555fb7a76d77a5f797857899ce334adfb8d834c576fe6bb5d2e22c5cc3cd9acaacead541cefd67b696aefda35
data/lib/http_stub.rb CHANGED
@@ -59,6 +59,7 @@ require_relative 'http_stub/server/scenario/activator'
59
59
  require_relative 'http_stub/server/scenario/controller'
60
60
  require_relative 'http_stub/server/scenario'
61
61
  require_relative 'http_stub/server/response_pipeline'
62
+ require_relative 'http_stub/server/application_helpers'
62
63
  require_relative 'http_stub/server/application'
63
64
  require_relative 'http_stub/server/daemon'
64
65
  require_relative 'http_stub/configurer/request/http/basic'
@@ -8,7 +8,7 @@ module HttpStub
8
8
  @id = id
9
9
  @status = args[:status] || ""
10
10
  @headers = (args[:headers] || {}).with_indifferent_and_insensitive_access
11
- @body = args[:body]
11
+ @body = args[:json].try(:to_json) || args[:body]
12
12
  @delay_in_seconds = args[:delay_in_seconds] || ""
13
13
  end
14
14
 
@@ -7,7 +7,8 @@ module HttpStub
7
7
 
8
8
  register Sinatra::Partial
9
9
 
10
- enable :dump_errors, :logging, :partial_underscores
10
+ enable :dump_errors, :logging, :partial_underscores
11
+ disable :protection
11
12
 
12
13
  def initialize
13
14
  super()
@@ -102,13 +103,7 @@ module HttpStub
102
103
  @response_pipeline.process(response)
103
104
  end
104
105
 
105
- helpers do
106
-
107
- def h(text)
108
- Rack::Utils.escape_html(text)
109
- end
110
-
111
- end
106
+ helpers { include HttpStub::Server::ApplicationHelpers }
112
107
 
113
108
  end
114
109
 
@@ -0,0 +1,21 @@
1
+ module HttpStub
2
+ module Server
3
+
4
+ module ApplicationHelpers
5
+
6
+ def h(text)
7
+ Rack::Utils.escape_html(text)
8
+ end
9
+
10
+ def pp(text)
11
+ begin
12
+ text ? JSON.pretty_generate(JSON.parse(text)) : ""
13
+ rescue JSON::ParserError
14
+ text
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -1,16 +1,7 @@
1
- %table{ class: :match }
2
- %tr
3
- %td Type:
4
- %td Match
5
- %tr
6
- %td Request:
7
- %td= partial :request, locals: { request: match.request }
8
- %tr
9
- %td Response:
10
- %td
11
- %table{ class: :response }
12
- = partial :response, locals: { response: match.stub.response }
13
- %tr
14
- %td Stub:
15
- %td
16
- %a{ href: match.stub.stub_uri, class: :stub } Stub
1
+ %article
2
+ %h3 Request
3
+ = partial :request, locals: { request: match.request }
4
+ %h3 Response
5
+ =partial :response, locals: { response: match.stub.response }
6
+ %h3 Matched Stub
7
+ %a{ href: match.stub.stub_uri, class: [:stub, :link] } Match
@@ -1,16 +1,16 @@
1
1
  %table
2
2
  %tr
3
- %td URI:
3
+ %td.title URI:
4
4
  %td=h(request.uri)
5
5
  %tr
6
- %td Method:
6
+ %td.title Method:
7
7
  %td=request.method
8
8
  %tr
9
- %td Headers:
9
+ %td.title Headers:
10
10
  %td=h(request.headers)
11
11
  %tr
12
- %td Parameters:
12
+ %td.title Parameters:
13
13
  %td=h(request.parameters)
14
14
  %tr
15
- %td Body:
15
+ %td.title Body:
16
16
  %td=h(request.body)
@@ -1,9 +1,14 @@
1
- %tr
2
- %td Status:
3
- %td=response.status
1
+ %table
4
2
  %tr
5
- %td Headers:
3
+ %td.title Status:
4
+ %td=response.status
5
+ %tr
6
+ %td.title Headers:
6
7
  %td=h(response.headers)
7
8
  %tr
8
- %td Body:
9
- %td=partial "#{response.type}_response".to_sym, locals: { response: response }
9
+ %td.title Body:
10
+ %td
11
+ %pre=partial "#{response.type}_response".to_sym, locals: { response: response }
12
+ %tr
13
+ %td.title Delay:
14
+ %td=h(response.delay_in_seconds)
@@ -1,18 +1,8 @@
1
- %table
2
- %tr
3
- %td Request:
4
- %td=partial :request, locals: { request: the_stub }
5
- %tr
6
- %td Response:
7
- %td
8
- %table
9
- =partial :response, locals: { response: the_stub.response }
10
- %tr
11
- %td Delay:
12
- %td=h(the_stub.response.delay_in_seconds)
13
- %tr
14
- %td Triggers:
15
- %td
16
- - the_stub.triggers.each do |trigger|
17
- = partial :stub, locals: { the_stub: trigger }
18
- %br
1
+ %article
2
+ %h3 Request
3
+ = partial :request, locals: { request: the_stub }
4
+ %h3 Response
5
+ =partial :response, locals: { response: the_stub.response }
6
+ %h3 Triggers
7
+ - the_stub.triggers.each do |trigger|
8
+ = partial :stub, locals: { the_stub: trigger }
@@ -1 +1 @@
1
- =h(response.body)
1
+ =pp(response.body)
@@ -1,10 +1,54 @@
1
- table
2
- :border 1px solid black
1
+ $color_highlight: #D7B2EA
2
+ $color_background: #EEEEEE
3
+ $color_content_bg: white
4
+ $color_dark_border: grey
5
+ $color_border: lightgrey
6
+ $color_font: black
7
+ $color_peach: #FFF6EF
8
+
9
+ body
10
+ :background $color_background
11
+ :font-family "Helvetica Neue", Helvetica, Arial, sans-serif
12
+ :display flex
13
+ :flex-direction column
14
+ :align-items center
15
+
16
+ header
17
+ :padding-left 1rem
18
+
19
+ section
20
+ :max-width 800px
21
+ :border-radius 10px
22
+ :background white
23
+ :padding 1rem
24
+ :display inline-block
3
25
 
4
26
  table
5
- table
6
- :border 1px solid grey
27
+ :padding 1rem
28
+ :border-collapse collapse
29
+ tr
30
+ :background $color_content_bg
31
+ td
32
+ :padding 1rem
33
+ :max-width 600px
34
+ &.name
35
+ :font-weight bold
36
+ &.title
37
+ :font-weight bold
38
+
39
+ .header-rule
40
+ :border-bottom 1px solid $color_border
41
+
42
+ a.link
43
+ :border 1px solid $color_dark_border
44
+ :border-radius 3px
45
+ :padding 0.5rem
46
+ :text-decoration none
47
+ :color $color_font
48
+ &:hover
49
+ :background $color_highlight
7
50
 
8
- table.scenarios
9
- tr:hover
10
- :background lightgray
51
+ pre
52
+ :white-space pre-wrap !important
53
+ :word-wrap break-word !important
54
+ :max-width 600px
@@ -1,6 +1,6 @@
1
1
  %h1 http_stub diagnostics
2
- %a{ href: "/http_stub/stubs", id: :stubs } List Stubs
2
+ %a{ href: "/http_stub/stubs", id: :stubs, class: :link } List Stubs
3
3
  %br
4
- %a{ href: "/http_stub/scenarios", id: :scenarios } List Scenarios
4
+ %a{ href: "/http_stub/scenarios", id: :scenarios, class: :link } List Scenarios
5
5
  %br
6
- %a{ href: "/http_stub/stubs/matches", id: :stub_matches } List Stub Matches & Misses
6
+ %a{ href: "/http_stub/stubs/matches", id: :stub_matches, class: :link } List Stub Matches & Misses
@@ -0,0 +1,5 @@
1
+ %header
2
+ %h1 Matches
3
+ %section
4
+ - matches.each do |match|
5
+ = partial :match, locals: { match: match }
@@ -1,17 +1,12 @@
1
- %table{ class: :scenario }
2
- %tr
3
- %td Name:
4
- %td
5
- %a{ href: scenario.links.activate, class: :activate_scenario, data: { name: scenario.name } }= scenario.name
6
- %tr
7
- %td Stubs:
8
- %td
9
- - scenario.stubs.each do |the_stub|
10
- = partial :stub, locals: { the_stub: the_stub }
11
- %tr
12
- %td Triggered Scenario's:
13
- %td
14
- - scenario.triggered_scenarios.each do |triggered_scenario|
15
- %a{ href: triggered_scenario.links.detail, class: :triggered_scenario_detail }= triggered_scenario.name
16
- %br
1
+ %header
2
+ %h1= scenario.name
3
+ %section
4
+ %a{ href: scenario.links.activate, class: [:scenario, :link, :activate_scenario], data: { name: scenario.name } } Activate
5
+ %h2 Stubs
6
+ - scenario.stubs.each do |the_stub|
7
+ = partial :stub, locals: { the_stub: the_stub }
8
+ - if scenario.triggered_scenarios.present?
9
+ %h2 Triggered Scenarios
10
+ - scenario.triggered_scenarios.each do |triggered_scenario|
11
+ %a{ href: triggered_scenario.links.detail, class: :triggered_scenario_detail }= triggered_scenario.name
17
12
  = partial :activate_scenario
@@ -1,10 +1,12 @@
1
- %h1 Scenarios
2
- %table{ class: :scenarios }
3
- - scenarios.each do |scenario|
4
- %tr
5
- %td{ class: :scenario_name }= scenario.name
6
- %td
7
- %a{ href: scenario.links.activate, class: :activate_scenario, data: { name: scenario.name } } Activate
8
- %td
9
- %a{ href: scenario.links.detail, class: :view_scenario } View Detail
1
+ %header
2
+ %h1 Scenarios
3
+ %section
4
+ %table{ class: :scenarios }
5
+ - scenarios.each do |scenario|
6
+ %tr
7
+ %td{ class: [:scenario_name, :'header-rule'] }= scenario.name
8
+ %td{ class: :'header-rule' }
9
+ %a{ href: scenario.links.activate, class: [:scenario, :link, :activate_scenario], data: { name: scenario.name } } Activate
10
+ %td{ class: :'header-rule' }
11
+ %a{ href: scenario.links.detail, class: [:scenario, :link, :view_scenario] } View Detail
10
12
  = partial :activate_scenario
@@ -1,4 +1,6 @@
1
- %h1 Stubs
2
- - stubs.each do |the_stub|
3
- = partial :stub, locals: { the_stub: the_stub }
4
- %br
1
+ %header
2
+ %h1 Stubs
3
+ %section
4
+ - stubs.each do |the_stub|
5
+ = partial :stub, locals: { the_stub: the_stub }
6
+ .header-rule
@@ -1,3 +1,3 @@
1
1
  module HttpStub
2
- VERSION = "0.22.2".freeze
2
+ VERSION = "0.22.3".freeze
3
3
  end
@@ -1,7 +1,7 @@
1
1
  describe "Scenario acceptance" do
2
2
  include_context "configurer integration"
3
3
 
4
- context "when a configurer that contains scenario's is initialized" do
4
+ context "when a configurer that contains scenarios is initialized" do
5
5
 
6
6
  let(:configurer) { HttpStub::Examples::ConfigurerWithTrivialScenarios.new }
7
7
 
@@ -45,8 +45,32 @@ describe HttpStub::Configurer::Request::StubResponse do
45
45
 
46
46
  end
47
47
 
48
- it "has an entry for the response body argument" do
49
- expect(subject).to include(body: fixture.body)
48
+ context "when a response body argument is provided" do
49
+
50
+ before(:example) do
51
+ fixture.body = "some body"
52
+ fixture.json = nil
53
+ end
54
+
55
+ it "has a response body entry that contains the body argument" do
56
+ expect(subject).to include(body: fixture.body)
57
+ end
58
+
59
+ end
60
+
61
+ context "when a response json argument is provided" do
62
+
63
+ let(:json_object) { { some_key: "some value" } }
64
+
65
+ before(:example) do
66
+ fixture.body = nil
67
+ fixture.json = json_object
68
+ end
69
+
70
+ it "has a response body entry that contains the json argument converted to JSON" do
71
+ expect(subject).to include(body: json_object.to_json)
72
+ end
73
+
50
74
  end
51
75
 
52
76
  context "when a delay option is provided" do
@@ -0,0 +1,53 @@
1
+ describe HttpStub::Server::ApplicationHelpers do
2
+
3
+ let(:helpers) { Class.new.extend(described_class) }
4
+
5
+ describe "::h" do
6
+
7
+ let(:text) { "<tag>Some text</tag>" }
8
+
9
+ subject { helpers.h(text) }
10
+
11
+ it "should escape the provided HTML" do
12
+ expect(subject).to eq("&lt;tag&gt;Some text&lt;&#x2F;tag&gt;")
13
+ end
14
+
15
+ end
16
+
17
+ describe "::pp" do
18
+
19
+ subject { helpers.pp(text) }
20
+
21
+ context "when the text is JSON" do
22
+
23
+ let(:text) { "{\"key\":\"value\"}" }
24
+
25
+ it "returns a pretty JSON string" do
26
+ expect(subject).to eql("{\n \"key\": \"value\"\n}")
27
+ end
28
+
29
+ end
30
+
31
+ context "when the text is not JSON" do
32
+
33
+ let(:text) { "some text" }
34
+
35
+ it "returns the string unchanged" do
36
+ expect(subject).to eql(text)
37
+ end
38
+
39
+ end
40
+
41
+ context "when the text is nil" do
42
+
43
+ let(:text) { nil }
44
+
45
+ it "returns an empty string" do
46
+ expect(subject).to eql("")
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -179,11 +179,11 @@ describe HttpStub::Server::Application, "when the server is running" do
179
179
  end
180
180
 
181
181
  it "returns a response whose body contains the response body of stub returning JSON" do
182
- expect(response.body).to match(/#{escape_html({ "key" => "JSON body" }.to_json)}/)
182
+ expect(response.body).to match(/#{encode_whitespace(JSON.pretty_generate({ key: "JSON body" }))}/)
183
183
  end
184
184
 
185
185
  it "returns a response whose body contains the response body of stub returning HTML" do
186
- expect(response.body).to match(/#{escape_html("<html><body>HTML body</body></html>")}/)
186
+ expect(response.body).to match(/#{encode_whitespace("<html><body>HTML body</body></html>")}/)
187
187
  end
188
188
 
189
189
  it "returns a response whose body contains the response body of a stub returning a file" do
@@ -340,11 +340,11 @@ describe HttpStub::Server::Application, "when the server is running" do
340
340
  end
341
341
 
342
342
  it "returns a response whose body supports JSON responses" do
343
- expect(response.body).to match(/#{escape_html({ "key" => "JSON body" }.to_json)}/)
343
+ expect(response.body).to match(/#{encode_whitespace(JSON.pretty_generate({ "key" => "JSON body" }))}/)
344
344
  end if stub_number == 1
345
345
 
346
346
  it "returns a response whose body supports HTML responses" do
347
- expect(response.body).to match(/#{escape_html("<html><body>HTML body</body></html>")}/)
347
+ expect(response.body).to match(/#{encode_whitespace("<html><body>HTML body</body></html>")}/)
348
348
  end if stub_number == 2
349
349
 
350
350
  it "returns a response whose body supports file responses" do
@@ -298,4 +298,8 @@ describe HttpStub::Server::Application do
298
298
 
299
299
  end
300
300
 
301
+ it "disables all standard HTTP security measures to allow stubs full control of responses" do
302
+ expect(app.settings.protection).to eql(false)
303
+ end
304
+
301
305
  end
@@ -56,7 +56,7 @@ describe HttpStub::Server::Scenario::Activator do
56
56
  subject
57
57
  end
58
58
 
59
- context "when the triggered scenario's are found" do
59
+ context "when the triggered scenarios are found" do
60
60
 
61
61
  class HttpStub::Server::Scenario::ActivatorRetainingActivateArgs < HttpStub::Server::Scenario::Activator
62
62
 
@@ -76,7 +76,7 @@ describe HttpStub::Server::Scenario::Activator do
76
76
 
77
77
  let(:activator_class) { HttpStub::Server::Scenario::ActivatorRetainingActivateArgs }
78
78
 
79
- it "activates the scenario's" do
79
+ it "activates the scenarios" do
80
80
  expected_activate_args = triggered_scenarios.reduce([ [ scenario, logger ] ]) do |result, triggered_scenario|
81
81
  result << [ triggered_scenario, logger ]
82
82
  end
data/spec/spec_helper.rb CHANGED
@@ -50,5 +50,6 @@ require_relative 'support/http_stub/server/stub/match/result_fixture'
50
50
  require_relative 'support/http_stub/stub_fixture'
51
51
  require_relative 'support/http_stub/scenario_fixture'
52
52
  require_relative 'support/http_stub/empty_configurer'
53
+ require_relative 'support/html_helpers'
53
54
  require_relative 'support/server_integration'
54
55
  require_relative 'support/configurer_integration'
@@ -0,0 +1,5 @@
1
+ module HtmlHelpers
2
+ include Haml::Helpers
3
+
4
+ alias_method :encode_whitespace, :preserve
5
+ end
@@ -1,5 +1,6 @@
1
1
  shared_context "server integration" do
2
2
  include Rack::Utils
3
+ include HtmlHelpers
3
4
 
4
5
  before(:context) do
5
6
  @pid = Process.spawn("rake example_server:start:foreground --trace")
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.22.2
4
+ version: 0.22.3
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: 2016-04-18 00:00:00.000000000 Z
12
+ date: 2016-05-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -137,20 +137,6 @@ dependencies:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: '3.4'
140
- - !ruby/object:Gem::Dependency
141
- name: travis-lint
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '2.0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '2.0'
154
140
  - !ruby/object:Gem::Dependency
155
141
  name: rspec
156
142
  requirement: !ruby/object:Gem::Requirement
@@ -249,20 +235,34 @@ dependencies:
249
235
  - - "~>"
250
236
  - !ruby/object:Gem::Version
251
237
  version: '0.3'
238
+ - !ruby/object:Gem::Dependency
239
+ name: travis-lint
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: '2.0'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '2.0'
252
252
  - !ruby/object:Gem::Dependency
253
253
  name: codeclimate-test-reporter
254
254
  requirement: !ruby/object:Gem::Requirement
255
255
  requirements:
256
256
  - - "~>"
257
257
  - !ruby/object:Gem::Version
258
- version: '0.4'
258
+ version: '0.5'
259
259
  type: :development
260
260
  prerelease: false
261
261
  version_requirements: !ruby/object:Gem::Requirement
262
262
  requirements:
263
263
  - - "~>"
264
264
  - !ruby/object:Gem::Version
265
- version: '0.4'
265
+ version: '0.5'
266
266
  description: fakeweb for a HTTP server, informing it to stub / fake responses
267
267
  email: matthew.ueckerman@myob.com
268
268
  executables: []
@@ -302,6 +302,7 @@ files:
302
302
  - "./lib/http_stub/rake/server_tasks.rb"
303
303
  - "./lib/http_stub/rake/task_generators.rb"
304
304
  - "./lib/http_stub/server/application.rb"
305
+ - "./lib/http_stub/server/application_helpers.rb"
305
306
  - "./lib/http_stub/server/daemon.rb"
306
307
  - "./lib/http_stub/server/formatted_hash.rb"
307
308
  - "./lib/http_stub/server/header_parser.rb"
@@ -356,6 +357,7 @@ files:
356
357
  - "./lib/http_stub/server/views/index.haml"
357
358
  - "./lib/http_stub/server/views/layout.haml"
358
359
  - "./lib/http_stub/server/views/match_results.haml"
360
+ - "./lib/http_stub/server/views/matches.haml"
359
361
  - "./lib/http_stub/server/views/scenario.haml"
360
362
  - "./lib/http_stub/server/views/scenarios.haml"
361
363
  - "./lib/http_stub/server/views/stub.haml"
@@ -402,6 +404,7 @@ files:
402
404
  - "./spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb"
403
405
  - "./spec/lib/http_stub/rake/server_tasks_smoke_spec.rb"
404
406
  - "./spec/lib/http_stub/rake/server_tasks_spec.rb"
407
+ - "./spec/lib/http_stub/server/application_helpers_spec.rb"
405
408
  - "./spec/lib/http_stub/server/application_integration_spec.rb"
406
409
  - "./spec/lib/http_stub/server/application_spec.rb"
407
410
  - "./spec/lib/http_stub/server/daemon_integration_spec.rb"
@@ -450,6 +453,7 @@ files:
450
453
  - "./spec/resources/sample.txt"
451
454
  - "./spec/spec_helper.rb"
452
455
  - "./spec/support/configurer_integration.rb"
456
+ - "./spec/support/html_helpers.rb"
453
457
  - "./spec/support/http_stub/empty_configurer.rb"
454
458
  - "./spec/support/http_stub/scenario_fixture.rb"
455
459
  - "./spec/support/http_stub/server/request_fixture.rb"
@@ -523,6 +527,7 @@ test_files:
523
527
  - "./spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb"
524
528
  - "./spec/lib/http_stub/rake/server_tasks_smoke_spec.rb"
525
529
  - "./spec/lib/http_stub/rake/server_tasks_spec.rb"
530
+ - "./spec/lib/http_stub/server/application_helpers_spec.rb"
526
531
  - "./spec/lib/http_stub/server/application_integration_spec.rb"
527
532
  - "./spec/lib/http_stub/server/application_spec.rb"
528
533
  - "./spec/lib/http_stub/server/daemon_integration_spec.rb"
@@ -571,6 +576,7 @@ test_files:
571
576
  - "./spec/resources/sample.txt"
572
577
  - "./spec/spec_helper.rb"
573
578
  - "./spec/support/configurer_integration.rb"
579
+ - "./spec/support/html_helpers.rb"
574
580
  - "./spec/support/http_stub/empty_configurer.rb"
575
581
  - "./spec/support/http_stub/scenario_fixture.rb"
576
582
  - "./spec/support/http_stub/server/request_fixture.rb"