cucumber-http 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 +4 -4
- data/README.md +135 -1
- data/lib/cucumber/http/http_steps.rb +1 -1
- data/lib/cucumber/http/version.rb +1 -1
- data/lib/cucumber/http/world_extensions.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db09007776b7080549a13a86e301a75f4c979741
|
4
|
+
data.tar.gz: b7ef953e7f55853ad877f4a5f7cdada6327c101c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5a566e3103706625fc736859a05af63f97dd709c7c90c955d4ba5aa6080c664e2277f2dea1f6eb2f37c87967c7496c59d07b995ee45f968ff00753ef2b038c2
|
7
|
+
data.tar.gz: f8aaa79b60e1eb017faceb048c79a404e0441dace6d62c802dbc69026f9312a5640d575e30b8924699cce030cc20b650d278b07411b9ef0e92b622f387e6a50e
|
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Cucumber::Http
|
2
2
|
|
3
|
-
|
3
|
+
This library provides Cucumber steps to test JSON HTTP API's. The
|
4
|
+
steps are rather verbose (technical) in nature, somewhat contrary to the
|
5
|
+
Cucumber philosophy of high-level, descriptive tests. This is intentional as
|
6
|
+
it allows these steps to be bundled in larger, more high-level tests by
|
7
|
+
non-developers.
|
4
8
|
|
5
9
|
## Installation
|
6
10
|
|
@@ -20,6 +24,136 @@ Or install it yourself as:
|
|
20
24
|
|
21
25
|
## Usage
|
22
26
|
|
27
|
+
### Bundled steps
|
28
|
+
|
29
|
+
#### Examples
|
30
|
+
|
31
|
+
Examples for testing the [REST API](https://apidoc.uitdatabank.be) of
|
32
|
+
[UiTDatabank](https://www.uitdatabank.be):
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
@api @labels
|
36
|
+
Feature: Test the UDB3 labels API
|
37
|
+
|
38
|
+
Background:
|
39
|
+
Given I am using the UDB3 development environment
|
40
|
+
And I am authorized as user "centraal_beheerder"
|
41
|
+
And I send and accept JSON
|
42
|
+
|
43
|
+
@labelcreate
|
44
|
+
Scenario: Create label
|
45
|
+
When I create a label with a random name of 10 characters
|
46
|
+
And I keep the value of the JSON response at "uuid" as "uuid"
|
47
|
+
And I send a GET request to "/labels/%{uuid}"
|
48
|
+
Then the response status should be "200"
|
49
|
+
And the JSON response at "visibility" should be "visible"
|
50
|
+
And the JSON response at "privacy" should be "public"
|
51
|
+
```
|
52
|
+
|
53
|
+
#### Benchmarking
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
Given /^I am benchmarking$/
|
57
|
+
```
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
Then /^the elapsed time should be less than (#{CAPTURE_FLOAT}) seconds?$/
|
61
|
+
```
|
62
|
+
|
63
|
+
#### HTTP
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
Given /^I set headers?:$/
|
67
|
+
```
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
Given /^I send "(.*?)" and accept (XML|JSON)$/
|
71
|
+
```
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
Given /^I send and accept (XML|JSON)$/
|
75
|
+
```
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
Given /^I set the JSON request payload to:$/
|
79
|
+
```
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
Given /^I set the JSON request payload from "(.*?)"$/
|
83
|
+
```
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
When /^I send a (GET|POST|PATCH|PUT|DELETE) request to "([^"]*)"(?: with parameters?:)?$/
|
87
|
+
```
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
Then /^the response status should( not)? be "(#{CAPTURE_INTEGER})"$/
|
91
|
+
```
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
Then /^the response body should be valid (XML|JSON)$/
|
95
|
+
```
|
96
|
+
|
97
|
+
#### Debugging
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
Then /^show me the( unparsed)? response$/
|
101
|
+
```
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
Then /^show me the kept values?$/
|
105
|
+
```
|
106
|
+
|
107
|
+
#### JSON (through JsonSpec)
|
108
|
+
|
109
|
+
These steps are documented in the [json_spec README](https://github.com/collectiveidea/json_spec#cucumber)
|
110
|
+
|
111
|
+
### Making larger, more descriptive tests
|
112
|
+
|
113
|
+
The steps in this library are overly technical for use in Cucumber as a communication
|
114
|
+
tool between developers and business people. They are meant to be encapsulated in
|
115
|
+
larger, more general steps through the use of the `steps` method in Cucumber.
|
116
|
+
|
117
|
+
This allows easier reuse of code and the ability for non-developers to write
|
118
|
+
requirements.
|
119
|
+
|
120
|
+
Examples for testing the [REST API](https://apidoc.uitdatabank.be) of
|
121
|
+
[UiTDatabank](https://www.uitdatabank.be):
|
122
|
+
|
123
|
+
Creating an organizer with a random name:
|
124
|
+
```ruby
|
125
|
+
When /^I(?: have)? created? an organizer with a random name of (#{CAPTURE_INTEGER}) characters?$/ do |characters|
|
126
|
+
name = Faker::Lorem.characters(characters)
|
127
|
+
steps %Q{
|
128
|
+
Given I am using the UDB3 development environment
|
129
|
+
And I am authorized as user "centraal_beheerder"
|
130
|
+
And I send and accept JSON
|
131
|
+
When I set the JSON request payload to:
|
132
|
+
"""
|
133
|
+
{"mainLanguage":"nl","website":"https://www.#{name}.be","name":"#{name}","contact":[]}
|
134
|
+
"""
|
135
|
+
And I send a POST request to "/organizers/"
|
136
|
+
}
|
137
|
+
end
|
138
|
+
```
|
139
|
+
|
140
|
+
Creating a role with a random name:
|
141
|
+
```ruby
|
142
|
+
When /^I(?: have)? created? a role with a random name of (#{CAPTURE_INTEGER}) characters?$/ do |characters|
|
143
|
+
name = Faker::Lorem.characters(characters)
|
144
|
+
steps %Q{
|
145
|
+
Given I am using the UDB3 development environment
|
146
|
+
And I am authorized as user "centraal_beheerder"
|
147
|
+
And I send and accept JSON
|
148
|
+
When I set the JSON request payload to:
|
149
|
+
"""
|
150
|
+
{ "name": "#{name}" }
|
151
|
+
"""
|
152
|
+
And I send a POST request to "/roles/"
|
153
|
+
}
|
154
|
+
end
|
155
|
+
```
|
156
|
+
|
23
157
|
## Development
|
24
158
|
|
25
159
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
@@ -44,7 +44,7 @@ When /^I send a (GET|POST|PATCH|PUT|DELETE) request to "([^"]*)"(?: with paramet
|
|
44
44
|
endpoint = resolve(args.shift)
|
45
45
|
params = args.shift
|
46
46
|
|
47
|
-
request_url = URI.join(url, endpoint).to_s
|
47
|
+
request_url = URI.join(url, URI::encode(endpoint)).to_s
|
48
48
|
|
49
49
|
unless params.nil?
|
50
50
|
if params.class == Cucumber::MultilineArgument::DataTable
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require_relative 'world_extensions/json_spec_interface'
|
2
|
-
require_relative 'world_extensions/url'
|
3
2
|
require_relative 'world_extensions/headers'
|
4
3
|
require_relative 'world_extensions/parameters'
|
5
4
|
require_relative 'world_extensions/payload'
|
6
5
|
require_relative 'world_extensions/request'
|
7
6
|
require_relative 'world_extensions/response'
|
7
|
+
require_relative 'world_extensions/url'
|
8
8
|
|
9
9
|
World(JsonSpecInterface)
|
10
10
|
World(Cucumber::Http::Headers)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristof Willaert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: '0'
|
152
152
|
requirements: []
|
153
153
|
rubyforge_project:
|
154
|
-
rubygems_version: 2.
|
154
|
+
rubygems_version: 2.5.2.3
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: Cucumber steps to easily test XML and JSON APIs
|