mini-apivore 0.1.0 → 0.1.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
- SHA1:
3
- metadata.gz: ed2c095249dbb5ed92842caaa12837588ad08626
4
- data.tar.gz: a87d80459bd3c25b1c3f3db3c7ca4184648b371c
2
+ SHA256:
3
+ metadata.gz: 22b3e64224e3cb029e8c3111796f6fc1efeb95fc1de2aa74ff52ad5016754e3e
4
+ data.tar.gz: 5152527ad6fefca981afd144ad63cef076572e9102d8e2a2a3d2ba949eeabbe8
5
5
  SHA512:
6
- metadata.gz: 003ae52945a90ce823f542b6fe9da873689e85fda85b0410f019c27674962692a3069f3515cbcfad2634c65cd056616daaff2757f3502773ba55f1457447885e
7
- data.tar.gz: 4dc5d98010663a5d1f06061bb43bdc22ac9d08ea700fd95af4bcbd96adb988a76592097e4fa25e533a013488446844037ca83b84583422c255af4f1d4e29c0d4
6
+ metadata.gz: 6ae18ce44b6d6698cd8f2471aec7b9c664a8b5dd8ce33f3d25bf75a7b78263e08e1c63328e086a0af3429308d52d97897244a5552b956b3b901333c7eeeced40
7
+ data.tar.gz: 7368f20fb149e79f122b41c1fe76704b6bfe8a4c22c9422152d1f37961334fbec36e24e1697712182c7cd057f2d1995cdbd6c8b2ceb998198f7c06069c439bb2
@@ -5,6 +5,7 @@ require 'mini_apivore/swagger'
5
5
  require 'mini_apivore/swagger_checker'
6
6
  require 'mini_apivore/validation'
7
7
  require 'mini_apivore/http_codes'
8
+ require 'mini_apivore/to_param'
8
9
 
9
10
  module MiniApivore
10
11
  SWAGGER_CHECKERS = {}
@@ -34,8 +35,8 @@ module MiniApivore
34
35
  #---- class methods -----------
35
36
  module ClassMethods
36
37
 
37
- def init_swagger( swagger_path )
38
- SWAGGER_CHECKERS[self] ||= MiniApivore::SwaggerChecker.instance_for(swagger_path)
38
+ def init_swagger( swagger_path, schema= '' )
39
+ SWAGGER_CHECKERS[self] ||= MiniApivore::SwaggerChecker.instance_for(swagger_path, schema)
39
40
  end
40
41
 
41
42
  def runnable_methods
@@ -6,4 +6,5 @@ module MiniApivore
6
6
  FORBIDDEN = 403 # Access denied
7
7
  UNPROCESSABLE_ENTITY = 422
8
8
  OK = 200
9
+ NO_CONTENT = 204
9
10
  end
@@ -4,8 +4,8 @@ module MiniApivore
4
4
  class SwaggerChecker
5
5
  PATH_TO_CHECKER_MAP = {}
6
6
 
7
- def self.instance_for(path)
8
- PATH_TO_CHECKER_MAP[path] ||= new(path)
7
+ def self.instance_for(path, schema = '' )
8
+ PATH_TO_CHECKER_MAP[path] ||= new(path, schema)
9
9
  end
10
10
 
11
11
  def has_path?(path)
@@ -64,8 +64,9 @@ module MiniApivore
64
64
 
65
65
  attr_reader :mappings
66
66
 
67
- def initialize(swagger_path)
67
+ def initialize(swagger_path, schema )
68
68
  @swagger_path = swagger_path
69
+ @schema = schema
69
70
  load_swagger_doc!
70
71
  validate_swagger!
71
72
  setup_mappings!
@@ -77,6 +78,8 @@ module MiniApivore
77
78
  end
78
79
 
79
80
  def fetch_swagger!
81
+ return @schema unless @schema.empty?
82
+
80
83
  if File.exist?( swagger_path )
81
84
  JSON.parse( File.read(swagger_path) )
82
85
  else
@@ -0,0 +1,84 @@
1
+ require "cgi"
2
+
3
+ class Object
4
+ # Alias of <tt>to_s</tt>.
5
+ def to_param
6
+ to_s
7
+ end
8
+
9
+ # Converts an object into a string suitable for use as a URL query string,
10
+ # using the given <tt>key</tt> as the param name.
11
+ def to_query(key)
12
+ "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
13
+ end
14
+ end unless Object.method_defined?( :to_param )
15
+
16
+ class NilClass
17
+ # Returns +self+.
18
+ def to_param
19
+ self
20
+ end
21
+ end unless NilClass.method_defined?( :to_param )
22
+
23
+ class TrueClass
24
+ # Returns +self+.
25
+ def to_param
26
+ self
27
+ end
28
+ end unless TrueClass.method_defined?( :to_param )
29
+
30
+ class FalseClass
31
+ # Returns +self+.
32
+ def to_param
33
+ self
34
+ end
35
+ end unless FalseClass.method_defined?( :to_param )
36
+
37
+ class Array
38
+ # Calls <tt>to_param</tt> on all its elements and joins the result with
39
+ # slashes. This is used by <tt>url_for</tt> in Action Pack.
40
+ def to_param
41
+ collect(&:to_param).join "/"
42
+ end
43
+
44
+ # Converts an array into a string suitable for use as a URL query string,
45
+ # using the given +key+ as the param name.
46
+ #
47
+ # ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
48
+ def to_query(key)
49
+ prefix = "#{key}[]"
50
+
51
+ if empty?
52
+ nil.to_query(prefix)
53
+ else
54
+ collect { |value| value.to_query(prefix) }.join "&"
55
+ end
56
+ end
57
+ end unless Array.method_defined?( :to_param )
58
+
59
+ class Hash
60
+ # Returns a string representation of the receiver suitable for use as a URL
61
+ # query string:
62
+ #
63
+ # {name: 'David', nationality: 'Danish'}.to_query
64
+ # # => "name=David&nationality=Danish"
65
+ #
66
+ # An optional namespace can be passed to enclose key names:
67
+ #
68
+ # {name: 'David', nationality: 'Danish'}.to_query('user')
69
+ # # => "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
70
+ #
71
+ # The string pairs "key=value" that conform the query string
72
+ # are sorted lexicographically in ascending order.
73
+ #
74
+ # This method is also aliased as +to_param+.
75
+ def to_query(namespace = nil)
76
+ collect do |key, value|
77
+ unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
78
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
79
+ end
80
+ end.compact.sort! * "&"
81
+ end
82
+
83
+ alias_method :to_param, :to_query
84
+ end unless Hash.method_defined?( :to_param )
@@ -20,7 +20,7 @@ module MiniApivore
20
20
 
21
21
  def check_route( verb, path, expected_response_code, params = {} )
22
22
  prepare_action_env( verb, path, expected_response_code, params )
23
- assert( match?, failure_message )
23
+ assert( match?, "Failure message: #{failure_message},\n fullpath: #{full_path}, \n params causing failure:#{params}" )
24
24
  end
25
25
 
26
26
  def match?
@@ -82,7 +82,7 @@ module MiniApivore
82
82
  key = param.first
83
83
  dkey = data && ( data[key] || data[key.to_sym] )
84
84
  if dkey
85
- path = path.gsub "{#{key}}", dkey.to_s
85
+ path = path.gsub "{#{key}}", dkey.to_param
86
86
  else
87
87
  raise URI::InvalidURIError, "No substitution data found for {#{key}}"\
88
88
  " to test the path #{path}.", caller
@@ -1,5 +1,5 @@
1
1
  module Mini
2
2
  module Apivore
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini-apivore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - alekseyl
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-02 00:00:00.000000000 Z
11
+ date: 2020-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema
@@ -70,18 +70,18 @@ dependencies:
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.3'
75
+ version: 12.3.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '10.3'
83
- description: " Provides a tool for testing your application api against your swagger
84
- schema "
82
+ version: 12.3.3
83
+ description: " Minitest adaptation of apivore gem,\n Provides
84
+ a tool for testing your application api against your swagger schema "
85
85
  email:
86
86
  - leshchuk@gmail.com
87
87
  executables: []
@@ -96,6 +96,7 @@ files:
96
96
  - lib/mini_apivore/http_codes.rb
97
97
  - lib/mini_apivore/swagger.rb
98
98
  - lib/mini_apivore/swagger_checker.rb
99
+ - lib/mini_apivore/to_param.rb
99
100
  - lib/mini_apivore/validation.rb
100
101
  - lib/mini_apivore/version.rb
101
102
  homepage: https://github.com/alekseyl/mini-apivore
@@ -119,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  - !ruby/object:Gem::Version
120
121
  version: '0'
121
122
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.6.13
123
+ rubygems_version: 3.0.1
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Minitest adaptation of an apivore gem