rspec-rails-swagger 0.1.2 → 0.1.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: 7a2b47ce191c99f44fb347b30d0f008598b12333
4
- data.tar.gz: ef2a2ba21b5ae8205d5fef54ba82f41433da7315
3
+ metadata.gz: 0a916826de8e3e0b5f89296dcd78ca114356c106
4
+ data.tar.gz: e709fb01df49194a494f20e6b26a47958ae5d409
5
5
  SHA512:
6
- metadata.gz: 8c6b22a14ed9e8500c79079b2df7752466ee655c6e68b12219538da0ded969bd3ed4025a912f3e2177c9ab6fcc66b25cc76abfb57fc97df470abafdd061900e5
7
- data.tar.gz: 6ab205147771de49993331072bd1961ec81fe8a766b01adaffa7f4e13153f695900451fbffd192b906babcb798370c4a6c21a4df461a10b00e3f611e0f921b8b
6
+ metadata.gz: daca2e677f67f13e83259c5cfae1046c033a6bb3dd82853f2d0f6455c5d49de8ea57026531692d98d9988914c8752bf8daf36869494c33bd2353c0b6e16357ce
7
+ data.tar.gz: cc2bcb1103465c99da748a33b0b18a3bf17745a15ecaef02e40a92905a1918f132d53f3e16ea687a492a47da5df69c6f60e02147422cadac18b4089e3d923ef2
@@ -12,6 +12,8 @@ module RSpec
12
12
  data[value]
13
13
  end
14
14
 
15
+ ##
16
+ # Look up parameter or definition references.
15
17
  def resolve_ref(ref)
16
18
  unless %r{#/(?<location>parameters|definitions)/(?<name>.+)} =~ ref
17
19
  raise ArgumentError, "Invalid reference: #{ref}"
@@ -204,13 +204,14 @@ module RSpec
204
204
  method = builder.method
205
205
  path = [builder.path, builder.query].join
206
206
  headers = builder.headers
207
+ env = builder.env
207
208
  body = builder.body
208
209
 
209
210
  # Run the request
210
211
  if ::Rails::VERSION::MAJOR >= 5
211
- self.send(method, path, {params: body, headers: headers})
212
+ self.send(method, path, {params: body, headers: headers, env: env})
212
213
  else
213
- self.send(method, path, body, headers)
214
+ self.send(method, path, body, headers.merge(env))
214
215
  end
215
216
 
216
217
  if example.metadata[:capture_examples]
@@ -4,10 +4,17 @@ module RSpec
4
4
  class RequestBuilder
5
5
  attr_reader :metadata, :instance
6
6
 
7
+ ##
8
+ # Creates a new RequestBuilder from the Example class's +metadata+ hash
9
+ # and a test +instance+ that we can use to populate the parameter
10
+ # values.
7
11
  def initialize(metadata, instance)
8
12
  @metadata, @instance = metadata, instance
9
13
  end
10
14
 
15
+ ##
16
+ # Finds the Document associated with this request so things like schema
17
+ # and parameter references can be resolved.
11
18
  def document
12
19
  @document ||= begin
13
20
  name = metadata[:swagger_document]
@@ -27,6 +34,10 @@ module RSpec
27
34
  Array(metadata[:swagger_operation][:consumes]).presence || Array(document[:consumes])
28
35
  end
29
36
 
37
+ ##
38
+ # Returns parameters defined in the operation and path item. Providing
39
+ # a +location+ will filter the parameters to those with a matching +in+
40
+ # value.
30
41
  def parameters location = nil
31
42
  path_item = metadata[:swagger_path_item] || {}
32
43
  operation = metadata[:swagger_operation] || {}
@@ -39,12 +50,10 @@ module RSpec
39
50
  end
40
51
 
41
52
  def parameter_values location
42
- # Don't bother looking at the full parameter bodies since all we need
43
- # are location and name which are in the key.
44
- values = parameters(location)
45
- .keys
46
- .map{ |k| k.split('&').last }
47
- .map{ |name| [name, instance.send(name)] }
53
+ values = parameters(location).
54
+ map{ |_, p| p['$ref'] ? document.resolve_ref(p['$ref']) : p }.
55
+ select{ |p| p[:required] || instance.respond_to?(p[:name]) }.
56
+ map{ |p| [p[:name], instance.send(p[:name])] }
48
57
  Hash[values]
49
58
  end
50
59
 
@@ -62,6 +71,15 @@ module RSpec
62
71
  headers
63
72
  end
64
73
 
74
+ ##
75
+ # If +instance+ defines an +env+ method this will return those values
76
+ # for inclusion in the Rack env hash.
77
+ def env
78
+ return {} unless instance.respond_to? :env
79
+
80
+ instance.env
81
+ end
82
+
65
83
  def path
66
84
  base_path = document[:basePath] || ''
67
85
  # Find params in the path and replace them with values defined in
@@ -3,7 +3,7 @@ module RSpec
3
3
  # Version information for RSpec Swagger.
4
4
  module Swagger
5
5
  module Version
6
- STRING = '0.1.2'
6
+ STRING = '0.1.3'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-rails-swagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - andrew morton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-04 00:00:00.000000000 Z
11
+ date: 2016-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails