airborne 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/airborne.gemspec +4 -4
  4. data/lib/airborne.rb +1 -2
  5. data/lib/airborne/base.rb +20 -26
  6. data/lib/airborne/optional_hash_type_expectations.rb +3 -3
  7. data/lib/airborne/path_matcher.rb +10 -12
  8. data/lib/airborne/rack_test_requester.rb +1 -0
  9. data/lib/airborne/request_expectations.rb +26 -31
  10. data/lib/airborne/rest_client_requester.rb +16 -17
  11. data/spec/airborne/base_spec.rb +10 -10
  12. data/spec/airborne/delete_spec.rb +2 -2
  13. data/spec/airborne/expectations/expect_header_contains_spec.rb +6 -8
  14. data/spec/airborne/expectations/expect_header_spec.rb +5 -8
  15. data/spec/airborne/expectations/expect_json_keys_path_spec.rb +4 -6
  16. data/spec/airborne/expectations/expect_json_keys_spec.rb +3 -5
  17. data/spec/airborne/expectations/expect_json_lambda_spec.rb +2 -4
  18. data/spec/airborne/expectations/expect_json_path_spec.rb +72 -73
  19. data/spec/airborne/expectations/expect_json_regex_spec.rb +25 -27
  20. data/spec/airborne/expectations/expect_json_sizes_spec.rb +3 -5
  21. data/spec/airborne/expectations/expect_json_spec.rb +10 -6
  22. data/spec/airborne/expectations/expect_json_types_date_spec.rb +18 -21
  23. data/spec/airborne/expectations/expect_json_types_lambda_spec.rb +3 -5
  24. data/spec/airborne/expectations/expect_json_types_optional_spec.rb +11 -13
  25. data/spec/airborne/expectations/expect_json_types_path_spec.rb +52 -54
  26. data/spec/airborne/expectations/expect_json_types_spec.rb +18 -8
  27. data/spec/airborne/expectations/expect_status_spec.rb +6 -6
  28. data/spec/airborne/head_spec.rb +2 -2
  29. data/spec/airborne/options_spec.rb +2 -2
  30. data/spec/airborne/patch_spec.rb +2 -2
  31. data/spec/airborne/path_spec.rb +28 -30
  32. data/spec/airborne/post_spec.rb +3 -3
  33. data/spec/airborne/put_spec.rb +2 -2
  34. data/spec/airborne/rack/rack_sinatra_spec.rb +14 -7
  35. data/spec/spec_helper.rb +0 -1
  36. data/spec/stub_helper.rb +3 -4
  37. data/spec/test_responses/array_with_partial_nested.json +12 -0
  38. data/spec/test_responses/hash_property.json +3 -0
  39. data/spec/test_responses/simple_get.json +2 -1
  40. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ce172c348689ccc6d7d3df32523db62d7671a1e
4
- data.tar.gz: ec99365c4dcc0920dcd02197f47e2bb6dd985999
3
+ metadata.gz: ac06c0189febbd0649871cf9919a66e2d8cf2c82
4
+ data.tar.gz: ab35b7f94d89caabcdb9936f7f8ac9172c872b59
5
5
  SHA512:
6
- metadata.gz: 90c1a8944f16fb51139cf02d0e3bf29e30217ce9e6bf8d25116fc9cc221e1812426bef30d55cbf475ef476375f8b9393ea86c801cd81a0a588ea046d79cf4e36
7
- data.tar.gz: d141eaa4f1917c759e0c1e7ea7665fe07085f4c375737ae2d3286e570d2a59c2647482f3a52004c775617635f859fd0ae88d0e097e4692ca555565dd4e2cfe06
6
+ metadata.gz: dd8d1a0d1b65801745f20d9a044341c884d00c5391290c4f5db2da9544d006722a247e0cb1edeb2ed9f3d33f4d29ab5a8d17bf8b77c11af4f4d3834cf596c4b4
7
+ data.tar.gz: 94615d3ca58942930f91208d83c7740184631bbb5bbd44dc5db12582f2ce68ec49684103dab23e44ecae30fe002a793b4ca75eddd73aa8d13d053f7232526c57
data/README.md CHANGED
@@ -137,6 +137,12 @@ For requests that require a body (`post`, `put`, `patch`) you can pass the body
137
137
  post 'http://example.com/api/v1/my_api', {:name => 'John Doe'}, {'x-auth-token' => 'my_token'}
138
138
  ```
139
139
 
140
+ For requests that require Query params you can pass a params hash into headers.
141
+
142
+ ```ruby
143
+ post 'http://example.com/api/v1/my_api', {}, {'params' => {'param_key' => 'param_value'}
144
+ ```
145
+
140
146
  ##Testing Rack Applications
141
147
 
142
148
  If you have an existing Rack application like `sinatra` or `grape` you can run Airborne against your application and test without actually having a server running. To do that, just specify your rack application in your Airborne configuration:
data/airborne.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'airborne'
3
- s.version = '0.1.15'
3
+ s.version = '0.1.16'
4
4
  s.date = '2015-03-03'
5
- s.summary = "RSpec driven API testing framework"
6
- s.authors = ["Alex Friedman", "Seth Pollack"]
5
+ s.summary = 'RSpec driven API testing framework'
6
+ s.authors = ['Alex Friedman', 'Seth Pollack']
7
7
  s.email = ['a.friedman07@gmail.com', 'teampollack@gmail.com']
8
8
  s.require_paths = ['lib']
9
9
  s.files = `git ls-files`.split("\n")
10
10
  s.license = 'MIT'
11
11
  s.add_runtime_dependency 'rspec', '~> 3.1', '>= 3.1.0'
12
- s.add_runtime_dependency 'rest-client', '~> 1.7', '>= 1.7.3' #version 1.7.3 fixes security vulnerability https://github.com/brooklynDev/airborne/issues/41
12
+ s.add_runtime_dependency 'rest-client', '~> 1.7', '>= 1.7.3' # version 1.7.3 fixes security vulnerability https://github.com/brooklynDev/airborne/issues/41
13
13
  s.add_runtime_dependency 'rack-test', '~> 0.6', '>= 0.6.2'
14
14
  s.add_runtime_dependency 'activesupport', '>= 3.0.0', '>= 3.0.0'
15
15
  s.add_development_dependency 'webmock', '~> 0'
data/lib/airborne.rb CHANGED
@@ -5,7 +5,6 @@ require 'airborne/rest_client_requester'
5
5
  require 'airborne/rack_test_requester'
6
6
  require 'airborne/base'
7
7
 
8
-
9
8
  RSpec.configure do |config|
10
9
  config.include Airborne
11
10
  config.add_setting :base_url
@@ -13,4 +12,4 @@ RSpec.configure do |config|
13
12
  config.add_setting :rack_app
14
13
  config.add_setting :requester_type
15
14
  config.add_setting :requester_module
16
- end
15
+ end
data/lib/airborne/base.rb CHANGED
@@ -1,9 +1,14 @@
1
1
  require 'json'
2
- require 'active_support/hash_with_indifferent_access'
2
+ require 'active_support'
3
+ require 'active_support/core_ext/hash/indifferent_access'
3
4
 
4
5
  module Airborne
5
6
  class InvalidJsonError < StandardError; end
7
+
6
8
  include RequestExpectations
9
+
10
+ attr_reader :response, :headers, :body
11
+
7
12
  def self.configure
8
13
  RSpec.configure do |config|
9
14
  yield config
@@ -11,9 +16,9 @@ module Airborne
11
16
  end
12
17
 
13
18
  def self.included(base)
14
- if(!Airborne.configuration.requester_module.nil?)
19
+ if !Airborne.configuration.requester_module.nil?
15
20
  base.send(:include, Airborne.configuration.requester_module)
16
- elsif(!Airborne.configuration.rack_app.nil?)
21
+ elsif !Airborne.configuration.rack_app.nil?
17
22
  base.send(:include, RackTestRequester)
18
23
  else
19
24
  base.send(:include, RestClientRequester)
@@ -25,54 +30,43 @@ module Airborne
25
30
  end
26
31
 
27
32
  def get(url, headers = nil)
28
- set_response(make_request(:get, url, {headers: headers}))
33
+ set_response(make_request(:get, url, headers: headers))
29
34
  end
30
35
 
31
36
  def post(url, post_body = nil, headers = nil)
32
- set_response(make_request(:post, url, {body: post_body, headers: headers}))
37
+ set_response(make_request(:post, url, body: post_body, headers: headers))
33
38
  end
34
39
 
35
- def patch(url, patch_body = nil, headers = nil )
36
- set_response(make_request(:patch, url, {body: patch_body, headers: headers}))
40
+ def patch(url, patch_body = nil, headers = nil)
41
+ set_response(make_request(:patch, url, body: patch_body, headers: headers))
37
42
  end
38
43
 
39
- def put(url, put_body = nil, headers = nil )
40
- set_response(make_request(:put, url, {body: put_body, headers: headers}))
44
+ def put(url, put_body = nil, headers = nil)
45
+ set_response(make_request(:put, url, body: put_body, headers: headers))
41
46
  end
42
47
 
43
48
  def delete(url, headers = nil)
44
- set_response(make_request(:delete, url, {headers: headers}))
49
+ set_response(make_request(:delete, url, headers: headers))
45
50
  end
46
51
 
47
52
  def head(url, headers = nil)
48
- set_response(make_request(:head, url, {headers: headers}))
53
+ set_response(make_request(:head, url, headers: headers))
49
54
  end
50
55
 
51
56
  def options(url, headers = nil)
52
- set_response(make_request(:options, url, {headers: headers}))
53
- end
54
-
55
- def response
56
- @response
57
- end
58
-
59
- def headers
60
- @headers
61
- end
62
-
63
- def body
64
- @body
57
+ set_response(make_request(:options, url, headers: headers))
65
58
  end
66
59
 
67
60
  def json_body
68
- raise InvalidJsonError, "Api request returned invalid json" unless @json_body
61
+ set_response(@response) if @json_body.nil? && !@response.nil?
62
+ fail InvalidJsonError, 'Api request returned invalid json' unless @json_body
69
63
  @json_body
70
64
  end
71
65
 
72
66
  private
73
67
 
74
68
  def get_url(url)
75
- base = Airborne.configuration.base_url || ""
69
+ base = Airborne.configuration.base_url || ''
76
70
  base + url
77
71
  end
78
72
 
@@ -7,9 +7,9 @@ module Airborne
7
7
  end
8
8
 
9
9
  def each
10
- @hash.each do|k,v|
11
- yield(k,v)
10
+ @hash.each do|k, v|
11
+ yield(k, v)
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,9 +1,9 @@
1
1
  module Airborne
2
2
  class PathError < StandardError; end
3
- module PathMatcher
4
3
 
4
+ module PathMatcher
5
5
  def get_by_path(path, json, &block)
6
- raise PathError, "Invalid Path, contains '..'" if /\.\./ =~ path
6
+ fail PathError, "Invalid Path, contains '..'" if /\.\./ =~ path
7
7
  type = false
8
8
  parts = path.split('.')
9
9
  parts.each_with_index do |part, index|
@@ -11,15 +11,14 @@ module Airborne
11
11
  ensure_array(path, json)
12
12
  type = part
13
13
  if index < parts.length.pred
14
- walk_with_path(type, index, path, parts, json, &block)
15
- return
14
+ walk_with_path(type, index, path, parts, json, &block) && return
16
15
  end
17
16
  next
18
17
  end
19
18
  begin
20
19
  json = process_json(part, json)
21
20
  rescue
22
- raise PathError, "Expected #{json.class}\nto to be an object with property #{part}"
21
+ raise PathError, "Expected #{json.class}\nto be an object with property #{part}"
23
22
  end
24
23
  end
25
24
  if type == '*'
@@ -51,7 +50,7 @@ module Airborne
51
50
  end
52
51
 
53
52
  def process_json(part, json)
54
- if is_index?(part) && json.is_a?(Array)
53
+ if index?(part) && json.is_a?(Array)
55
54
  part = part.to_i
56
55
  json = json[part]
57
56
  else
@@ -60,7 +59,7 @@ module Airborne
60
59
  json
61
60
  end
62
61
 
63
- def is_index?(part)
62
+ def index?(part)
64
63
  part =~ /^\d+$/
65
64
  end
66
65
 
@@ -80,7 +79,7 @@ module Airborne
80
79
  def expect_all(json, &block)
81
80
  last_error = nil
82
81
  begin
83
- json.each{|part| yield part}
82
+ json.each { |part| yield part }
84
83
  rescue Exception => e
85
84
  last_error = e
86
85
  end
@@ -88,16 +87,15 @@ module Airborne
88
87
  end
89
88
 
90
89
  def ensure_match_one(path, item_count, error_count)
91
- raise RSpec::Expectations::ExpectationNotMetError, "Expected one object in path #{path} to match provided JSON values" if item_count == error_count
90
+ fail RSpec::Expectations::ExpectationNotMetError, "Expected one object in path #{path} to match provided JSON values" if item_count == error_count
92
91
  end
93
92
 
94
93
  def ensure_match_all(error)
95
- raise error unless error.nil?
94
+ fail error unless error.nil?
96
95
  end
97
96
 
98
97
  def ensure_array(path, json)
99
- raise RSpec::Expectations::ExpectationNotMetError, "Expected #{path} to be array got #{json.class} from JSON response" unless json.class == Array
98
+ fail RSpec::Expectations::ExpectationNotMetError, "Expected #{path} to be array got #{json.class} from JSON response" unless json.class == Array
100
99
  end
101
-
102
100
  end
103
101
  end
@@ -7,6 +7,7 @@ module Airborne
7
7
  base_headers = Airborne.configuration.headers || {}
8
8
  headers = base_headers.merge(headers)
9
9
  browser = Rack::Test::Session.new(Rack::MockSession.new(Airborne.configuration.rack_app))
10
+ headers.each { |name, value| browser.header(name, value) }
10
11
  browser.send(method, url, options[:body] || {}, headers)
11
12
  Rack::MockResponse.class_eval do
12
13
  alias_method :code, :status
@@ -53,14 +53,14 @@ module Airborne
53
53
  end
54
54
 
55
55
  def date
56
- lambda {|value| yield DateTime.parse(value)}
56
+ -> (value) { yield DateTime.parse(value) }
57
57
  end
58
58
 
59
59
  [:expect_json_types, :expect_json, :expect_json_keys, :expect_status, :expect_header, :expect_header_contains].each do |method_name|
60
60
  method = instance_method(method_name)
61
61
  define_method(method_name) do |*args, &block|
62
62
  set_rails_response
63
- method.bind(self).(*args, &block)
63
+ method.bind(self).call(*args, &block)
64
64
  end
65
65
  end
66
66
 
@@ -75,7 +75,7 @@ module Airborne
75
75
  expect(header.downcase).to eq(content.downcase)
76
76
  end
77
77
  else
78
- raise RSpec::Expectations::ExpectationNotMetError, "Header #{key} not present in HTTP response"
78
+ fail RSpec::Expectations::ExpectationNotMetError, "Header #{key} not present in HTTP response"
79
79
  end
80
80
  end
81
81
 
@@ -95,12 +95,12 @@ module Airborne
95
95
 
96
96
  def get_mapper
97
97
  base_mapper = {
98
- integer: [Fixnum,Bignum],
99
- array_of_integers: [Fixnum,Bignum],
100
- int: [Fixnum,Bignum],
101
- array_of_ints: [Fixnum,Bignum],
102
- float: [Float,Fixnum,Bignum],
103
- array_of_floats: [Float,Fixnum,Bignum],
98
+ integer: [Fixnum, Bignum],
99
+ array_of_integers: [Fixnum, Bignum],
100
+ int: [Fixnum, Bignum],
101
+ array_of_ints: [Fixnum, Bignum],
102
+ float: [Float, Fixnum, Bignum],
103
+ array_of_floats: [Float, Fixnum, Bignum],
104
104
  string: [String],
105
105
  array_of_strings: [String],
106
106
  boolean: [TrueClass, FalseClass],
@@ -111,18 +111,19 @@ module Airborne
111
111
  array_of_objects: [Hash],
112
112
  array: [Array],
113
113
  array_of_arrays: [Array],
114
- date: [DateTime]
114
+ date: [DateTime],
115
+ null: [NilClass]
115
116
  }
116
117
 
117
118
  mapper = base_mapper.clone
118
119
  base_mapper.each do |key, value|
119
- mapper[(key.to_s + "_or_null").to_sym] = value + [NilClass]
120
+ mapper[(key.to_s + '_or_null').to_sym] = value + [NilClass]
120
121
  end
121
122
  mapper
122
123
  end
123
124
 
124
125
  def expect_json_types_impl(expectations, hash_or_value)
125
- return if is_nil_optional_hash?(expectations, hash_or_value)
126
+ return if nil_optional_hash?(expectations, hash_or_value)
126
127
 
127
128
  @mapper ||= get_mapper
128
129
 
@@ -138,10 +139,10 @@ module Airborne
138
139
  expected_class = expected_type.class
139
140
  value_class = value.class
140
141
 
141
- next expect_json_types_impl(expected_type, value) if is_hash?(expected_class)
142
+ next expect_json_types_impl(expected_type, value) if hash?(expected_class)
142
143
  next expected_type.call(value) if expected_class == Proc
143
144
 
144
- if expected_type.to_s.include?("array_of")
145
+ if expected_type.to_s.include?('array_of')
145
146
  check_array_types(value, value_class, prop_name, expected_type)
146
147
  else
147
148
  expect_type(expected_type, value_class, prop_name)
@@ -151,7 +152,7 @@ module Airborne
151
152
 
152
153
  def convert_to_date(value)
153
154
  begin
154
- value = DateTime.parse(value)
155
+ DateTime.parse(value)
155
156
  rescue
156
157
  end
157
158
  end
@@ -163,18 +164,19 @@ module Airborne
163
164
  end
164
165
  end
165
166
 
166
- def is_nil_optional_hash?(expectations, hash)
167
+ def nil_optional_hash?(expectations, hash)
167
168
  expectations.class == Airborne::OptionalHashTypeExpectations && hash.nil?
168
169
  end
169
170
 
170
171
  def expect_type(expected_type, value_class, prop_name = nil)
171
- insert = prop_name.nil? ? "" : "#{prop_name} to be of type"
172
+ insert = prop_name.nil? ? '' : "#{prop_name} to be of type"
172
173
  msg = "Expected #{insert} #{expected_type}\n got #{value_class} instead"
174
+ fail ExpectationError, "Expected type #{expected_type}\nis an invalid type" if @mapper[expected_type].nil?
173
175
  expect(@mapper[expected_type].include?(value_class)).to eq(true), msg
174
176
  end
175
177
 
176
- def is_hash?(expected_class)
177
- expected_class == Hash || expected_class == Airborne::OptionalHashTypeExpectations
178
+ def hash?(expected_class)
179
+ expected_class == Hash || expected_class == Airborne::OptionalHashTypeExpectations
178
180
  end
179
181
 
180
182
  def expect_array(value_class, prop_name, expected_type)
@@ -183,11 +185,11 @@ module Airborne
183
185
 
184
186
  def expect_json_impl(expectations, hash)
185
187
  hash = hash.to_s if expectations.class == Regexp
186
- return expect(hash).to match(expectations) if is_property?(expectations)
188
+ return expect(hash).to match(expectations) if property?(expectations)
187
189
  expectations.each do |prop_name, expected_value|
188
- actual_value = ensure_hash_contains_prop(prop_name, hash) {hash[prop_name]}
190
+ actual_value = ensure_hash_contains_prop(prop_name, hash) { hash[prop_name] }
189
191
  expected_class = expected_value.class
190
- next expect_json_impl(expected_value, actual_value) if expected_class == Hash
192
+ next expect(actual_value).to match(expected_value) if expected_class == Hash
191
193
  next expected_value.call(actual_value) if expected_class == Proc
192
194
  next expect(actual_value.to_s).to match(expected_value) if expected_class == Regexp
193
195
  expect(actual_value).to eq(expected_value)
@@ -221,19 +223,12 @@ module Airborne
221
223
  ->(data) { expect(data.size).to eq(expected_size) }
222
224
  end
223
225
 
224
- def is_property?(expectations)
226
+ def property?(expectations)
225
227
  [String, Regexp, Float, Fixnum, Bignum, TrueClass, FalseClass, NilClass].include?(expectations.class)
226
228
  end
227
229
 
228
- # Resolve a supplied status to the appropriate class for the returned
229
- # status being tested. This helps reduce brittleness due to '200' != 200
230
- # when for the purposes of testing a response it is the same thing.
231
- #
232
- # @param candidate
233
- # @param authority
234
- # @return [String]
235
230
  def resolve_status(candidate, authority)
236
- candidate = Rack::Utils::SYMBOL_TO_STATUS_CODE[candidate] if candidate.kind_of?(Symbol)
231
+ candidate = Rack::Utils::SYMBOL_TO_STATUS_CODE[candidate] if candidate.is_a?(Symbol)
237
232
  case authority
238
233
  when String then candidate.to_s
239
234
  when Fixnum then candidate.to_i
@@ -3,26 +3,25 @@ require 'rest_client'
3
3
  module Airborne
4
4
  module RestClientRequester
5
5
  def make_request(method, url, options = {})
6
- headers = {content_type: :json}.merge(options[:headers] || {})
6
+ headers = { content_type: :json }.merge(options[:headers] || {})
7
7
  base_headers = Airborne.configuration.headers || {}
8
8
  headers = base_headers.merge(headers)
9
9
  res = if method == :post || method == :patch || method == :put
10
- begin
11
- request_body = options[:body].nil? ? "" : options[:body]
12
- request_body = request_body.to_json if options[:body].is_a?(Hash)
13
- RestClient.send(method, get_url(url), request_body, headers)
14
- rescue RestClient::Exception => e
15
- e.response
16
- end
17
- else
18
- begin
19
- RestClient.send(method, get_url(url), headers)
20
- rescue RestClient::Exception => e
21
- e.response
22
- end
23
-
24
- end
10
+ begin
11
+ request_body = options[:body].nil? ? '' : options[:body]
12
+ request_body = request_body.to_json if options[:body].is_a?(Hash)
13
+ RestClient.send(method, get_url(url), request_body, headers)
14
+ rescue RestClient::Exception => e
15
+ e.response
16
+ end
17
+ else
18
+ begin
19
+ RestClient.send(method, get_url(url), headers)
20
+ rescue RestClient::Exception => e
21
+ e.response
22
+ end
23
+ end
25
24
  res
26
25
  end
27
26
  end
28
- end
27
+ end
@@ -10,46 +10,46 @@ describe 'base spec' do
10
10
  it 'when request is made headers should be set' do
11
11
  mock_get('simple_get')
12
12
  get '/simple_get'
13
- expect(headers).to_not be(nil)
13
+ expect(headers).to_not be(nil)
14
14
  end
15
15
 
16
16
  it 'should throw an InvalidJsonError when accessing json_body on invalid json' do
17
17
  mock_get('invalid_json')
18
18
  get '/invalid_json'
19
- expect(body).to eq("1234")
20
- expect{json_body}.to raise_error
19
+ expect(body).to eq('1234')
20
+ expect { json_body }.to raise_error
21
21
  end
22
22
 
23
23
  it 'when request is made headers should be hash with indifferent access' do
24
- mock_get('simple_get', {'Content-Type' => 'application/json'})
24
+ mock_get('simple_get', 'Content-Type' => 'application/json')
25
25
  get '/simple_get'
26
26
  expect(headers).to be_kind_of(Hash)
27
27
  expect(headers[:content_type]).to eq('application/json')
28
28
  expect(headers['content_type']).to eq('application/json')
29
- end
29
+ end
30
30
 
31
31
  it 'when request is made body should be set' do
32
32
  mock_get('simple_get')
33
33
  get '/simple_get'
34
- expect(body).to_not be(nil)
34
+ expect(body).to_not be(nil)
35
35
  end
36
36
 
37
37
  it 'when request is made json body should be symbolized hash' do
38
38
  mock_get('simple_get')
39
39
  get '/simple_get'
40
40
  expect(json_body).to be_kind_of(Hash)
41
- expect(json_body.first[0]).to be_kind_of(Symbol)
41
+ expect(json_body.first[0]).to be_kind_of(Symbol)
42
42
  end
43
43
 
44
44
  it 'should handle a 500 error on get' do
45
- mock_get('simple_get', {}, [500, "Internal Server Error"])
45
+ mock_get('simple_get', {}, [500, 'Internal Server Error'])
46
46
  get '/simple_get'
47
47
  expect(json_body).to_not be(nil)
48
48
  end
49
49
 
50
50
  it 'should handle a 500 error on post' do
51
- mock_post('simple_post', {}, [500, "Internal Server Error"])
51
+ mock_post('simple_post', {}, [500, 'Internal Server Error'])
52
52
  post '/simple_post', {}
53
53
  expect(json_body).to_not be(nil)
54
54
  end
55
- end
55
+ end