soaspec 0.1.16 → 0.1.17
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/ChangeLog +6 -0
- data/lib/soaspec.rb +1 -0
- data/lib/soaspec/exchange.rb +8 -0
- data/lib/soaspec/exchange_handlers/rest_handler.rb +9 -1
- data/lib/soaspec/version.rb +1 -1
- data/lib/soaspec/wait.rb +44 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f25cdd5470680bb035c2296f5b29dba6afe1aef
|
4
|
+
data.tar.gz: 7a0b0c4c47d201e2025e8bd702ef208c701c410b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f843a8d1775bf6149e398008197225ada75c282693f543ec819ca3cab14d4267316a930256523686bfbef2470d723d0cfc1b45a278e46ded94b07ef5778051a
|
7
|
+
data.tar.gz: 03b8333eddee14dcd7d65415bf390c571fe2079c4f77ec410385d5fde7b101e7dd65cc69309661a67df0ccfbfca413df5729b86fe697b2a8ec1499df62509361
|
data/ChangeLog
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
Version 0.1.17
|
2
|
+
* Enhancements
|
3
|
+
* Added Wait class to easily wait for an expected condition to be true, either using global Soaspec::Wait or `exchange.until { true }`
|
4
|
+
See spec/unit/wait_spec for example
|
5
|
+
* Made shorter way to `get` a REST url with `RestHandler.get 'id'` setting the suburl to 'id' automatically
|
6
|
+
|
1
7
|
Version 0.1.16
|
2
8
|
* Bug fix
|
3
9
|
* Retry was not working for OAuth access_token
|
data/lib/soaspec.rb
CHANGED
data/lib/soaspec/exchange.rb
CHANGED
@@ -235,8 +235,16 @@ class Exchange
|
|
235
235
|
self
|
236
236
|
end
|
237
237
|
|
238
|
+
# @return [Hash] Hash representing the response of the API
|
238
239
|
def to_hash
|
239
240
|
exchange_handler.to_hash(response)
|
240
241
|
end
|
241
242
|
|
243
|
+
# Wait until the passed block returns true
|
244
|
+
def until(&script)
|
245
|
+
Soaspec::Wait.until do
|
246
|
+
@response = nil # Reset response so it can be made repeatedly
|
247
|
+
instance_eval(&script)
|
248
|
+
end
|
249
|
+
end
|
242
250
|
end
|
@@ -278,9 +278,17 @@ module Soaspec
|
|
278
278
|
|
279
279
|
methods.each do |rest_method|
|
280
280
|
# Make REST Exchange within this Handler context
|
281
|
-
# @param [Hash] params Exchange parameters
|
281
|
+
# @param [Hash, String] params Exchange parameters. If String is used it will be for suburl
|
282
282
|
# @return [Exchange] Instance of Exchange class. Assertions are made by default on the response body
|
283
283
|
define_method(rest_method) do |params = {}|
|
284
|
+
unless params.is_a? Hash
|
285
|
+
params = case rest_method
|
286
|
+
when 'get', 'delete'
|
287
|
+
{ suburl: params.to_s }
|
288
|
+
else
|
289
|
+
params
|
290
|
+
end
|
291
|
+
end
|
284
292
|
params[:name] ||= rest_method
|
285
293
|
exchange_params = { name: params[:name] }
|
286
294
|
if params[:template_name]
|
data/lib/soaspec/version.rb
CHANGED
data/lib/soaspec/wait.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Soaspec
|
2
|
+
class TimeOutError < StandardError; end
|
3
|
+
# Class to enable waiting for an expected condition to return true
|
4
|
+
class Wait
|
5
|
+
DEFAULT_TIMEOUT = 5
|
6
|
+
DEFAULT_INTERVAL = 0.2
|
7
|
+
|
8
|
+
#
|
9
|
+
# Wait until the given block returns a true value.
|
10
|
+
#
|
11
|
+
# @param [Hash] opts Options for this instance
|
12
|
+
# @option opts [Numeric] :timeout (5) Seconds to wait before timing out.
|
13
|
+
# @option opts [Numeric] :interval (0.2) Seconds to sleep between polls.
|
14
|
+
# @option opts [String] :message Exception mesage if timed out.
|
15
|
+
# @option opts [Array, Exception] :ignore Exceptions to ignore while polling (default: Error::NoSuchElementError)
|
16
|
+
# @raise [Error::TimeOutError]
|
17
|
+
# @return [Object] the result of the block
|
18
|
+
#
|
19
|
+
def self.until(opts = {})
|
20
|
+
timeout = opts.fetch(:timeout, DEFAULT_TIMEOUT)
|
21
|
+
ignored = Array(opts[:ignore] || NoElementAtPath)
|
22
|
+
end_time = Time.now + timeout
|
23
|
+
last_error = nil
|
24
|
+
|
25
|
+
until Time.now > end_time
|
26
|
+
begin
|
27
|
+
result = yield
|
28
|
+
return result if result
|
29
|
+
rescue *ignored => last_error
|
30
|
+
# swallowed
|
31
|
+
end
|
32
|
+
sleep opts.fetch(:interval, DEFAULT_INTERVAL)
|
33
|
+
end
|
34
|
+
|
35
|
+
msg = if opts[:message]
|
36
|
+
opts[:message].dup
|
37
|
+
else
|
38
|
+
"timed out after #{timeout} seconds"
|
39
|
+
end
|
40
|
+
msg << " (#{last_error.message})" if last_error
|
41
|
+
raise Soaspec::TimeOutError, msg
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soaspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SamuelGarrattIQA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -400,6 +400,7 @@ files:
|
|
400
400
|
- lib/soaspec/test_server/test_namespace.rb
|
401
401
|
- lib/soaspec/version.rb
|
402
402
|
- lib/soaspec/virtual_server.rb
|
403
|
+
- lib/soaspec/wait.rb
|
403
404
|
- lib/soaspec/wsdl_generator.rb
|
404
405
|
- soaspec.gemspec
|
405
406
|
- templates/rest_template.json
|