soaspec 0.0.68 → 0.0.69
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 +7 -0
- data/Rakefile +1 -1
- data/exe/soaspec-virtual-server +20 -4
- data/lib/soaspec.rb +1 -0
- data/lib/soaspec/exchange_handlers/rest_handler.rb +17 -6
- data/lib/soaspec/test_server/invoices.rb +23 -0
- data/lib/soaspec/test_server/puppy_service.rb +1 -0
- data/lib/soaspec/version.rb +1 -1
- data/soaspec.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14727008606cfec7f58866ea5528db6e761927dd
|
4
|
+
data.tar.gz: 9da88c13d311e5d2f1e920fbe6c5ce219362f871
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce39bb65f5aa62ab0df66a454eaa690e85253a3974c2d9739140fbe1a67c5f8e96a473772623c8943356a0b8e9eb5a0576ae4e59edea95450140b9616bdb1458
|
7
|
+
data.tar.gz: aeab0b613c8217aa71f3a02ac459d3b3187ced396e7f6f9a03994c863edafb4a7fc7f563363c5c62a4d8065b898a1f2959e3bb34e567d4f568c15257a48bfe78
|
data/ChangeLog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
Version 0.0.69
|
2
|
+
* Enhancements
|
3
|
+
* Calculate base_url ERB at time of handler's first request (Rather than when initialised).
|
4
|
+
- Important for where base url uses ERB and so does oauth whose user may change
|
5
|
+
* Demonstrate using oauth via spec
|
6
|
+
* Demonstrate using basic auth via spec
|
7
|
+
|
1
8
|
Version 0.0.68
|
2
9
|
* Enhancements
|
3
10
|
* Use ERB to calculate base_url for dynamic bases
|
data/Rakefile
CHANGED
@@ -21,6 +21,6 @@ desc 'Start virtual web service'
|
|
21
21
|
task :start_test_server do
|
22
22
|
mkdir_p 'logs'
|
23
23
|
ENV['test_server_pid'] = Process.spawn('ruby', 'exe/soaspec-virtual-server', err: %w[logs/test_server.log w]).to_s
|
24
|
-
sleep
|
24
|
+
sleep 2 # Wait a little for virtual server to start up
|
25
25
|
puts 'Running test server at pid ' + ENV['test_server_pid']
|
26
26
|
end
|
data/exe/soaspec-virtual-server
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
6
6
|
require 'soaspec'
|
7
7
|
require 'sinatra'
|
8
|
+
require 'sinatra/basic_auth'
|
8
9
|
require 'nokogiri'
|
9
10
|
require 'erb'
|
10
11
|
require 'json'
|
@@ -27,12 +28,27 @@ get '/BLZService' do
|
|
27
28
|
[200, { 'Content-Type' => 'text/xml' }, Soaspec::TestServer::GetBank.test_wsdl]
|
28
29
|
end
|
29
30
|
|
30
|
-
|
31
|
+
# Simulate retrieving an ouath token. Passed to '/invoices'
|
32
|
+
post '/as/token.oauth2' do
|
33
|
+
[200, Soaspec::TestServer::Invoices.oauth_headers, JSON.generate(Soaspec::TestServer::Invoices.oauth_body) ] #Soaspec::TestServer::Invoices.oauth_headers, ]# JSON.generate(Soaspec::TestServer::Invoices.oauth_body)]
|
34
|
+
end
|
35
|
+
|
36
|
+
get '/invoice/:id' do |id|
|
37
|
+
JSON.generate(customer_id: id, oauth: request.env['HTTP_AUTHORIZATION'])
|
38
|
+
end
|
39
|
+
|
40
|
+
authorize do |username, password|
|
41
|
+
username == 'admin' && password == 'secret'
|
42
|
+
end
|
31
43
|
|
44
|
+
protect do
|
45
|
+
get '/basic_secrets' do
|
46
|
+
'Secret data'
|
47
|
+
end
|
32
48
|
end
|
33
49
|
|
34
50
|
# Used for testing storage of data
|
35
|
-
post '/test/
|
51
|
+
post '/test/puppy' do
|
36
52
|
request_hash = JSON.parse(request.body.string)
|
37
53
|
id = Soaspec::TestServer::PuppyService.new_id
|
38
54
|
Soaspec::TestServer::PuppyService.data[id][:Name] = request_hash['Name']
|
@@ -42,12 +58,12 @@ post '/test/name' do
|
|
42
58
|
end
|
43
59
|
|
44
60
|
# Used for testing retrieving storage of data
|
45
|
-
get '/test/
|
61
|
+
get '/test/puppy/:id' do |id|
|
46
62
|
result = Soaspec::TestServer::PuppyService.data[id.to_i]
|
47
63
|
JSON.generate result
|
48
64
|
end
|
49
65
|
|
50
|
-
patch '/test/
|
66
|
+
patch '/test/puppy/:id' do |id|
|
51
67
|
request_hash = JSON.parse(request.body.string)
|
52
68
|
Soaspec::TestServer::PuppyService.data[id.to_i][:Name] = request_hash['Name']
|
53
69
|
response_hash = { result: { Status: 'updated', With: request_hash['Name'] } }
|
data/lib/soaspec.rb
CHANGED
@@ -25,6 +25,7 @@ require 'soaspec/not_found_errors'
|
|
25
25
|
require 'soaspec/test_server/get_bank'
|
26
26
|
require 'soaspec/test_server/test_attribute'
|
27
27
|
require 'soaspec/test_server/puppy_service'
|
28
|
+
require 'soaspec/test_server/invoices'
|
28
29
|
|
29
30
|
# Gem for handling SOAP and REST api tests
|
30
31
|
module Soaspec
|
@@ -50,12 +50,15 @@ module Soaspec
|
|
50
50
|
Soaspec::SpecLogger.add_to 'request_params: ' + payload.to_s
|
51
51
|
response = RestClient.post(token_url, payload, cache_control: 'no_cache', verify_ssl: false)
|
52
52
|
rescue RestClient::Exception => e
|
53
|
+
Soaspec::SpecLogger.add_to("oauth_error: #{e.message}")
|
54
|
+
Soaspec::SpecLogger.add_to("oauth_error: #{e.response}")
|
53
55
|
retry_count += 1
|
54
56
|
retry if retry_count < 3
|
55
57
|
raise e
|
56
58
|
end
|
57
59
|
Soaspec::SpecLogger.add_to("response_headers: #{response.headers}")
|
58
60
|
Soaspec::SpecLogger.add_to("response_body: #{response.body}")
|
61
|
+
Soaspec::SpecLogger.add_to("response: #{response}")
|
59
62
|
JSON.parse(response)
|
60
63
|
end
|
61
64
|
|
@@ -138,11 +141,7 @@ module Soaspec
|
|
138
141
|
end
|
139
142
|
super
|
140
143
|
set_remove_key(options, :default_hash)
|
141
|
-
|
142
|
-
merged_options[:headers] ||= {}
|
143
|
-
merged_options[:headers].merge! parse_headers
|
144
|
-
merged_options.merge!(options)
|
145
|
-
@resource = RestClient::Resource.new(ERB.new(base_url_value).result(binding), merged_options)
|
144
|
+
@init_options = options
|
146
145
|
end
|
147
146
|
|
148
147
|
# Convert snakecase to PascalCase
|
@@ -168,18 +167,30 @@ module Soaspec
|
|
168
167
|
end
|
169
168
|
end
|
170
169
|
|
170
|
+
# Initialize value of merged options
|
171
|
+
def init_merge_options
|
172
|
+
options = rest_resource_options
|
173
|
+
options[:headers] ||= {}
|
174
|
+
options[:headers].merge! parse_headers
|
175
|
+
options.merge(@init_options)
|
176
|
+
end
|
177
|
+
|
171
178
|
# Used in together with Exchange request that passes such override parameters
|
172
179
|
# @param [Hash] override_parameters Params to characterize REST request
|
173
180
|
# @param_value [params] Extra parameters (E.g. headers)
|
174
181
|
# @param_value [suburl] URL appended to base_url of class
|
175
|
-
# @param_value [method] REST method (get, post, etc)
|
182
|
+
# @param_value [method] REST method (:get, :post, etc)
|
176
183
|
def make_request(override_parameters)
|
184
|
+
@merged_options ||= init_merge_options
|
177
185
|
test_values = override_parameters
|
178
186
|
test_values[:params] ||= {}
|
179
187
|
test_values[:method] ||= :post
|
180
188
|
test_values[:suburl] = test_values[:suburl].to_s if test_values[:suburl]
|
181
189
|
test_values[:params][:params] = test_values[:q] if test_values[:q] # Use q for query parameters. Nested :params is ugly and long
|
182
190
|
|
191
|
+
# In order for ERB to be calculated at correct time, the first time request is made, the resource should be created
|
192
|
+
@resource ||= RestClient::Resource.new(ERB.new(base_url_value).result(binding), @merged_options)
|
193
|
+
|
183
194
|
@resource_used = test_values[:suburl] ? @resource[test_values[:suburl]] : @resource
|
184
195
|
|
185
196
|
begin
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Soaspec
|
2
|
+
module TestServer
|
3
|
+
# Used to simulate requests requiring oauth authentication
|
4
|
+
class Invoices
|
5
|
+
class << self
|
6
|
+
def oauth_headers
|
7
|
+
{
|
8
|
+
'Content-Type' => 'application/json;charset=UTF-8'
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def oauth_body
|
13
|
+
{
|
14
|
+
access_token: 'TEST_TOKENiIsImtpZCI6IlRFU1QifQ.AAAABBBBRfaWQiOiJhYWQ5MjY3SIMULATE_LARGE_TOKEN3MmM5OGQ5NGE2YTU5YSIsImV4cCI6MTUyNzU3MTY4Mywic2NvcGUiOltdfQ.3OmCdW7fLZMUST_BE_ABLE_TO_HANDLEgAGaJB0lFYyhaw',
|
15
|
+
token_type: 'Bearer',
|
16
|
+
expires_in: '86399'
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/soaspec/version.rb
CHANGED
data/soaspec.gemspec
CHANGED
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.0.
|
4
|
+
version: 0.0.69
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SamuelGarrattIQA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -234,6 +234,20 @@ dependencies:
|
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: sinatra-basic-auth
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :runtime
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: xml-simple
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,6 +306,7 @@ files:
|
|
292
306
|
- lib/soaspec/spec_logger.rb
|
293
307
|
- lib/soaspec/test_server/bank.wsdl
|
294
308
|
- lib/soaspec/test_server/get_bank.rb
|
309
|
+
- lib/soaspec/test_server/invoices.rb
|
295
310
|
- lib/soaspec/test_server/note.xml
|
296
311
|
- lib/soaspec/test_server/puppy_service.rb
|
297
312
|
- lib/soaspec/test_server/test_attribute.rb
|