cucumber-api 0.4 → 0.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 +4 -4
- data/.travis.yml +13 -1
- data/README.md +1 -1
- data/cucumber-api.gemspec +7 -6
- data/lib/cucumber-api/helpers.rb +21 -0
- data/lib/cucumber-api/response.rb +1 -3
- data/lib/cucumber-api/steps.rb +1 -17
- data/lib/cucumber-api/version.rb +2 -2
- metadata +26 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ab71054d422abc7b72e2d09c7adbf2676cd8257
|
4
|
+
data.tar.gz: e91f8ac5a16ab3ee55ccf3fdaa8eb0e7e00e8ba5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd01e8b2d5fa19c1f38c04516a44dcc8350eda852ed6f82961fe7e4449b05edd90c3226117f75185afed747aa1e4d209e0beec817bdf40c827069cb698972fba
|
7
|
+
data.tar.gz: 30059e7bfc54c7eaf8742c0a7a851cc1ad1319208a311f0de57bd9947cd03a16c9d70299129db17e53eee44272bfccc2b7f74e63d250f97573ba78774a681e37
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
[](https://travis-ci.org/hidroh/cucumber-api) [](http://badge.fury.io/rb/cucumber-api) [](https://gemnasium.com/hidroh/cucumber-api)
|
3
3
|
[](https://codeclimate.com/github/hidroh/cucumber-api) [](https://rubygems.org/gems/cucumber-api)
|
4
4
|
|
5
|
-
API validator in
|
5
|
+
API validator in BDD style with [Cucumber](https://cukes.info/). **cucumber-api** lets one validate public APIs JSON response in blazingly fast time.
|
6
6
|
|
7
7
|
Inspired by [cucumber-api-steps](https://github.com/jayzes/cucumber-api-steps).
|
8
8
|
|
data/cucumber-api.gemspec
CHANGED
@@ -13,11 +13,12 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = %q{cucumber-api allows API JSON response validation and verification in BDD style.}
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.require_paths = ["lib"]
|
16
|
-
s.required_ruby_version = '>=
|
16
|
+
s.required_ruby_version = '>= 2.3.0'
|
17
17
|
s.license = 'Apache-2.0'
|
18
18
|
|
19
|
-
s.add_dependency('
|
20
|
-
s.add_dependency('
|
21
|
-
s.add_dependency('
|
22
|
-
s.add_dependency('
|
23
|
-
|
19
|
+
s.add_dependency('addressable', '2.5')
|
20
|
+
s.add_dependency('cucumber', '~> 3.1.0')
|
21
|
+
s.add_dependency('jsonpath', '~> 0.8')
|
22
|
+
s.add_dependency('rest-client', '~> 2.0.2')
|
23
|
+
s.add_dependency('json-schema', '~> 2.8.0')
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module CucumberApi
|
2
|
+
module Helpers
|
3
|
+
# Bind grabbed values into placeholders in given URL
|
4
|
+
# Ex: http://example.com?id={id} with {id => 1} becomes http://example.com?id=1
|
5
|
+
# @param url [String] parameterized URL with placeholders
|
6
|
+
# @return [String] binded URL or original URL if no placeholders
|
7
|
+
def resolve url
|
8
|
+
url.gsub!(/\{([a-zA-Z0-9_]+)\}/) do |s|
|
9
|
+
s.gsub!(/[\{\}]/, '')
|
10
|
+
if instance_variable_defined?("@#{s}")
|
11
|
+
instance_variable_get("@#{s}")
|
12
|
+
else
|
13
|
+
raise 'Did you forget to "grab" ' + s + '?'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
url
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
World(CucumberApi::Helpers)
|
@@ -6,9 +6,6 @@ module CucumberApi
|
|
6
6
|
|
7
7
|
# Extension of {RestClient::Response} with support for JSON path traversal and validation
|
8
8
|
module Response
|
9
|
-
|
10
|
-
include RestClient::Response
|
11
|
-
|
12
9
|
# Create a Response with JSON path support
|
13
10
|
# @param response [RestClient::Response] original response
|
14
11
|
# @return [Response] self
|
@@ -115,5 +112,6 @@ module CucumberApi
|
|
115
112
|
''
|
116
113
|
end
|
117
114
|
end
|
115
|
+
RestClient::Response.send(:include, self)
|
118
116
|
end
|
119
117
|
end
|
data/lib/cucumber-api/steps.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber-api/response'
|
2
|
+
require 'cucumber-api/helpers'
|
2
3
|
require 'rest-client'
|
3
4
|
require 'json-schema'
|
4
5
|
|
@@ -174,20 +175,3 @@ Then(/^the JSON response should have "([^"]*)" of type \
|
|
174
175
|
(numeric|string|boolean|numeric_string) and value "([^"]*)"$/) do |json_path, type, value|
|
175
176
|
@response.get_as_type_and_check_value json_path, type, resolve(value)
|
176
177
|
end
|
177
|
-
|
178
|
-
# Bind grabbed values into placeholders in given URL
|
179
|
-
# Ex: http://example.com?id={id} with {id => 1} becomes http://example.com?id=1
|
180
|
-
# @param url [String] parameterized URL with placeholders
|
181
|
-
# @return [String] binded URL or original URL if no placeholders
|
182
|
-
def resolve url
|
183
|
-
url.gsub!(/\{([a-zA-Z0-9_]+)\}/) do |s|
|
184
|
-
s.gsub!(/[\{\}]/, '')
|
185
|
-
if instance_variable_defined?("@#{s}")
|
186
|
-
instance_variable_get("@#{s}")
|
187
|
-
else
|
188
|
-
raise 'Did you forget to "grab" ' + s + '?'
|
189
|
-
end
|
190
|
-
end
|
191
|
-
url
|
192
|
-
end
|
193
|
-
|
data/lib/cucumber-api/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module CucumberApi
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
2
|
+
VERSION = "0.5"
|
3
|
+
end
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ha Duy Trung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: addressable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.5'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: cucumber
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
33
|
+
version: 3.1.0
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: 3.1.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: jsonpath
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
47
|
+
version: '0.8'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
54
|
+
version: '0.8'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rest-client
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: 2.0.2
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 2.0.2
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: json-schema
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: 2.8.0
|
62
76
|
type: :runtime
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 2.8.0
|
69
83
|
description: cucumber-api allows API JSON response validation and verification in
|
70
84
|
BDD style.
|
71
85
|
email:
|
@@ -86,6 +100,7 @@ files:
|
|
86
100
|
- features/schemas/topstories.json
|
87
101
|
- features/support/env.rb
|
88
102
|
- lib/cucumber-api.rb
|
103
|
+
- lib/cucumber-api/helpers.rb
|
89
104
|
- lib/cucumber-api/response.rb
|
90
105
|
- lib/cucumber-api/steps.rb
|
91
106
|
- lib/cucumber-api/version.rb
|
@@ -101,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
116
|
requirements:
|
102
117
|
- - ">="
|
103
118
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
119
|
+
version: 2.3.0
|
105
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
121
|
requirements:
|
107
122
|
- - ">="
|