webspicy 0.20.4 → 0.20.9
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/bin/webspicy +2 -2
- data/lib/finitio/webspicy/shared.fio +10 -0
- data/lib/webspicy.rb +22 -53
- data/lib/webspicy/configuration.rb +3 -1
- data/lib/webspicy/configuration/scope.rb +2 -2
- data/lib/webspicy/configuration/single_url.rb +35 -25
- data/lib/webspicy/configuration/single_yml_file.rb +7 -2
- data/lib/webspicy/specification.rb +5 -56
- data/lib/webspicy/specification/service.rb +1 -5
- data/lib/webspicy/specification/test_case.rb +0 -49
- data/lib/webspicy/support/colorize.rb +1 -1
- data/lib/webspicy/tester.rb +5 -3
- data/lib/webspicy/tester/fakesmtp.rb +1 -1
- data/lib/webspicy/tester/fakesmtp/email.rb +13 -0
- data/lib/webspicy/tester/file_checker.rb +1 -1
- data/lib/webspicy/tester/reporter.rb +2 -1
- data/lib/webspicy/tester/reporter/documentation.rb +11 -5
- data/lib/webspicy/tester/reporter/exceptions.rb +3 -1
- data/lib/webspicy/tester/reporter/junit_xml_file.rb +151 -0
- data/lib/webspicy/tester/reporter/progress.rb +1 -1
- data/lib/webspicy/tester/reporter/success_or_not.rb +14 -0
- data/lib/webspicy/tester/reporter/summary.rb +6 -2
- data/lib/webspicy/tester/result.rb +1 -0
- data/lib/webspicy/version.rb +1 -1
- data/lib/webspicy/web.rb +46 -0
- data/lib/webspicy/{formaldoc.fio → web/formaldoc.fio} +5 -13
- data/lib/webspicy/web/specification.rb +68 -0
- data/lib/webspicy/web/specification/file_upload.rb +39 -0
- data/lib/webspicy/web/specification/service.rb +13 -0
- data/lib/webspicy/web/specification/test_case.rb +58 -0
- data/spec/unit/configuration/scope/test_expand_example.rb +11 -5
- data/spec/unit/specification/pre/test_global_request_headers.rb +3 -3
- data/spec/unit/specification/service/test_dress_params.rb +2 -2
- data/spec/unit/test_configuration.rb +1 -0
- data/spec/unit/tester/fakesmtp/test_email.rb +93 -0
- data/spec/unit/web/specification/test_instantiate_url.rb +36 -0
- data/spec/unit/web/specification/test_url_placeholders.rb +23 -0
- data/tasks/test.rake +5 -1
- metadata +40 -23
- data/lib/webspicy/specification/file_upload.rb +0 -37
- data/lib/webspicy/tester/reporter/error_count.rb +0 -29
- data/spec/blackbox/commandline.yml +0 -24
- data/spec/blackbox/fixtures/passing/config.rb +0 -9
- data/spec/blackbox/fixtures/passing/formaldef/get.yml +0 -30
- data/spec/unit/specification/test_instantiate_url.rb +0 -34
- data/spec/unit/specification/test_url_placeholders.rb +0 -21
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.20.
|
4
|
+
version: 0.20.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -126,22 +126,22 @@ dependencies:
|
|
126
126
|
name: rack-robustness
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.1'
|
132
129
|
- - ">="
|
133
130
|
- !ruby/object:Gem::Version
|
134
131
|
version: 1.1.0
|
132
|
+
- - "~>"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '1.1'
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '1.1'
|
142
139
|
- - ">="
|
143
140
|
- !ruby/object:Gem::Version
|
144
141
|
version: 1.1.0
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '1.1'
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: mustermann
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,19 +171,19 @@ dependencies:
|
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
174
|
+
name: paint
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
179
|
+
version: '2.2'
|
180
180
|
type: :runtime
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
186
|
+
version: '2.2'
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: openapi3_parser
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,6 +198,20 @@ dependencies:
|
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
200
|
version: 0.8.2
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: mustache
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '1.0'
|
208
|
+
type: :runtime
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '1.0'
|
201
215
|
description: Webspicy helps testing web services as software operation black boxes
|
202
216
|
email: blambeau@gmail.com
|
203
217
|
executables:
|
@@ -214,16 +228,15 @@ files:
|
|
214
228
|
- doc/3-specification-importance.md
|
215
229
|
- doc/4-sequence-diagram.md
|
216
230
|
- lib/finitio/webspicy/scalars.fio
|
231
|
+
- lib/finitio/webspicy/shared.fio
|
217
232
|
- lib/webspicy.rb
|
218
233
|
- lib/webspicy/configuration.rb
|
219
234
|
- lib/webspicy/configuration/scope.rb
|
220
235
|
- lib/webspicy/configuration/single_url.rb
|
221
236
|
- lib/webspicy/configuration/single_yml_file.rb
|
222
|
-
- lib/webspicy/formaldoc.fio
|
223
237
|
- lib/webspicy/specification.rb
|
224
238
|
- lib/webspicy/specification/condition.rb
|
225
239
|
- lib/webspicy/specification/err.rb
|
226
|
-
- lib/webspicy/specification/file_upload.rb
|
227
240
|
- lib/webspicy/specification/oldies.rb
|
228
241
|
- lib/webspicy/specification/oldies/bridge.rb
|
229
242
|
- lib/webspicy/specification/oldies/errcondition.rb
|
@@ -257,11 +270,12 @@ files:
|
|
257
270
|
- lib/webspicy/tester/reporter.rb
|
258
271
|
- lib/webspicy/tester/reporter/composite.rb
|
259
272
|
- lib/webspicy/tester/reporter/documentation.rb
|
260
|
-
- lib/webspicy/tester/reporter/error_count.rb
|
261
273
|
- lib/webspicy/tester/reporter/exceptions.rb
|
262
274
|
- lib/webspicy/tester/reporter/file_progress.rb
|
263
275
|
- lib/webspicy/tester/reporter/file_summary.rb
|
276
|
+
- lib/webspicy/tester/reporter/junit_xml_file.rb
|
264
277
|
- lib/webspicy/tester/reporter/progress.rb
|
278
|
+
- lib/webspicy/tester/reporter/success_or_not.rb
|
265
279
|
- lib/webspicy/tester/reporter/summary.rb
|
266
280
|
- lib/webspicy/tester/result.rb
|
267
281
|
- lib/webspicy/tester/result/assert_met.rb
|
@@ -279,14 +293,16 @@ files:
|
|
279
293
|
- lib/webspicy/web/client/http_client.rb
|
280
294
|
- lib/webspicy/web/client/rack_test_client.rb
|
281
295
|
- lib/webspicy/web/client/support.rb
|
296
|
+
- lib/webspicy/web/formaldoc.fio
|
282
297
|
- lib/webspicy/web/invocation.rb
|
283
298
|
- lib/webspicy/web/mocker.rb
|
284
299
|
- lib/webspicy/web/mocker/config.ru
|
285
300
|
- lib/webspicy/web/openapi.rb
|
286
301
|
- lib/webspicy/web/openapi/generator.rb
|
287
|
-
-
|
288
|
-
-
|
289
|
-
-
|
302
|
+
- lib/webspicy/web/specification.rb
|
303
|
+
- lib/webspicy/web/specification/file_upload.rb
|
304
|
+
- lib/webspicy/web/specification/service.rb
|
305
|
+
- lib/webspicy/web/specification/test_case.rb
|
290
306
|
- spec/spec_helper.rb
|
291
307
|
- spec/unit/configuration/config.rb
|
292
308
|
- spec/unit/configuration/scope/test_each_service.rb
|
@@ -297,8 +313,6 @@ files:
|
|
297
313
|
- spec/unit/specification/service/test_dress_params.rb
|
298
314
|
- spec/unit/specification/test_case/test_mutate.rb
|
299
315
|
- spec/unit/specification/test_condition.rb
|
300
|
-
- spec/unit/specification/test_instantiate_url.rb
|
301
|
-
- spec/unit/specification/test_url_placeholders.rb
|
302
316
|
- spec/unit/support/hooks/test_fire_after_each.rb
|
303
317
|
- spec/unit/support/hooks/test_fire_around.rb
|
304
318
|
- spec/unit/support/hooks/test_fire_before_each.rb
|
@@ -310,17 +324,20 @@ files:
|
|
310
324
|
- spec/unit/support/world/test_world.rb
|
311
325
|
- spec/unit/test_configuration.rb
|
312
326
|
- spec/unit/tester/fakeses/test_email.rb
|
327
|
+
- spec/unit/tester/fakesmtp/test_email.rb
|
313
328
|
- spec/unit/tester/test_asserter.rb
|
314
329
|
- spec/unit/tester/test_assertions.rb
|
315
330
|
- spec/unit/web/mocker/test_mocker.rb
|
316
331
|
- spec/unit/web/openapi/test_generator.rb
|
332
|
+
- spec/unit/web/specification/test_instantiate_url.rb
|
333
|
+
- spec/unit/web/specification/test_url_placeholders.rb
|
317
334
|
- tasks/gem.rake
|
318
335
|
- tasks/test.rake
|
319
336
|
homepage: http://github.com/enspirit/webspicy
|
320
337
|
licenses:
|
321
338
|
- MIT
|
322
339
|
metadata: {}
|
323
|
-
post_install_message:
|
340
|
+
post_install_message:
|
324
341
|
rdoc_options: []
|
325
342
|
require_paths:
|
326
343
|
- lib
|
@@ -335,8 +352,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
335
352
|
- !ruby/object:Gem::Version
|
336
353
|
version: '0'
|
337
354
|
requirements: []
|
338
|
-
rubygems_version: 3.
|
339
|
-
signing_key:
|
355
|
+
rubygems_version: 3.0.8
|
356
|
+
signing_key:
|
340
357
|
specification_version: 4
|
341
358
|
summary: Webspicy helps testing web services as software operation black boxes!
|
342
359
|
test_files: []
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Webspicy
|
2
|
-
class Specification
|
3
|
-
class FileUpload
|
4
|
-
|
5
|
-
def initialize(raw)
|
6
|
-
@path = raw[:path]
|
7
|
-
@content_type = raw[:content_type]
|
8
|
-
@param_name = raw[:param_name] || "file"
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_reader :path, :content_type, :param_name
|
12
|
-
|
13
|
-
def self.info(raw)
|
14
|
-
new(raw)
|
15
|
-
end
|
16
|
-
|
17
|
-
def locate(specification)
|
18
|
-
FileUpload.new({
|
19
|
-
path: specification.locate(path),
|
20
|
-
content_type: content_type
|
21
|
-
})
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_info
|
25
|
-
{ path: path.to_s,
|
26
|
-
content_type: content_type,
|
27
|
-
param_name: param_name }
|
28
|
-
end
|
29
|
-
|
30
|
-
def to_s
|
31
|
-
"FileUpload(#{to_info})"
|
32
|
-
end
|
33
|
-
alias :inspect :to_s
|
34
|
-
|
35
|
-
end # class FileUpload
|
36
|
-
end # class Specification
|
37
|
-
end # module Webspicy
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Webspicy
|
2
|
-
class Tester
|
3
|
-
class Reporter
|
4
|
-
class ErrorCount < Reporter
|
5
|
-
|
6
|
-
def initialize(*args, &bl)
|
7
|
-
super
|
8
|
-
@errors = Hash.new{|h,k| 0 }
|
9
|
-
end
|
10
|
-
attr_reader :errors
|
11
|
-
|
12
|
-
[
|
13
|
-
:spec_file_error,
|
14
|
-
:check_error,
|
15
|
-
:check_failure
|
16
|
-
].each do |meth|
|
17
|
-
define_method(meth) do |*args, &bl|
|
18
|
-
@errors[meth] += 1
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def report
|
23
|
-
@errors.values.inject(0){|memo,x| memo+x }
|
24
|
-
end
|
25
|
-
|
26
|
-
end # class ErrorCount
|
27
|
-
end # class Reporter
|
28
|
-
end # class Tester
|
29
|
-
end # module Webspicy
|
@@ -1,24 +0,0 @@
|
|
1
|
-
---
|
2
|
-
command:
|
3
|
-
webspicy {options} {args}
|
4
|
-
|
5
|
-
examples:
|
6
|
-
|
7
|
-
- description: |-
|
8
|
-
when called on a passing path
|
9
|
-
args:
|
10
|
-
- ./fixtures/passing/config.rb
|
11
|
-
assert:
|
12
|
-
exit_code:
|
13
|
-
0
|
14
|
-
stdout: |-
|
15
|
-
GET /, when requested
|
16
|
-
v It has a 200 response status
|
17
|
-
v It has a `Content-Type: application/json` response header
|
18
|
-
v Its output meets the expected data schema
|
19
|
-
v Assert notEmpty
|
20
|
-
v Assert pathFD('', :hello => "World" )
|
21
|
-
|
22
|
-
|
23
|
-
1 spec file, 1 example, 0 counterexample
|
24
|
-
5 assertions, 0 error, 0 failure
|
@@ -1,30 +0,0 @@
|
|
1
|
-
---
|
2
|
-
url: |-
|
3
|
-
/
|
4
|
-
|
5
|
-
method: |-
|
6
|
-
GET
|
7
|
-
|
8
|
-
description: |-
|
9
|
-
Returns hello world
|
10
|
-
|
11
|
-
input_schema: |-
|
12
|
-
{ }
|
13
|
-
|
14
|
-
output_schema: |-
|
15
|
-
{ hello: String }
|
16
|
-
|
17
|
-
error_schema: |-
|
18
|
-
.
|
19
|
-
|
20
|
-
examples:
|
21
|
-
|
22
|
-
- description: |-
|
23
|
-
when requested
|
24
|
-
params: {}
|
25
|
-
expected:
|
26
|
-
content_type: application/json
|
27
|
-
status: 200
|
28
|
-
assert:
|
29
|
-
- notEmpty
|
30
|
-
- pathFD('', :hello => "World" )
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
module Webspicy
|
3
|
-
describe Specification, "instantiate_url" do
|
4
|
-
|
5
|
-
it 'does nothing when the url has no placeholder' do
|
6
|
-
r = Specification.new(url: "/test/a/url")
|
7
|
-
url, params = r.instantiate_url(foo: "bar")
|
8
|
-
expect(url).to eq("/test/a/url")
|
9
|
-
expect(params).to eq(foo: "bar")
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'instantiates placeholders and strips corresponding params' do
|
13
|
-
r = Specification.new(url: "/test/{foo}/url")
|
14
|
-
url, params = r.instantiate_url(foo: "bar", baz: "coz")
|
15
|
-
expect(url).to eq("/test/bar/url")
|
16
|
-
expect(params).to eq(baz: "coz")
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'instantiates placeholders and strips corresponding params even when multiple' do
|
20
|
-
r = Specification.new(url: "/test/{foo}/url/{bar}")
|
21
|
-
url, params = r.instantiate_url(foo: "bar", bar: "baz", baz: "coz")
|
22
|
-
expect(url).to eq("/test/bar/url/baz")
|
23
|
-
expect(params).to eq(baz: "coz")
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'supports placeholders corresponding to subentities' do
|
27
|
-
r = Specification.new(url: "/test/{foo.id}/url")
|
28
|
-
url, params = r.instantiate_url(foo: {id: "bar"}, baz: "coz")
|
29
|
-
expect(url).to eq("/test/bar/url")
|
30
|
-
expect(params).to eq(foo: {}, baz: "coz")
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
module Webspicy
|
3
|
-
describe Specification, "url_placeholders" do
|
4
|
-
|
5
|
-
it 'returns an empty array on none' do
|
6
|
-
r = Specification.new(url: "/test/a/url")
|
7
|
-
expect(r.url_placeholders).to eq([])
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'returns all placeholders' do
|
11
|
-
r = Specification.new(url: "/test/{foo}/url/{bar}")
|
12
|
-
expect(r.url_placeholders).to eq(["foo", "bar"])
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'returns all placeholders expr' do
|
16
|
-
r = Specification.new(url: "/test/{foo.id}/url/{bar}")
|
17
|
-
expect(r.url_placeholders).to eq(["foo.id", "bar"])
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|