webspicy 0.14.0 → 0.15.0.pre.rc1
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 +5 -5
- data/examples/restful/Gemfile.lock +11 -9
- data/lib/webspicy.rb +3 -2
- data/lib/webspicy/client.rb +3 -0
- data/lib/webspicy/client/http_client.rb +13 -18
- data/lib/webspicy/client/rack_test_client.rb +15 -20
- data/lib/webspicy/client/support.rb +39 -0
- data/lib/webspicy/version.rb +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 510691d8141022c21d24de399e71457354d6ef9852463459245c66aae49cf8c7
|
4
|
+
data.tar.gz: a95593328ab9190d8f58b63308e31671528d4a9ef8b464772f4b80a74fee07b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c2be87c7977f92f5855f3d9f8d45efe5824c30e634136df977f8c77f020725eb1b7750ec176c7f8e75313000a71b0dbc2e108a08a529db2830c0eeefb2381b6
|
7
|
+
data.tar.gz: 7d476d7a3ccd38f998ed54e132fb58324634de107144e858d4847918a493bf2acfc6d7aed1c6527a1056b9af5073e62d9e70cc5822b1955ada39471ab1c048fd
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
webspicy (0.
|
4
|
+
webspicy (0.15.0.pre.rc1)
|
5
5
|
finitio (>= 0.8.0)
|
6
6
|
http (~> 2)
|
7
7
|
mustermann (~> 1.0)
|
@@ -33,14 +33,15 @@ GEM
|
|
33
33
|
domain_name (~> 0.5)
|
34
34
|
http-form_data (1.0.3)
|
35
35
|
http_parser.rb (0.6.0)
|
36
|
-
mustermann (1.
|
37
|
-
|
36
|
+
mustermann (1.1.1)
|
37
|
+
ruby2_keywords (~> 0.0.1)
|
38
|
+
mustermann-contrib (1.1.1)
|
38
39
|
hansi (~> 0.2.0)
|
39
|
-
mustermann (= 1.
|
40
|
+
mustermann (= 1.1.1)
|
40
41
|
path (1.3.3)
|
41
42
|
public_suffix (4.0.3)
|
42
|
-
rack (2.
|
43
|
-
rack-protection (2.0.
|
43
|
+
rack (2.2.2)
|
44
|
+
rack-protection (2.0.8.1)
|
44
45
|
rack
|
45
46
|
rack-robustness (1.1.0)
|
46
47
|
rack-test (0.6.3)
|
@@ -61,10 +62,11 @@ GEM
|
|
61
62
|
rspec-support (3.9.2)
|
62
63
|
rspec_junit_formatter (0.4.1)
|
63
64
|
rspec-core (>= 2, < 4, != 2.12.0)
|
64
|
-
|
65
|
+
ruby2_keywords (0.0.2)
|
66
|
+
sinatra (2.0.8.1)
|
65
67
|
mustermann (~> 1.0)
|
66
68
|
rack (~> 2.0)
|
67
|
-
rack-protection (= 2.0.
|
69
|
+
rack-protection (= 2.0.8.1)
|
68
70
|
tilt (~> 2.0)
|
69
71
|
tilt (2.0.10)
|
70
72
|
unf (0.1.4)
|
@@ -80,4 +82,4 @@ DEPENDENCIES
|
|
80
82
|
webspicy!
|
81
83
|
|
82
84
|
BUNDLED WITH
|
83
|
-
2.
|
85
|
+
2.0.2
|
data/lib/webspicy.rb
CHANGED
@@ -18,8 +18,6 @@ module Webspicy
|
|
18
18
|
require 'webspicy/file_upload'
|
19
19
|
require 'webspicy/scope'
|
20
20
|
require 'webspicy/client'
|
21
|
-
require 'webspicy/client/http_client'
|
22
|
-
require 'webspicy/client/rack_test_client'
|
23
21
|
require 'webspicy/resource'
|
24
22
|
require 'webspicy/precondition'
|
25
23
|
require 'webspicy/postcondition'
|
@@ -132,6 +130,9 @@ module Webspicy
|
|
132
130
|
|
133
131
|
LOGGER = ::Logger.new(STDOUT)
|
134
132
|
LOGGER.level = Logger.const_get(ENV['LOG_LEVEL'] || 'WARN')
|
133
|
+
LOGGER.formatter = proc { |severity, datetime, progname, msg|
|
134
|
+
" " + msg + "\n"
|
135
|
+
}
|
135
136
|
|
136
137
|
def info(*args, &bl)
|
137
138
|
LOGGER && LOGGER.info(*args, &bl)
|
data/lib/webspicy/client.rb
CHANGED
@@ -40,33 +40,32 @@ module Webspicy
|
|
40
40
|
end
|
41
41
|
|
42
42
|
class Api
|
43
|
+
include Client::Support
|
43
44
|
|
44
45
|
attr_reader :last_response
|
45
46
|
|
46
47
|
def options(url, params = {}, headers = nil, body = nil)
|
47
|
-
|
48
|
+
info_request("OPTIONS", url, params, headers, body)
|
48
49
|
|
49
50
|
@last_response = HTTP[headers || {}].options(url, params: params)
|
50
51
|
|
51
|
-
|
52
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
52
|
+
debug_response(@last_response)
|
53
53
|
|
54
54
|
@last_response
|
55
55
|
end
|
56
56
|
|
57
57
|
def get(url, params = {}, headers = nil, body = nil)
|
58
|
-
|
58
|
+
info_request("GET", url, params, headers, body)
|
59
59
|
|
60
60
|
@last_response = HTTP[headers || {}].get(url, params: params)
|
61
61
|
|
62
|
-
|
63
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
62
|
+
debug_response(@last_response)
|
64
63
|
|
65
64
|
@last_response
|
66
65
|
end
|
67
66
|
|
68
67
|
def post(url, params = {}, headers = nil, body = nil)
|
69
|
-
|
68
|
+
info_request("POST", url, params, headers, body)
|
70
69
|
|
71
70
|
url = url + "?" + Rack::Utils.build_query(params) if body && !params.empty?
|
72
71
|
|
@@ -87,43 +86,39 @@ module Webspicy
|
|
87
86
|
@last_response = HTTP[headers].post(url, body: body)
|
88
87
|
end
|
89
88
|
|
90
|
-
|
91
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
89
|
+
debug_response(@last_response)
|
92
90
|
|
93
91
|
@last_response
|
94
92
|
end
|
95
93
|
|
96
94
|
def patch(url, params = {}, headers = nil, body = nil)
|
97
|
-
|
95
|
+
info_request("PATCH", url, params, headers, body)
|
98
96
|
|
99
97
|
headers ||= {}
|
100
98
|
headers['Content-Type'] ||= 'application/json'
|
101
99
|
@last_response = HTTP[headers].patch(url, body: params.to_json)
|
102
100
|
|
103
|
-
|
104
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
101
|
+
debug_response(@last_response)
|
105
102
|
|
106
103
|
@last_response
|
107
104
|
end
|
108
105
|
|
109
106
|
def post_form(url, params = {}, headers = nil, body = nil)
|
110
|
-
|
107
|
+
info_request("POST", url, params, headers, body)
|
111
108
|
|
112
109
|
@last_response = HTTP[headers || {}].post(url, form: params)
|
113
110
|
|
114
|
-
|
115
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
111
|
+
debug_response(@last_response)
|
116
112
|
|
117
113
|
@last_response
|
118
114
|
end
|
119
115
|
|
120
116
|
def delete(url, params = {}, headers = nil, body = nil)
|
121
|
-
|
117
|
+
info_request("DELETE", url, params, headers, body)
|
122
118
|
|
123
119
|
@last_response = HTTP[headers || {}].delete(url, body: params.to_json)
|
124
120
|
|
125
|
-
|
126
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
121
|
+
debug_response(@last_response)
|
127
122
|
|
128
123
|
@last_response
|
129
124
|
end
|
@@ -54,6 +54,7 @@ module Webspicy
|
|
54
54
|
end # class RackHandler
|
55
55
|
|
56
56
|
class Api
|
57
|
+
include Client::Support
|
57
58
|
|
58
59
|
attr_reader :last_response
|
59
60
|
|
@@ -64,13 +65,12 @@ module Webspicy
|
|
64
65
|
def options(url, params = {}, headers = nil, body = nil)
|
65
66
|
handler = get_handler(headers)
|
66
67
|
|
67
|
-
|
68
|
+
info_request("OPTIONS", url, params, headers, body)
|
68
69
|
|
69
70
|
handler.options(url, params)
|
70
71
|
@last_response = handler.last_response
|
71
72
|
|
72
|
-
|
73
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
73
|
+
debug_response(@last_response)
|
74
74
|
|
75
75
|
@last_response
|
76
76
|
end
|
@@ -79,13 +79,12 @@ module Webspicy
|
|
79
79
|
handler = get_handler(headers)
|
80
80
|
|
81
81
|
params = Hash[params.map{|k,v| [k, v.nil? ? "" : v] }]
|
82
|
-
|
82
|
+
info_request("GET", url, params, headers, body)
|
83
83
|
|
84
84
|
handler.get(url, params)
|
85
85
|
@last_response = handler.last_response
|
86
86
|
|
87
|
-
|
88
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
87
|
+
debug_response(@last_response)
|
89
88
|
|
90
89
|
@last_response
|
91
90
|
end
|
@@ -97,20 +96,19 @@ module Webspicy
|
|
97
96
|
|
98
97
|
case body
|
99
98
|
when NilClass
|
100
|
-
|
99
|
+
info_request("POST", url, params, headers, body)
|
101
100
|
handler.post(url, params.to_json, {"CONTENT_TYPE" => "application/json"})
|
102
101
|
when FileUpload
|
103
102
|
file = Rack::Test::UploadedFile.new(body.path, body.content_type)
|
104
|
-
|
103
|
+
info_request("POST", url, params, headers, body)
|
105
104
|
handler.post(url, body.param_name.to_sym => file)
|
106
105
|
else
|
107
|
-
|
106
|
+
info_request("POST", url, params, headers, body)
|
108
107
|
handler.post(url, body)
|
109
108
|
end
|
110
109
|
@last_response = handler.last_response
|
111
110
|
|
112
|
-
|
113
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
111
|
+
debug_response(@last_response)
|
114
112
|
|
115
113
|
@last_response
|
116
114
|
end
|
@@ -118,13 +116,12 @@ module Webspicy
|
|
118
116
|
def patch(url, params = {}, headers = nil, body = nil)
|
119
117
|
handler = get_handler(headers)
|
120
118
|
|
121
|
-
|
119
|
+
info_request("PATCH", url, params, headers, body)
|
122
120
|
|
123
121
|
handler.patch(url, params.to_json, {"CONTENT_TYPE" => "application/json"})
|
124
122
|
@last_response = handler.last_response
|
125
123
|
|
126
|
-
|
127
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
124
|
+
debug_response(@last_response)
|
128
125
|
|
129
126
|
@last_response
|
130
127
|
end
|
@@ -132,13 +129,12 @@ module Webspicy
|
|
132
129
|
def post_form(url, params = {}, headers = nil, body = nil)
|
133
130
|
handler = get_handler(headers)
|
134
131
|
|
135
|
-
|
132
|
+
info_request("POST", url, params, headers, body)
|
136
133
|
|
137
134
|
handler.post(url, params)
|
138
135
|
@last_response = handler.last_response
|
139
136
|
|
140
|
-
|
141
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
137
|
+
debug_response(@last_response)
|
142
138
|
|
143
139
|
@last_response
|
144
140
|
end
|
@@ -146,13 +142,12 @@ module Webspicy
|
|
146
142
|
def delete(url, params = {}, headers = nil, body = nil)
|
147
143
|
handler = get_handler(headers)
|
148
144
|
|
149
|
-
|
145
|
+
info_request("DELETE", url, params, headers, body)
|
150
146
|
|
151
147
|
handler.delete(url, params.to_json, {"CONTENT_TYPE" => "application/json"})
|
152
148
|
@last_response = handler.last_response
|
153
149
|
|
154
|
-
|
155
|
-
Webspicy.debug("Response (#{@last_response.status}): #{@last_response.body}")
|
150
|
+
debug_response(@last_response)
|
156
151
|
|
157
152
|
@last_response
|
158
153
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Webspicy
|
2
|
+
class Client
|
3
|
+
module Support
|
4
|
+
|
5
|
+
def info_request(kind, url, params, headers, body)
|
6
|
+
Webspicy.info("#{kind} #{url}")
|
7
|
+
debug("Req params", JSON.pretty_generate(params)) if params
|
8
|
+
debug("Req headers", JSON.pretty_generate(headers)) if headers
|
9
|
+
debug("Req body", JSON.pretty_generate(body)) if body
|
10
|
+
Webspicy.debug("")
|
11
|
+
end
|
12
|
+
|
13
|
+
def debug_response(response)
|
14
|
+
debug("Res status", @last_response.status)
|
15
|
+
debug("Res headers", JSON.pretty_generate(last_response.headers.to_h))
|
16
|
+
debug("Res body", response_body_to_s(last_response))
|
17
|
+
Webspicy.debug("")
|
18
|
+
end
|
19
|
+
|
20
|
+
def debug(what, value)
|
21
|
+
Webspicy.debug(" #{what}: " + value_to_s(value))
|
22
|
+
end
|
23
|
+
|
24
|
+
def response_body_to_s(response)
|
25
|
+
case response.content_type.to_s
|
26
|
+
when /json/
|
27
|
+
JSON.pretty_generate(JSON.load(response.body))
|
28
|
+
else
|
29
|
+
response.body.to_s
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def value_to_s(value)
|
34
|
+
value.to_s.gsub(/\n/, "\n ")
|
35
|
+
end
|
36
|
+
|
37
|
+
end # module Support
|
38
|
+
end # class Client
|
39
|
+
end # module Webspicy
|
data/lib/webspicy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webspicy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0.pre.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -210,6 +210,7 @@ files:
|
|
210
210
|
- lib/webspicy/client.rb
|
211
211
|
- lib/webspicy/client/http_client.rb
|
212
212
|
- lib/webspicy/client/rack_test_client.rb
|
213
|
+
- lib/webspicy/client/support.rb
|
213
214
|
- lib/webspicy/configuration.rb
|
214
215
|
- lib/webspicy/file_upload.rb
|
215
216
|
- lib/webspicy/formaldoc.fio
|
@@ -255,12 +256,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
255
256
|
version: '0'
|
256
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
258
|
requirements:
|
258
|
-
- - "
|
259
|
+
- - ">"
|
259
260
|
- !ruby/object:Gem::Version
|
260
|
-
version:
|
261
|
+
version: 1.3.1
|
261
262
|
requirements: []
|
262
263
|
rubyforge_project:
|
263
|
-
rubygems_version: 2.6
|
264
|
+
rubygems_version: 2.7.6
|
264
265
|
signing_key:
|
265
266
|
specification_version: 4
|
266
267
|
summary: Webspicy helps testing web services as software operation black boxes!
|