webspicy 0.19.0 → 0.20.4
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 +1 -2
- data/lib/webspicy.rb +0 -2
- data/lib/webspicy/configuration.rb +15 -0
- data/lib/webspicy/configuration/scope.rb +1 -0
- data/lib/webspicy/specification.rb +4 -3
- data/lib/webspicy/specification/condition.rb +29 -4
- data/lib/webspicy/specification/err.rb +18 -0
- data/lib/webspicy/specification/oldies.rb +4 -0
- data/lib/webspicy/specification/oldies/bridge.rb +32 -0
- data/lib/webspicy/specification/{errcondition.rb → oldies/errcondition.rb} +5 -0
- data/lib/webspicy/specification/{postcondition.rb → oldies/postcondition.rb} +5 -0
- data/lib/webspicy/specification/{precondition.rb → oldies/precondition.rb} +5 -2
- data/lib/webspicy/specification/post.rb +20 -0
- data/lib/webspicy/specification/post/missing_condition_impl.rb +15 -0
- data/lib/webspicy/specification/post/unexpected_condition_impl.rb +15 -0
- data/lib/webspicy/specification/pre.rb +19 -0
- data/lib/webspicy/specification/{precondition → pre}/global_request_headers.rb +4 -4
- data/lib/webspicy/specification/{precondition → pre}/robust_to_invalid_input.rb +4 -4
- data/lib/webspicy/specification/service.rb +29 -5
- data/lib/webspicy/specification/test_case.rb +3 -0
- data/lib/webspicy/support.rb +12 -2
- data/lib/webspicy/support/colorize.rb +6 -0
- data/lib/webspicy/tester.rb +89 -27
- data/lib/webspicy/tester/assertions.rb +2 -2
- data/lib/webspicy/tester/client.rb +0 -26
- data/lib/webspicy/tester/fakeses.rb +41 -0
- data/lib/webspicy/tester/fakeses/email.rb +38 -0
- data/lib/webspicy/tester/fakesmtp.rb +39 -0
- data/lib/webspicy/tester/fakesmtp/email.rb +27 -0
- data/lib/webspicy/tester/reporter.rb +5 -0
- data/lib/webspicy/tester/reporter/documentation.rb +31 -8
- data/lib/webspicy/tester/reporter/error_count.rb +11 -7
- data/lib/webspicy/tester/reporter/exceptions.rb +2 -0
- data/lib/webspicy/tester/reporter/file_progress.rb +5 -2
- data/lib/webspicy/tester/reporter/file_summary.rb +3 -2
- data/lib/webspicy/tester/reporter/progress.rb +6 -4
- data/lib/webspicy/tester/reporter/summary.rb +9 -7
- data/lib/webspicy/tester/result.rb +16 -13
- data/lib/webspicy/tester/result/errcondition_met.rb +1 -3
- data/lib/webspicy/tester/result/error_schema_met.rb +1 -0
- data/lib/webspicy/tester/result/invocation_succeeded.rb +13 -0
- data/lib/webspicy/tester/result/output_schema_met.rb +1 -0
- data/lib/webspicy/tester/result/postcondition_met.rb +1 -3
- data/lib/webspicy/version.rb +2 -2
- data/lib/webspicy/web/invocation.rb +7 -3
- data/spec/blackbox/commandline.yml +24 -0
- data/spec/blackbox/fixtures/passing/config.rb +9 -0
- data/spec/blackbox/fixtures/passing/formaldef/get.yml +30 -0
- data/spec/unit/specification/{precondition → pre}/test_global_request_headers.rb +9 -4
- data/spec/unit/specification/test_condition.rb +18 -0
- data/spec/unit/tester/fakeses/test_email.rb +40 -0
- data/tasks/test.rake +2 -1
- metadata +34 -18
@@ -0,0 +1,30 @@
|
|
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" )
|
@@ -2,16 +2,21 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Webspicy
|
4
4
|
class Specification
|
5
|
-
module
|
5
|
+
module Pre
|
6
6
|
describe GlobalRequestHeaders do
|
7
7
|
let(:gbr){
|
8
8
|
GlobalRequestHeaders.new('Accept' => 'application/json')
|
9
9
|
}
|
10
10
|
|
11
|
+
def instrument(tc)
|
12
|
+
t = OpenStruct.new(test_case: tc)
|
13
|
+
gbr.bind(t).instrument
|
14
|
+
end
|
15
|
+
|
11
16
|
describe "instrument" do
|
12
17
|
it 'injects the headers' do
|
13
18
|
tc = TestCase.new({})
|
14
|
-
|
19
|
+
instrument(tc)
|
15
20
|
expect(tc.headers['Accept']).to eql("application/json")
|
16
21
|
end
|
17
22
|
|
@@ -21,7 +26,7 @@ module Webspicy
|
|
21
26
|
'Content-Type' => 'text/plain'
|
22
27
|
}
|
23
28
|
})
|
24
|
-
|
29
|
+
instrument(tc)
|
25
30
|
expect(tc.headers['Content-Type']).to eql("text/plain")
|
26
31
|
expect(tc.headers['Accept']).to eql("application/json")
|
27
32
|
end
|
@@ -32,7 +37,7 @@ module Webspicy
|
|
32
37
|
'Accept' => 'text/plain'
|
33
38
|
}
|
34
39
|
})
|
35
|
-
|
40
|
+
instrument(tc)
|
36
41
|
expect(tc.headers['Accept']).to eql("text/plain")
|
37
42
|
end
|
38
43
|
end
|
@@ -15,6 +15,24 @@ module Webspicy
|
|
15
15
|
expect(x).to eql(nil)
|
16
16
|
end
|
17
17
|
|
18
|
+
it 'supports the block raising a Failure' do
|
19
|
+
expect {
|
20
|
+
sooner_or_later(max: 2){
|
21
|
+
raise Tester::Failure
|
22
|
+
}
|
23
|
+
}.to raise_error(Tester::Failure)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'catches Failure occuring before successes' do
|
27
|
+
seen = 0
|
28
|
+
x = sooner_or_later(max: 2){
|
29
|
+
seen += 1
|
30
|
+
raise Tester::Failure if seen == 1
|
31
|
+
12
|
32
|
+
}
|
33
|
+
expect(x).to eql(12)
|
34
|
+
end
|
35
|
+
|
18
36
|
it 'can raise for us' do
|
19
37
|
expect{
|
20
38
|
sooner_or_later(max: 1, raise: true){ nil }
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'webspicy/tester/fakeses'
|
3
|
+
module Webspicy
|
4
|
+
class Tester
|
5
|
+
class Fakeses
|
6
|
+
describe Email do
|
7
|
+
|
8
|
+
DATA = Base64.encode64 <<~J
|
9
|
+
From: Webspicy <noreply@webspicy.io>
|
10
|
+
To: someone@world.com
|
11
|
+
Subject: Hey world, hello!
|
12
|
+
J
|
13
|
+
|
14
|
+
DATA = JSON.parse <<~J
|
15
|
+
{
|
16
|
+
"id": "1782605f-da34-9c02-6a38-d7e101029cbf",
|
17
|
+
"body": {
|
18
|
+
"Source": "noreply@webspicy.io",
|
19
|
+
"Destinations.member.1": "someone@world.com",
|
20
|
+
"RawMessage.Data": "#{DATA.gsub /\n/, ''}",
|
21
|
+
"Action": "SendRawEmail",
|
22
|
+
"Version": "2010-12-01"
|
23
|
+
}
|
24
|
+
}
|
25
|
+
J
|
26
|
+
|
27
|
+
subject{
|
28
|
+
Email.new(DATA)
|
29
|
+
}
|
30
|
+
|
31
|
+
it 'works as expected' do
|
32
|
+
expect(subject.from).to eql("noreply@webspicy.io")
|
33
|
+
expect(subject.to).to eql(["someone@world.com"])
|
34
|
+
expect(subject.subject).to eql("Hey world, hello!")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/tasks/test.rake
CHANGED
@@ -18,7 +18,8 @@ namespace :test do
|
|
18
18
|
desc "Runs the integration tests on the #{file.basename} example"
|
19
19
|
task(test_name) do
|
20
20
|
Bundler.with_original_env do
|
21
|
-
system("cd #{file} && bundle exec rake")
|
21
|
+
x = system("cd #{file} && bundle exec rake")
|
22
|
+
abort("Example test suite failed: #{file}") unless x
|
22
23
|
end
|
23
24
|
end
|
24
25
|
tests << test_name
|
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.20.4
|
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-03-
|
11
|
+
date: 2021-03-13 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.0
|
132
129
|
- - "~>"
|
133
130
|
- !ruby/object:Gem::Version
|
134
131
|
version: '1.1'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 1.1.0
|
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.0
|
142
139
|
- - "~>"
|
143
140
|
- !ruby/object:Gem::Version
|
144
141
|
version: '1.1'
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 1.1.0
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: mustermann
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,12 +222,19 @@ files:
|
|
222
222
|
- lib/webspicy/formaldoc.fio
|
223
223
|
- lib/webspicy/specification.rb
|
224
224
|
- lib/webspicy/specification/condition.rb
|
225
|
-
- lib/webspicy/specification/
|
225
|
+
- lib/webspicy/specification/err.rb
|
226
226
|
- lib/webspicy/specification/file_upload.rb
|
227
|
-
- lib/webspicy/specification/
|
228
|
-
- lib/webspicy/specification/
|
229
|
-
- lib/webspicy/specification/
|
230
|
-
- lib/webspicy/specification/
|
227
|
+
- lib/webspicy/specification/oldies.rb
|
228
|
+
- lib/webspicy/specification/oldies/bridge.rb
|
229
|
+
- lib/webspicy/specification/oldies/errcondition.rb
|
230
|
+
- lib/webspicy/specification/oldies/postcondition.rb
|
231
|
+
- lib/webspicy/specification/oldies/precondition.rb
|
232
|
+
- lib/webspicy/specification/post.rb
|
233
|
+
- lib/webspicy/specification/post/missing_condition_impl.rb
|
234
|
+
- lib/webspicy/specification/post/unexpected_condition_impl.rb
|
235
|
+
- lib/webspicy/specification/pre.rb
|
236
|
+
- lib/webspicy/specification/pre/global_request_headers.rb
|
237
|
+
- lib/webspicy/specification/pre/robust_to_invalid_input.rb
|
231
238
|
- lib/webspicy/specification/service.rb
|
232
239
|
- lib/webspicy/specification/test_case.rb
|
233
240
|
- lib/webspicy/support.rb
|
@@ -241,6 +248,10 @@ files:
|
|
241
248
|
- lib/webspicy/tester/assertions.rb
|
242
249
|
- lib/webspicy/tester/client.rb
|
243
250
|
- lib/webspicy/tester/failure.rb
|
251
|
+
- lib/webspicy/tester/fakeses.rb
|
252
|
+
- lib/webspicy/tester/fakeses/email.rb
|
253
|
+
- lib/webspicy/tester/fakesmtp.rb
|
254
|
+
- lib/webspicy/tester/fakesmtp/email.rb
|
244
255
|
- lib/webspicy/tester/file_checker.rb
|
245
256
|
- lib/webspicy/tester/invocation.rb
|
246
257
|
- lib/webspicy/tester/reporter.rb
|
@@ -257,6 +268,7 @@ files:
|
|
257
268
|
- lib/webspicy/tester/result/check.rb
|
258
269
|
- lib/webspicy/tester/result/errcondition_met.rb
|
259
270
|
- lib/webspicy/tester/result/error_schema_met.rb
|
271
|
+
- lib/webspicy/tester/result/invocation_succeeded.rb
|
260
272
|
- lib/webspicy/tester/result/output_schema_met.rb
|
261
273
|
- lib/webspicy/tester/result/postcondition_met.rb
|
262
274
|
- lib/webspicy/tester/result/response_header_met.rb
|
@@ -272,13 +284,16 @@ files:
|
|
272
284
|
- lib/webspicy/web/mocker/config.ru
|
273
285
|
- lib/webspicy/web/openapi.rb
|
274
286
|
- lib/webspicy/web/openapi/generator.rb
|
287
|
+
- spec/blackbox/commandline.yml
|
288
|
+
- spec/blackbox/fixtures/passing/config.rb
|
289
|
+
- spec/blackbox/fixtures/passing/formaldef/get.yml
|
275
290
|
- spec/spec_helper.rb
|
276
291
|
- spec/unit/configuration/config.rb
|
277
292
|
- spec/unit/configuration/scope/test_each_service.rb
|
278
293
|
- spec/unit/configuration/scope/test_each_specification.rb
|
279
294
|
- spec/unit/configuration/scope/test_expand_example.rb
|
280
295
|
- spec/unit/configuration/scope/test_to_real_url.rb
|
281
|
-
- spec/unit/specification/
|
296
|
+
- spec/unit/specification/pre/test_global_request_headers.rb
|
282
297
|
- spec/unit/specification/service/test_dress_params.rb
|
283
298
|
- spec/unit/specification/test_case/test_mutate.rb
|
284
299
|
- spec/unit/specification/test_condition.rb
|
@@ -294,6 +309,7 @@ files:
|
|
294
309
|
- spec/unit/support/world/fixtures/yaml.yml
|
295
310
|
- spec/unit/support/world/test_world.rb
|
296
311
|
- spec/unit/test_configuration.rb
|
312
|
+
- spec/unit/tester/fakeses/test_email.rb
|
297
313
|
- spec/unit/tester/test_asserter.rb
|
298
314
|
- spec/unit/tester/test_assertions.rb
|
299
315
|
- spec/unit/web/mocker/test_mocker.rb
|
@@ -304,7 +320,7 @@ homepage: http://github.com/enspirit/webspicy
|
|
304
320
|
licenses:
|
305
321
|
- MIT
|
306
322
|
metadata: {}
|
307
|
-
post_install_message:
|
323
|
+
post_install_message:
|
308
324
|
rdoc_options: []
|
309
325
|
require_paths:
|
310
326
|
- lib
|
@@ -319,8 +335,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
319
335
|
- !ruby/object:Gem::Version
|
320
336
|
version: '0'
|
321
337
|
requirements: []
|
322
|
-
rubygems_version: 3.
|
323
|
-
signing_key:
|
338
|
+
rubygems_version: 3.1.4
|
339
|
+
signing_key:
|
324
340
|
specification_version: 4
|
325
341
|
summary: Webspicy helps testing web services as software operation black boxes!
|
326
342
|
test_files: []
|