restassured_cli 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9629ffd5cd2b3d78105298fbbf2c49d8e8602e44
|
4
|
+
data.tar.gz: 2095416238f22421999af9a2002d2b436c1f198f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19a5e2efe5570c11218b7547875ca50771c9b4620a229abfc526975d85b3f725800dcb6f5bd22fab1d271c84e57eb8fabc984d1d51213cbca32f4125577e5898
|
7
|
+
data.tar.gz: befe08bc13cc45d282aa694284363695d3017561ddc9189deb2eab90ad03594875887aefe2ac353f4fe21a390c64d6263505ed742830d54a8548476f2cfd7fc0
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
# restassured_cli
|
1
|
+
# restassured_cli
|
2
|
+
![Gem Version](https://badge.fury.io/rb/restassured_cli.png)
|
2
3
|
|
3
4
|
## About
|
4
5
|
|
5
|
-
Command line utility (CLI) to generate test projects and sample tests using [
|
6
|
+
Command line utility (CLI) to generate test projects and sample tests using [RESTAssured BDD framework](https://github.com/jayway/rest-assured), a Java DSL for easy testing of REST services. Also, released as a ruby gem at [rubygems.org](https://rubygems.org/gems/restassured_cli)
|
6
7
|
|
7
8
|
## Release notes
|
8
9
|
|
@@ -53,9 +54,6 @@ smallbusiness
|
|
53
54
|
└── testing
|
54
55
|
|── smallbusiness-perf-tests
|
55
56
|
| └── jmeter/regression/
|
56
|
-
| |── src/main/java/com/intuit/samples/smallbusiness/tests/perf/
|
57
|
-
| └── src/main/resources/
|
58
|
-
| └── testng-perf.xml
|
59
57
|
|── smallbusiness-production-tests
|
60
58
|
| |── src/main/java/com/intuit/samples/smallbusiness/tests/production/
|
61
59
|
| └── src/main/resources/
|
@@ -126,7 +124,9 @@ c:\Ruby22-x64\bin\ruby.exe restassured_cli -p 1.0.0 -j 1.7 -f com.intuit.samples
|
|
126
124
|
|
127
125
|
## Contributing
|
128
126
|
|
129
|
-
|
127
|
+
For pull requests, your contributions are absolutely welcome.
|
128
|
+
|
129
|
+
For bug reports, please use https://github.com/eing/restassured_cli/issues
|
130
130
|
|
131
131
|
## Contributors (thank you!)
|
132
132
|
|
@@ -6,6 +6,9 @@ import GROUPID.tests.library.schema.Phone;
|
|
6
6
|
|
7
7
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
8
8
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
9
|
+
import com.jayway.restassured.config.RestAssuredConfig;
|
10
|
+
import com.jayway.restassured.config.XmlConfig;
|
11
|
+
import com.jayway.restassured.path.xml.XmlPath;
|
9
12
|
import com.jayway.restassured.filter.session.SessionFilter;
|
10
13
|
import com.jayway.restassured.http.ContentType;
|
11
14
|
import com.jayway.restassured.response.Response;
|
@@ -20,20 +23,25 @@ import javax.xml.soap.SOAPBody;
|
|
20
23
|
import javax.xml.soap.SOAPBodyElement;
|
21
24
|
import javax.xml.soap.SOAPElement;
|
22
25
|
import javax.xml.soap.SOAPEnvelope;
|
26
|
+
import javax.xml.soap.SOAPException;
|
23
27
|
import javax.xml.soap.SOAPMessage;
|
24
28
|
import javax.xml.soap.SOAPPart;
|
25
29
|
import java.io.ByteArrayOutputStream;
|
30
|
+
import java.io.IOException;
|
26
31
|
import java.util.ArrayList;
|
27
32
|
import java.util.HashMap;
|
33
|
+
import java.util.Map;
|
28
34
|
import java.util.List;
|
29
35
|
|
30
36
|
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
|
31
37
|
import static com.github.tomakehurst.wiremock.client.WireMock.any;
|
32
38
|
import static com.github.tomakehurst.wiremock.client.WireMock.get;
|
39
|
+
import static com.github.tomakehurst.wiremock.client.WireMock.post;
|
33
40
|
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
|
34
41
|
import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
|
35
42
|
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
|
36
43
|
import static com.jayway.restassured.RestAssured.given;
|
44
|
+
import static com.jayway.restassured.path.json.JsonPath.from;
|
37
45
|
import static org.hamcrest.CoreMatchers.hasItems;
|
38
46
|
import static org.hamcrest.CoreMatchers.is;
|
39
47
|
import static org.hamcrest.MatcherAssert.assertThat;
|
@@ -54,7 +62,7 @@ public class SampleComponentTest extends SampleTestBase {
|
|
54
62
|
* Add stubs to WireMock server for this set of tests.
|
55
63
|
*/
|
56
64
|
@BeforeClass
|
57
|
-
public void setup() {
|
65
|
+
public void setup() throws SOAPException, IOException {
|
58
66
|
/**
|
59
67
|
* Create a JSON response using JsonNodeFactory instead of hardcoding in string which is error prone.
|
60
68
|
* {
|
@@ -105,6 +113,34 @@ public class SampleComponentTest extends SampleTestBase {
|
|
105
113
|
withHeader("Content-Type", ContentType.ANY.toString()).
|
106
114
|
withHeader("JSESSIONID", "AS34979870H").
|
107
115
|
withStatus(200))));
|
116
|
+
|
117
|
+
// Stub response for SOAP
|
118
|
+
MessageFactory messageFactory = MessageFactory.newInstance();
|
119
|
+
SOAPMessage soapMessage = messageFactory.createMessage();
|
120
|
+
SOAPPart soapPart = soapMessage.getSOAPPart();
|
121
|
+
SOAPEnvelope envelope = soapPart.getEnvelope();
|
122
|
+
SOAPBody soapBody = envelope.getBody();
|
123
|
+
// Add namespace declarations
|
124
|
+
soapBody.addNamespaceDeclaration("ns2", "http://namespace2.com");
|
125
|
+
|
126
|
+
SOAPElement vendorElement = soapBody.addChildElement("Vendor", "ns2");
|
127
|
+
vendorElement.addChildElement("id", "ns2").addTextNode("1290");
|
128
|
+
vendorElement.addChildElement("name", "ns2").addTextNode("John Smith");
|
129
|
+
vendorElement.addChildElement("phone", "ns2").addTextNode("650-222-3333");
|
130
|
+
|
131
|
+
soapMessage.saveChanges();
|
132
|
+
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
133
|
+
soapMessage.writeTo(out);
|
134
|
+
String soapMessageInText = new String(out.toByteArray());
|
135
|
+
|
136
|
+
wireMockServer.
|
137
|
+
givenThat(
|
138
|
+
(post(urlEqualTo("/v1/vendors")).
|
139
|
+
willReturn(aResponse().
|
140
|
+
withHeader("Content-Type", ContentType.XML.toString()).
|
141
|
+
withBody(soapMessageInText).
|
142
|
+
withStatus(200))));
|
143
|
+
|
108
144
|
// Stub response for all other requests (setting to lowest priority)
|
109
145
|
wireMockServer.
|
110
146
|
givenThat(
|
@@ -193,6 +229,34 @@ public class SampleComponentTest extends SampleTestBase {
|
|
193
229
|
logger.debug(customer.toString());
|
194
230
|
}
|
195
231
|
|
232
|
+
/**
|
233
|
+
* Example of getting a list from response body.
|
234
|
+
*/
|
235
|
+
@Test
|
236
|
+
public void testGetListOfAllPhones() {
|
237
|
+
//@formatter:off
|
238
|
+
Response resp = given().spec(requestSpec).get("/customers/4");
|
239
|
+
List<HashMap> phones = from(resp.asString()).getList("customer.phone", HashMap.class);
|
240
|
+
// Phones which you should be asserting on
|
241
|
+
for (HashMap<String, String> map : phones) {
|
242
|
+
logger.debug(map.toString());
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
/**
|
247
|
+
* Example of getting a list from response body using groovy closure.
|
248
|
+
*/
|
249
|
+
@Test
|
250
|
+
public void testGetOnlyWorkPhones() {
|
251
|
+
//@formatter:off
|
252
|
+
Response resp = given().spec(requestSpec).get("/customers/4");
|
253
|
+
List<Map> phones = from(resp.asString()).get("customer.phone.findAll { phone-> phone.type == \"work\" }");
|
254
|
+
// Phones which you should be asserting on
|
255
|
+
for (Map map : phones) {
|
256
|
+
logger.debug(map.toString());
|
257
|
+
}
|
258
|
+
}
|
259
|
+
|
196
260
|
/**
|
197
261
|
* Example of asserting an array item.
|
198
262
|
*/
|
@@ -274,10 +338,10 @@ public class SampleComponentTest extends SampleTestBase {
|
|
274
338
|
Construct SOAP Request Message instead of hardcoding as a string which is error prone:
|
275
339
|
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
276
340
|
<SOAP-ENV:Header/>
|
277
|
-
<SOAP-ENV:Body>
|
278
|
-
<GetVendor>
|
279
|
-
<id>1290</id>
|
280
|
-
</GetVendor>
|
341
|
+
<SOAP-ENV:Body xmlns:ns2="http://namespace2.com">
|
342
|
+
<n2:GetVendor>
|
343
|
+
<n2:id>1290</n2:id>
|
344
|
+
</n2:GetVendor>
|
281
345
|
</SOAP-ENV:Body>
|
282
346
|
</SOAP-ENV:Envelope>
|
283
347
|
*/
|
@@ -287,17 +351,36 @@ public class SampleComponentTest extends SampleTestBase {
|
|
287
351
|
SOAPEnvelope envelope = soapPart.getEnvelope();
|
288
352
|
SOAPBody soapBody = envelope.getBody();
|
289
353
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
354
|
+
// Add namespace declarations
|
355
|
+
soapBody.addNamespaceDeclaration("ns2", "http://namespace2.com");
|
356
|
+
|
357
|
+
SOAPElement vendorElement = soapBody.addChildElement("Vendor", "ns2");
|
358
|
+
vendorElement.addChildElement("id", "ns2").addTextNode("1290");
|
294
359
|
soapMessage.saveChanges();
|
295
360
|
|
296
361
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
297
362
|
soapMessage.writeTo(out);
|
298
363
|
String soapMessageInText = new String(out.toByteArray());
|
364
|
+
|
365
|
+
/* Response stub returned from WireMock
|
366
|
+
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
367
|
+
<SOAP-ENV:Header/>
|
368
|
+
<SOAP-ENV:Body xmlns:ns2="http://namespace2.com">
|
369
|
+
<ns2:Vendor>
|
370
|
+
<ns2:id>1290</ns2:id>
|
371
|
+
<ns2:name>John Smith</ns2:name>
|
372
|
+
<ns2:phone>650-222-3333</ns2:phone>
|
373
|
+
</ns2:Vendor>
|
374
|
+
</SOAP-ENV:Body>
|
375
|
+
</SOAP-ENV:Envelope>
|
376
|
+
*/
|
377
|
+
|
299
378
|
//@formatter:off
|
300
|
-
given().
|
379
|
+
response = given().
|
380
|
+
config(RestAssuredConfig.newConfig().
|
381
|
+
xmlConfig(XmlConfig.xmlConfig().
|
382
|
+
namespaceAware(true).
|
383
|
+
declareNamespace("ns2", "http://namespace2.com"))).
|
301
384
|
spec(requestSpec).
|
302
385
|
header("SOAPAction", "http://localhost/getVendor").
|
303
386
|
contentType("application/soap+xml; charset=UTF-8;").
|
@@ -305,8 +388,19 @@ public class SampleComponentTest extends SampleTestBase {
|
|
305
388
|
when().
|
306
389
|
post("/v1/vendors").
|
307
390
|
then().assertThat().
|
308
|
-
|
391
|
+
contentType(ContentType.XML).
|
392
|
+
statusCode(200).
|
393
|
+
extract().response();
|
309
394
|
//@formatter:off
|
395
|
+
|
396
|
+
// One way to assert
|
397
|
+
String responseString = response.asString();
|
398
|
+
String vendorName = new XmlPath(responseString).getString("Envelope.Body.Vendor.name");
|
399
|
+
assertThat(vendorName, is("John Smith"));
|
400
|
+
|
401
|
+
// Another way to assert
|
402
|
+
vendorName = XmlPath.with(responseString).get("Envelope.Body.Vendor.name");
|
403
|
+
assertThat(vendorName, is("John Smith"));
|
310
404
|
}
|
311
405
|
|
312
406
|
}
|
@@ -18,16 +18,10 @@ module Display
|
|
18
18
|
def Display.results
|
19
19
|
puts "Created project for #{$serviceName} service ..."
|
20
20
|
puts "#{$projectName}"
|
21
|
-
puts " |-- #{$serviceName}-service"
|
22
|
-
puts " | |-- src/main/java/"
|
23
|
-
puts " | |-- src/test/java/"
|
24
21
|
puts " |-- testing"
|
25
22
|
puts " |-- #{$serviceName}-perf-tests"
|
26
23
|
puts " | |-- pom.xml"
|
27
24
|
puts " | |-- jmeter/regression/"
|
28
|
-
puts " | |-- src/main/java/#{$packageName}/tests/perf/"
|
29
|
-
puts " | |-- src/main/resources/"
|
30
|
-
puts " | testng-perf.xml"
|
31
25
|
puts " |-- #{$serviceName}-production-tests"
|
32
26
|
puts " | |-- pom.xml"
|
33
27
|
puts " | |-- src/main/java/#{$packageName}/tests/production/"
|
@@ -39,6 +33,7 @@ module Display
|
|
39
33
|
puts " | |-- src/main/java/#{$packageName}/tests/service/"
|
40
34
|
puts " | |-- src/main/java/#{$packageName}/tests/serviceintegration/"
|
41
35
|
puts " | |--src/main/resources/"
|
36
|
+
puts " | |-- default/"
|
42
37
|
puts " | |-- ci/"
|
43
38
|
puts " | |-- qa/"
|
44
39
|
puts " | |-- e2e/"
|
@@ -50,6 +45,4 @@ module Display
|
|
50
45
|
puts " | |--src/main/java/#{$packageName}/tests/library/"
|
51
46
|
puts " |--pom.xml"
|
52
47
|
end
|
53
|
-
|
54
48
|
end
|
55
|
-
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'restassured_cli/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "restassured_cli"
|
8
|
+
spec.version = RestAssuredCLI::VERSION
|
9
|
+
spec.authors = ["Eing Ong"]
|
10
|
+
spec.email = ["EingOng@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Command Line Utility that generates test projects using RestAssured}
|
13
|
+
spec.description = %q{Command line utility (CLI) to generate test projects and sample tests for web services using RESTAssured.}
|
14
|
+
spec.homepage = "http://rubygems.org/gems/restassured_cli"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
+
# delete this section to allow pushing this gem to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
+
end
|
24
|
+
|
25
|
+
spec.files = `git ls-files`.split($/)
|
26
|
+
spec.bindir = "bin"
|
27
|
+
spec.executables = ['restassured_cli']
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
31
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
+
spec.add_development_dependency "rspec"
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restassured_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eing Ong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- lib/restassured_cli/source/maven/testing/sampleservice-test-runner/pom.xml
|
112
112
|
- lib/restassured_cli/userinterface.rb
|
113
113
|
- lib/restassured_cli/version.rb
|
114
|
+
- restassured_cli.gemspec
|
114
115
|
- spec/restassured_cli_spec.rb
|
115
116
|
- spec/spec_helper.rb
|
116
117
|
homepage: http://rubygems.org/gems/restassured_cli
|