soaspec 0.2.23 → 0.2.24
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/.gitignore +15 -15
- data/.gitlab-ci.yml +33 -33
- data/.rspec +3 -3
- data/.rubocop.yml +2 -2
- data/CODE_OF_CONDUCT.md +74 -74
- data/ChangeLog +577 -573
- data/Gemfile +6 -6
- data/LICENSE.txt +21 -21
- data/README.md +230 -230
- data/Rakefile +42 -42
- data/Todo.md +15 -15
- data/exe/soaspec +123 -123
- data/exe/xml_to_yaml_file +42 -42
- data/lib/soaspec.rb +101 -101
- data/lib/soaspec/core_ext/hash.rb +35 -35
- data/lib/soaspec/cucumber/generic_steps.rb +85 -85
- data/lib/soaspec/demo.rb +4 -4
- data/lib/soaspec/exchange/exchange.rb +111 -111
- data/lib/soaspec/exchange/exchange_extractor.rb +83 -83
- data/lib/soaspec/exchange/exchange_properties.rb +26 -26
- data/lib/soaspec/exchange/exchange_repeater.rb +19 -19
- data/lib/soaspec/exchange/request_builder.rb +68 -68
- data/lib/soaspec/exchange/variable_storer.rb +22 -22
- data/lib/soaspec/exchange_handlers/exchange_handler.rb +126 -126
- data/lib/soaspec/exchange_handlers/handler_accessors.rb +130 -130
- data/lib/soaspec/exchange_handlers/response_extractor.rb +82 -82
- data/lib/soaspec/exchange_handlers/rest_exchanger_factory.rb +109 -109
- data/lib/soaspec/exchange_handlers/rest_handler.rb +259 -259
- data/lib/soaspec/exchange_handlers/rest_methods.rb +44 -44
- data/lib/soaspec/exchange_handlers/rest_parameters.rb +86 -86
- data/lib/soaspec/exchange_handlers/rest_parameters_defaults.rb +21 -21
- data/lib/soaspec/exchange_handlers/soap_handler.rb +235 -235
- data/lib/soaspec/exe_helpers.rb +92 -92
- data/lib/soaspec/generate_server.rb +37 -37
- data/lib/soaspec/generator/.rspec.erb +5 -5
- data/lib/soaspec/generator/.travis.yml.erb +5 -5
- data/lib/soaspec/generator/Gemfile.erb +8 -8
- data/lib/soaspec/generator/README.md.erb +29 -29
- data/lib/soaspec/generator/Rakefile.erb +19 -19
- data/lib/soaspec/generator/config/data/default.yml.erb +2 -2
- data/lib/soaspec/generator/css/bootstrap.css +6833 -6833
- data/lib/soaspec/generator/generate_exchange.html.erb +35 -35
- data/lib/soaspec/generator/lib/blz_service.rb.erb +26 -26
- data/lib/soaspec/generator/lib/dynamic_class_content.rb.erb +12 -12
- data/lib/soaspec/generator/lib/new_rest_service.rb.erb +51 -51
- data/lib/soaspec/generator/lib/new_soap_service.rb.erb +29 -29
- data/lib/soaspec/generator/lib/package_service.rb.erb +2 -2
- data/lib/soaspec/generator/lib/shared_example.rb.erb +8 -8
- data/lib/soaspec/generator/spec/dynamic_soap_spec.rb.erb +12 -12
- data/lib/soaspec/generator/spec/rest_spec.rb.erb +9 -9
- data/lib/soaspec/generator/spec/soap_spec.rb.erb +51 -51
- data/lib/soaspec/generator/spec/spec_helper.rb.erb +23 -23
- data/lib/soaspec/generator/template/soap_template.xml +6 -6
- data/lib/soaspec/indifferent_hash.rb +7 -7
- data/lib/soaspec/interpreter.rb +39 -39
- data/lib/soaspec/matchers.rb +114 -114
- data/lib/soaspec/not_found_errors.rb +13 -13
- data/lib/soaspec/o_auth2.rb +128 -128
- data/lib/soaspec/soaspec_shared_examples.rb +24 -24
- data/lib/soaspec/spec_logger.rb +121 -121
- data/lib/soaspec/template_reader.rb +28 -28
- data/lib/soaspec/test_server/bank.wsdl +90 -90
- data/lib/soaspec/test_server/get_bank.rb +164 -164
- data/lib/soaspec/test_server/id_manager.rb +39 -39
- data/lib/soaspec/test_server/invoices.rb +27 -27
- data/lib/soaspec/test_server/namespace.xml +14 -14
- data/lib/soaspec/test_server/note.xml +5 -5
- data/lib/soaspec/test_server/puppy_service.rb +19 -19
- data/lib/soaspec/test_server/test_attribute.rb +12 -12
- data/lib/soaspec/test_server/test_namespace.rb +12 -12
- data/lib/soaspec/version.rb +4 -3
- data/lib/soaspec/virtual_server.rb +174 -174
- data/lib/soaspec/wait.rb +41 -41
- data/lib/soaspec/wsdl_generator.rb +215 -215
- data/soaspec.gemspec +53 -53
- data/test.wsdl +116 -116
- data/test.xml +10 -10
- data/test_wsdl.rb +41 -41
- metadata +3 -4
@@ -1,15 +1,15 @@
|
|
1
|
-
<root>
|
2
|
-
<h:table xmlns:h="http://www.w3.org/TR/html4/">
|
3
|
-
<h:tr>
|
4
|
-
<h:td>Apples</h:td>
|
5
|
-
<h:td>Bananas</h:td>
|
6
|
-
</h:tr>
|
7
|
-
</h:table>
|
8
|
-
|
9
|
-
<f:table xmlns:f="https://www.w3schools.com/furniture">
|
10
|
-
<f:td>Wood</f:td>
|
11
|
-
<f:name>African Coffee Table</f:name>
|
12
|
-
<f:width>80</f:width>
|
13
|
-
<f:length>120</f:length>
|
14
|
-
</f:table>
|
1
|
+
<root>
|
2
|
+
<h:table xmlns:h="http://www.w3.org/TR/html4/">
|
3
|
+
<h:tr>
|
4
|
+
<h:td>Apples</h:td>
|
5
|
+
<h:td>Bananas</h:td>
|
6
|
+
</h:tr>
|
7
|
+
</h:table>
|
8
|
+
|
9
|
+
<f:table xmlns:f="https://www.w3schools.com/furniture">
|
10
|
+
<f:td>Wood</f:td>
|
11
|
+
<f:name>African Coffee Table</f:name>
|
12
|
+
<f:width>80</f:width>
|
13
|
+
<f:length>120</f:length>
|
14
|
+
</f:table>
|
15
15
|
</root>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
<note date="2008-01-10">
|
2
|
-
<to>Tove</to>
|
3
|
-
<from>Jani</from>
|
4
|
-
<comment_line>First comment</comment_line>
|
5
|
-
<comment_line>Second comment</comment_line>
|
1
|
+
<note date="2008-01-10">
|
2
|
+
<to>Tove</to>
|
3
|
+
<from>Jani</from>
|
4
|
+
<comment_line>First comment</comment_line>
|
5
|
+
<comment_line>Second comment</comment_line>
|
6
6
|
</note>
|
@@ -1,19 +1,19 @@
|
|
1
|
-
module Soaspec
|
2
|
-
module TestServer
|
3
|
-
# Simulates ordering a new puppy. Used for testing REST storing, retrieving and updating data
|
4
|
-
class PuppyService
|
5
|
-
@data = {}
|
6
|
-
@current_id = 1
|
7
|
-
class << self
|
8
|
-
attr_accessor :data
|
9
|
-
|
10
|
-
def new_id
|
11
|
-
@data[@current_id] = {}
|
12
|
-
@data[@current_id][:Id] = @current_id
|
13
|
-
@current_id += 1
|
14
|
-
@current_id - 1
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
module Soaspec
|
2
|
+
module TestServer
|
3
|
+
# Simulates ordering a new puppy. Used for testing REST storing, retrieving and updating data
|
4
|
+
class PuppyService
|
5
|
+
@data = {}
|
6
|
+
@current_id = 1
|
7
|
+
class << self
|
8
|
+
attr_accessor :data
|
9
|
+
|
10
|
+
def new_id
|
11
|
+
@data[@current_id] = {}
|
12
|
+
@data[@current_id][:Id] = @current_id
|
13
|
+
@current_id += 1
|
14
|
+
@current_id - 1
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
module Soaspec
|
2
|
-
module TestServer
|
3
|
-
# Helps tests attribute methods
|
4
|
-
class TestAttribute
|
5
|
-
class << self
|
6
|
-
def note
|
7
|
-
File.read(File.join(File.dirname(__FILE__), 'note.xml'))
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
1
|
+
module Soaspec
|
2
|
+
module TestServer
|
3
|
+
# Helps tests attribute methods
|
4
|
+
class TestAttribute
|
5
|
+
class << self
|
6
|
+
def note
|
7
|
+
File.read(File.join(File.dirname(__FILE__), 'note.xml'))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
module Soaspec
|
2
|
-
module TestServer
|
3
|
-
# Helps tests attribute methods
|
4
|
-
class TestNamespace
|
5
|
-
class << self
|
6
|
-
def food
|
7
|
-
File.read(File.join(File.dirname(__FILE__), 'namespace.xml'))
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
1
|
+
module Soaspec
|
2
|
+
module TestServer
|
3
|
+
# Helps tests attribute methods
|
4
|
+
class TestNamespace
|
5
|
+
class << self
|
6
|
+
def food
|
7
|
+
File.read(File.join(File.dirname(__FILE__), 'namespace.xml'))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/soaspec/version.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
module Soaspec
|
2
|
-
|
3
|
-
|
1
|
+
module Soaspec
|
2
|
+
# @return [String] Version of the gem
|
3
|
+
VERSION = '0.2.24'.freeze
|
4
|
+
end
|
@@ -1,174 +1,174 @@
|
|
1
|
-
require 'soaspec'
|
2
|
-
require 'sinatra'
|
3
|
-
require 'sinatra/basic_auth'
|
4
|
-
require 'docdsl'
|
5
|
-
require 'nokogiri'
|
6
|
-
require 'erb'
|
7
|
-
require 'json'
|
8
|
-
require 'faker'
|
9
|
-
require 'soaspec/test_server/get_bank'
|
10
|
-
require 'soaspec/test_server/test_attribute'
|
11
|
-
require 'soaspec/test_server/puppy_service'
|
12
|
-
require 'soaspec/test_server/invoices'
|
13
|
-
require 'soaspec/test_server/test_namespace'
|
14
|
-
require 'soaspec/test_server/id_manager'
|
15
|
-
|
16
|
-
module Soaspec
|
17
|
-
# Used to run virtual web service on localhost. This makes tests more reliable and faster
|
18
|
-
# First argument overrides the default port
|
19
|
-
class VirtualServer < Sinatra::Application
|
20
|
-
set :bind, '0.0.0.0'
|
21
|
-
set :port, (ENV['port'] || 4999).to_i
|
22
|
-
|
23
|
-
register Sinatra::DocDsl
|
24
|
-
|
25
|
-
page do
|
26
|
-
title 'Soaspec Virtual Services'
|
27
|
-
header 'Perform efficient API testing with Ruby'
|
28
|
-
introduction 'This has some simple virtual services aimed at helping you with testing your Ruby API code.'
|
29
|
-
end
|
30
|
-
|
31
|
-
documentation 'Nothing under /. Go look at /docs' do
|
32
|
-
response 'redirects to the documentation page'
|
33
|
-
status 302
|
34
|
-
end
|
35
|
-
get '/' do
|
36
|
-
redirect '/docs'
|
37
|
-
end
|
38
|
-
|
39
|
-
doc_endpoint '/docs'
|
40
|
-
|
41
|
-
documentation 'Simulate server error' do
|
42
|
-
status 500
|
43
|
-
end
|
44
|
-
get '/server_error' do
|
45
|
-
[500, {}, 'Internal Server Error']
|
46
|
-
end
|
47
|
-
|
48
|
-
documentation 'Used to verify extract from text response' do
|
49
|
-
response 'Plain text with a pattern to match in it'
|
50
|
-
end
|
51
|
-
get '/text_response' do
|
52
|
-
'This is some text. In here it says ID=12345 to indicate value to obtain'
|
53
|
-
end
|
54
|
-
|
55
|
-
documentation 'Used to test attributes' do
|
56
|
-
response 'A simple Note XML with a date attribute'
|
57
|
-
end
|
58
|
-
get '/test_attribute' do
|
59
|
-
Soaspec::TestServer::TestAttribute.note
|
60
|
-
end
|
61
|
-
|
62
|
-
documentation 'Used to test namespaces' do
|
63
|
-
response 'XML with 2 namespaces and same elements inside it'
|
64
|
-
end
|
65
|
-
get '/namespace' do
|
66
|
-
Soaspec::TestServer::TestNamespace.food
|
67
|
-
end
|
68
|
-
|
69
|
-
documentation 'Used for showing a simple difference in value depending on the id used' do
|
70
|
-
param :num, 'Number of tester'
|
71
|
-
param :id, 'Test parameter'
|
72
|
-
response 'JSON with success or true or false and the id sent
|
73
|
-
Idea is for tester to find the id that causes a failure (the fake "defect")
|
74
|
-
'
|
75
|
-
end
|
76
|
-
get '/packages/:num/:id' do |num, id|
|
77
|
-
JSON.generate(success: Soaspec::TestServer::IdManager.result_for(num, id), id: id)
|
78
|
-
end
|
79
|
-
|
80
|
-
documentation 'Sets status as developed'
|
81
|
-
post '/packages/developed' do
|
82
|
-
Soaspec::TestServer::IdManager.developed = request.body.include?('true')
|
83
|
-
Soaspec::TestServer::IdManager.developed.to_s
|
84
|
-
end
|
85
|
-
|
86
|
-
# Used for simple testing of posing
|
87
|
-
documentation 'Simply sends the response body back'
|
88
|
-
post '/echoer' do
|
89
|
-
request.body
|
90
|
-
end
|
91
|
-
|
92
|
-
documentation "Simulate retrieving an ouath token Passed to '/invoices'"
|
93
|
-
post '/as/token.oauth2' do
|
94
|
-
Soaspec::TestServer::Invoices.user_used = request.env['rack.request.form_hash']['username']
|
95
|
-
[200, Soaspec::TestServer::Invoices.oauth_headers, JSON.generate(Soaspec::TestServer::Invoices.oauth_body)]
|
96
|
-
end
|
97
|
-
|
98
|
-
documentation 'Replies with HTTP authorization and user set in /as/token.oauth2'
|
99
|
-
get '/invoice/:id' do |id|
|
100
|
-
JSON.generate(customer_id: id, oauth: request.env['HTTP_AUTHORIZATION'], user: Soaspec::TestServer::Invoices.user_used)
|
101
|
-
end
|
102
|
-
|
103
|
-
documentation 'This is returned when a query for the WSDL is made' do
|
104
|
-
response 'WSDL containing SCHEMA information'
|
105
|
-
end
|
106
|
-
get '/BLZService' do
|
107
|
-
[200, { 'Content-Type' => 'text/xml' }, Soaspec::TestServer::GetBank.test_wsdl]
|
108
|
-
end
|
109
|
-
|
110
|
-
authorize do |username, password|
|
111
|
-
username == 'admin' && password == 'secret'
|
112
|
-
end
|
113
|
-
|
114
|
-
protect do
|
115
|
-
documentation "Get path used to test basic auth. User is 'admin' & password is 'secret'" do
|
116
|
-
response 'Secret text'
|
117
|
-
end
|
118
|
-
get '/basic_secrets' do
|
119
|
-
'Secret data'
|
120
|
-
end
|
121
|
-
|
122
|
-
documentation 'This is the basic service being hit by SOAP actions'
|
123
|
-
post '/BLZService' do
|
124
|
-
Soaspec::TestServer::GetBank.response_for request
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
documentation 'Used for testing storage of data' do
|
129
|
-
payload 'Puppy JSON',
|
130
|
-
Name: 'Test', Failure_Type__c: 'Fail'
|
131
|
-
end
|
132
|
-
post '/test/puppy' do
|
133
|
-
request_hash = JSON.parse(request.body.string)
|
134
|
-
id = Soaspec::TestServer::PuppyService.new_id
|
135
|
-
Soaspec::TestServer::PuppyService.data[id][:Name] = request_hash['Name']
|
136
|
-
Soaspec::TestServer::PuppyService.data[id][:Failure_Type__c] = request_hash['Failure_Type__c'] if request_hash['Failure_Type__c']
|
137
|
-
response_hash = { result: { Status: 'success', Data: Soaspec::TestServer::PuppyService.data[id] } }
|
138
|
-
JSON.generate response_hash
|
139
|
-
end
|
140
|
-
|
141
|
-
documentation 'Used for testing retrieving storage of data'
|
142
|
-
get '/test/puppy/:id' do |id|
|
143
|
-
result = Soaspec::TestServer::PuppyService.data[id.to_i]
|
144
|
-
JSON.generate result
|
145
|
-
end
|
146
|
-
|
147
|
-
documentation 'Used for testing updating data'
|
148
|
-
patch '/test/puppy/:id' do |id|
|
149
|
-
request_hash = JSON.parse(request.body.string)
|
150
|
-
Soaspec::TestServer::PuppyService.data[id.to_i][:Name] = request_hash['Name']
|
151
|
-
response_hash = { result: { Status: 'updated', With: request_hash['Name'] } }
|
152
|
-
JSON.generate response_hash
|
153
|
-
end
|
154
|
-
|
155
|
-
documentation 'Used for testing the handling of JSON path' do
|
156
|
-
response 'JSON with multiple elements of the same name at different nested levels'
|
157
|
-
end
|
158
|
-
get '/test/multiple_json' do
|
159
|
-
<<-BOOKS
|
160
|
-
{"store":
|
161
|
-
{"bicycle":
|
162
|
-
{"price":19.95, "color":"red"},
|
163
|
-
"book":[
|
164
|
-
{"price":8.95, "category":"reference", "title":"Sayings of the Century", "author":"Nigel Rees"},
|
165
|
-
{"price":12.99, "category":"fiction", "title":"Sword of Honour", "author":"Evelyn Waugh"},
|
166
|
-
{"price":8.99, "category":"fiction", "isbn":"0-553-21311-3", "title":"Moby Dick", "author":"Herman Melville","color":"blue"},
|
167
|
-
{"price":22.99, "category":"fiction", "isbn":"0-395-19395-8", "title":"The Lord of the Rings", "author":"Tolkien"}
|
168
|
-
]
|
169
|
-
}
|
170
|
-
}
|
171
|
-
BOOKS
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
1
|
+
require 'soaspec'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'sinatra/basic_auth'
|
4
|
+
require 'docdsl'
|
5
|
+
require 'nokogiri'
|
6
|
+
require 'erb'
|
7
|
+
require 'json'
|
8
|
+
require 'faker'
|
9
|
+
require 'soaspec/test_server/get_bank'
|
10
|
+
require 'soaspec/test_server/test_attribute'
|
11
|
+
require 'soaspec/test_server/puppy_service'
|
12
|
+
require 'soaspec/test_server/invoices'
|
13
|
+
require 'soaspec/test_server/test_namespace'
|
14
|
+
require 'soaspec/test_server/id_manager'
|
15
|
+
|
16
|
+
module Soaspec
|
17
|
+
# Used to run virtual web service on localhost. This makes tests more reliable and faster
|
18
|
+
# First argument overrides the default port
|
19
|
+
class VirtualServer < Sinatra::Application
|
20
|
+
set :bind, '0.0.0.0'
|
21
|
+
set :port, (ENV['port'] || 4999).to_i
|
22
|
+
|
23
|
+
register Sinatra::DocDsl
|
24
|
+
|
25
|
+
page do
|
26
|
+
title 'Soaspec Virtual Services'
|
27
|
+
header 'Perform efficient API testing with Ruby'
|
28
|
+
introduction 'This has some simple virtual services aimed at helping you with testing your Ruby API code.'
|
29
|
+
end
|
30
|
+
|
31
|
+
documentation 'Nothing under /. Go look at /docs' do
|
32
|
+
response 'redirects to the documentation page'
|
33
|
+
status 302
|
34
|
+
end
|
35
|
+
get '/' do
|
36
|
+
redirect '/docs'
|
37
|
+
end
|
38
|
+
|
39
|
+
doc_endpoint '/docs'
|
40
|
+
|
41
|
+
documentation 'Simulate server error' do
|
42
|
+
status 500
|
43
|
+
end
|
44
|
+
get '/server_error' do
|
45
|
+
[500, {}, 'Internal Server Error']
|
46
|
+
end
|
47
|
+
|
48
|
+
documentation 'Used to verify extract from text response' do
|
49
|
+
response 'Plain text with a pattern to match in it'
|
50
|
+
end
|
51
|
+
get '/text_response' do
|
52
|
+
'This is some text. In here it says ID=12345 to indicate value to obtain'
|
53
|
+
end
|
54
|
+
|
55
|
+
documentation 'Used to test attributes' do
|
56
|
+
response 'A simple Note XML with a date attribute'
|
57
|
+
end
|
58
|
+
get '/test_attribute' do
|
59
|
+
Soaspec::TestServer::TestAttribute.note
|
60
|
+
end
|
61
|
+
|
62
|
+
documentation 'Used to test namespaces' do
|
63
|
+
response 'XML with 2 namespaces and same elements inside it'
|
64
|
+
end
|
65
|
+
get '/namespace' do
|
66
|
+
Soaspec::TestServer::TestNamespace.food
|
67
|
+
end
|
68
|
+
|
69
|
+
documentation 'Used for showing a simple difference in value depending on the id used' do
|
70
|
+
param :num, 'Number of tester'
|
71
|
+
param :id, 'Test parameter'
|
72
|
+
response 'JSON with success or true or false and the id sent
|
73
|
+
Idea is for tester to find the id that causes a failure (the fake "defect")
|
74
|
+
'
|
75
|
+
end
|
76
|
+
get '/packages/:num/:id' do |num, id|
|
77
|
+
JSON.generate(success: Soaspec::TestServer::IdManager.result_for(num, id), id: id)
|
78
|
+
end
|
79
|
+
|
80
|
+
documentation 'Sets status as developed'
|
81
|
+
post '/packages/developed' do
|
82
|
+
Soaspec::TestServer::IdManager.developed = request.body.include?('true')
|
83
|
+
Soaspec::TestServer::IdManager.developed.to_s
|
84
|
+
end
|
85
|
+
|
86
|
+
# Used for simple testing of posing
|
87
|
+
documentation 'Simply sends the response body back'
|
88
|
+
post '/echoer' do
|
89
|
+
request.body
|
90
|
+
end
|
91
|
+
|
92
|
+
documentation "Simulate retrieving an ouath token Passed to '/invoices'"
|
93
|
+
post '/as/token.oauth2' do
|
94
|
+
Soaspec::TestServer::Invoices.user_used = request.env['rack.request.form_hash']['username']
|
95
|
+
[200, Soaspec::TestServer::Invoices.oauth_headers, JSON.generate(Soaspec::TestServer::Invoices.oauth_body)]
|
96
|
+
end
|
97
|
+
|
98
|
+
documentation 'Replies with HTTP authorization and user set in /as/token.oauth2'
|
99
|
+
get '/invoice/:id' do |id|
|
100
|
+
JSON.generate(customer_id: id, oauth: request.env['HTTP_AUTHORIZATION'], user: Soaspec::TestServer::Invoices.user_used)
|
101
|
+
end
|
102
|
+
|
103
|
+
documentation 'This is returned when a query for the WSDL is made' do
|
104
|
+
response 'WSDL containing SCHEMA information'
|
105
|
+
end
|
106
|
+
get '/BLZService' do
|
107
|
+
[200, { 'Content-Type' => 'text/xml' }, Soaspec::TestServer::GetBank.test_wsdl]
|
108
|
+
end
|
109
|
+
|
110
|
+
authorize do |username, password|
|
111
|
+
username == 'admin' && password == 'secret'
|
112
|
+
end
|
113
|
+
|
114
|
+
protect do
|
115
|
+
documentation "Get path used to test basic auth. User is 'admin' & password is 'secret'" do
|
116
|
+
response 'Secret text'
|
117
|
+
end
|
118
|
+
get '/basic_secrets' do
|
119
|
+
'Secret data'
|
120
|
+
end
|
121
|
+
|
122
|
+
documentation 'This is the basic service being hit by SOAP actions'
|
123
|
+
post '/BLZService' do
|
124
|
+
Soaspec::TestServer::GetBank.response_for request
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
documentation 'Used for testing storage of data' do
|
129
|
+
payload 'Puppy JSON',
|
130
|
+
Name: 'Test', Failure_Type__c: 'Fail'
|
131
|
+
end
|
132
|
+
post '/test/puppy' do
|
133
|
+
request_hash = JSON.parse(request.body.string)
|
134
|
+
id = Soaspec::TestServer::PuppyService.new_id
|
135
|
+
Soaspec::TestServer::PuppyService.data[id][:Name] = request_hash['Name']
|
136
|
+
Soaspec::TestServer::PuppyService.data[id][:Failure_Type__c] = request_hash['Failure_Type__c'] if request_hash['Failure_Type__c']
|
137
|
+
response_hash = { result: { Status: 'success', Data: Soaspec::TestServer::PuppyService.data[id] } }
|
138
|
+
JSON.generate response_hash
|
139
|
+
end
|
140
|
+
|
141
|
+
documentation 'Used for testing retrieving storage of data'
|
142
|
+
get '/test/puppy/:id' do |id|
|
143
|
+
result = Soaspec::TestServer::PuppyService.data[id.to_i]
|
144
|
+
JSON.generate result
|
145
|
+
end
|
146
|
+
|
147
|
+
documentation 'Used for testing updating data'
|
148
|
+
patch '/test/puppy/:id' do |id|
|
149
|
+
request_hash = JSON.parse(request.body.string)
|
150
|
+
Soaspec::TestServer::PuppyService.data[id.to_i][:Name] = request_hash['Name']
|
151
|
+
response_hash = { result: { Status: 'updated', With: request_hash['Name'] } }
|
152
|
+
JSON.generate response_hash
|
153
|
+
end
|
154
|
+
|
155
|
+
documentation 'Used for testing the handling of JSON path' do
|
156
|
+
response 'JSON with multiple elements of the same name at different nested levels'
|
157
|
+
end
|
158
|
+
get '/test/multiple_json' do
|
159
|
+
<<-BOOKS
|
160
|
+
{"store":
|
161
|
+
{"bicycle":
|
162
|
+
{"price":19.95, "color":"red"},
|
163
|
+
"book":[
|
164
|
+
{"price":8.95, "category":"reference", "title":"Sayings of the Century", "author":"Nigel Rees"},
|
165
|
+
{"price":12.99, "category":"fiction", "title":"Sword of Honour", "author":"Evelyn Waugh"},
|
166
|
+
{"price":8.99, "category":"fiction", "isbn":"0-553-21311-3", "title":"Moby Dick", "author":"Herman Melville","color":"blue"},
|
167
|
+
{"price":22.99, "category":"fiction", "isbn":"0-395-19395-8", "title":"The Lord of the Rings", "author":"Tolkien"}
|
168
|
+
]
|
169
|
+
}
|
170
|
+
}
|
171
|
+
BOOKS
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|