mockserver-client 1.0.8.pre → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -1
- data/Gemfile.lock +79 -0
- data/README.md +89 -229
- data/Rakefile +8 -8
- data/docs/Body.md +7 -0
- data/docs/BodyWithContentType.md +7 -0
- data/docs/ConnectionOptions.md +12 -0
- data/docs/ControlApi.md +269 -0
- data/docs/Delay.md +9 -0
- data/docs/Expectation.md +7 -0
- data/docs/ExpectationApi.md +51 -0
- data/docs/Expectations.md +7 -0
- data/docs/HttpClassCallback.md +8 -0
- data/docs/HttpError.md +10 -0
- data/docs/HttpForward.md +11 -0
- data/docs/HttpObjectCallback.md +8 -0
- data/docs/HttpOverrideForwardedRequest.md +9 -0
- data/docs/HttpRequest.md +15 -0
- data/docs/HttpResponse.md +14 -0
- data/docs/HttpTemplate.md +10 -0
- data/docs/KeyToMultiValue.md +7 -0
- data/docs/KeyToValue.md +7 -0
- data/docs/Ports.md +8 -0
- data/docs/TimeToLive.md +10 -0
- data/docs/Times.md +9 -0
- data/docs/Verification.md +9 -0
- data/docs/VerificationSequence.md +8 -0
- data/docs/VerificationTimes.md +9 -0
- data/docs/VerifyApi.md +94 -0
- data/lib/mockserver-client.rb +62 -15
- data/lib/mockserver-client/api/control_api.rb +316 -0
- data/lib/mockserver-client/api/expectation_api.rb +73 -0
- data/lib/mockserver-client/api/verify_api.rb +127 -0
- data/lib/mockserver-client/api_client.rb +388 -0
- data/lib/mockserver-client/api_error.rb +38 -0
- data/lib/mockserver-client/configuration.rb +202 -0
- data/lib/mockserver-client/models/body.rb +174 -0
- data/lib/mockserver-client/models/body_with_content_type.rb +174 -0
- data/lib/mockserver-client/models/connection_options.rb +219 -0
- data/lib/mockserver-client/models/delay.rb +192 -0
- data/lib/mockserver-client/models/expectation.rb +174 -0
- data/lib/mockserver-client/models/expectations.rb +174 -0
- data/lib/mockserver-client/models/http_class_callback.rb +183 -0
- data/lib/mockserver-client/models/http_error.rb +201 -0
- data/lib/mockserver-client/models/http_forward.rb +244 -0
- data/lib/mockserver-client/models/http_object_callback.rb +183 -0
- data/lib/mockserver-client/models/http_override_forwarded_request.rb +192 -0
- data/lib/mockserver-client/models/http_request.rb +246 -0
- data/lib/mockserver-client/models/http_response.rb +237 -0
- data/lib/mockserver-client/models/http_template.rb +235 -0
- data/lib/mockserver-client/models/key_to_multi_value.rb +174 -0
- data/lib/mockserver-client/models/key_to_value.rb +174 -0
- data/lib/mockserver-client/models/ports.rb +185 -0
- data/lib/mockserver-client/models/time_to_live.rb +235 -0
- data/lib/mockserver-client/models/times.rb +192 -0
- data/lib/mockserver-client/models/verification.rb +192 -0
- data/lib/mockserver-client/models/verification_sequence.rb +185 -0
- data/lib/mockserver-client/models/verification_times.rb +192 -0
- data/lib/mockserver-client/version.rb +15 -0
- data/mockserver-client.gemspec +44 -36
- data/spec/api/control_api_spec.rb +102 -0
- data/spec/api/expectation_api_spec.rb +46 -0
- data/spec/api/verify_api_spec.rb +57 -0
- data/spec/api_client_spec.rb +226 -0
- data/spec/configuration_spec.rb +42 -0
- data/spec/models/body_spec.rb +35 -0
- data/spec/models/body_with_content_type_spec.rb +35 -0
- data/spec/models/connection_options_spec.rb +65 -0
- data/spec/models/delay_spec.rb +47 -0
- data/spec/models/expectation_spec.rb +35 -0
- data/spec/models/expectations_spec.rb +35 -0
- data/spec/models/http_class_callback_spec.rb +41 -0
- data/spec/models/http_error_spec.rb +53 -0
- data/spec/models/http_forward_spec.rb +63 -0
- data/spec/models/http_object_callback_spec.rb +41 -0
- data/spec/models/http_override_forwarded_request_spec.rb +47 -0
- data/spec/models/http_request_spec.rb +83 -0
- data/spec/models/http_response_spec.rb +77 -0
- data/spec/models/http_template_spec.rb +57 -0
- data/spec/models/key_to_multi_value_spec.rb +35 -0
- data/spec/models/key_to_value_spec.rb +35 -0
- data/spec/models/ports_spec.rb +41 -0
- data/spec/models/time_to_live_spec.rb +57 -0
- data/spec/models/times_spec.rb +47 -0
- data/spec/models/verification_sequence_spec.rb +41 -0
- data/spec/models/verification_spec.rb +47 -0
- data/spec/models/verification_times_spec.rb +47 -0
- data/spec/spec_helper.rb +103 -53
- metadata +225 -158
- data/.gitignore +0 -21
- data/.rubocop.yml +0 -7
- data/bin/mockserver +0 -9
- data/lib/cli.rb +0 -146
- data/lib/mockserver/abstract_client.rb +0 -111
- data/lib/mockserver/mock_server_client.rb +0 -46
- data/lib/mockserver/model/array_of.rb +0 -85
- data/lib/mockserver/model/body.rb +0 -56
- data/lib/mockserver/model/cookie.rb +0 -36
- data/lib/mockserver/model/delay.rb +0 -34
- data/lib/mockserver/model/enum.rb +0 -47
- data/lib/mockserver/model/expectation.rb +0 -139
- data/lib/mockserver/model/forward.rb +0 -41
- data/lib/mockserver/model/header.rb +0 -43
- data/lib/mockserver/model/parameter.rb +0 -43
- data/lib/mockserver/model/request.rb +0 -81
- data/lib/mockserver/model/response.rb +0 -45
- data/lib/mockserver/model/times.rb +0 -61
- data/lib/mockserver/proxy_client.rb +0 -9
- data/lib/mockserver/utility_methods.rb +0 -59
- data/lib/mockserver/version.rb +0 -5
- data/pom.xml +0 -118
- data/spec/fixtures/forward_mockserver.json +0 -7
- data/spec/fixtures/incorrect_login_response.json +0 -20
- data/spec/fixtures/post_login_request.json +0 -22
- data/spec/fixtures/register_expectation.json +0 -50
- data/spec/fixtures/retrieved_request.json +0 -22
- data/spec/fixtures/search_request.json +0 -6
- data/spec/fixtures/times_once.json +0 -6
- data/spec/integration/mock_client_integration_spec.rb +0 -82
- data/spec/mockserver/builder_spec.rb +0 -90
- data/spec/mockserver/mock_client_spec.rb +0 -80
- data/spec/mockserver/proxy_client_spec.rb +0 -38
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require_relative './body'
|
3
|
-
require_relative './delay'
|
4
|
-
require_relative './header'
|
5
|
-
require_relative './cookie'
|
6
|
-
require 'base64'
|
7
|
-
|
8
|
-
#
|
9
|
-
# A class to model a response in an expectation.
|
10
|
-
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
11
|
-
#
|
12
|
-
module MockServer::Model
|
13
|
-
# Model for a mock response
|
14
|
-
class Response < Hashie::Dash
|
15
|
-
include Hashie::Extensions::MethodAccess
|
16
|
-
include Hashie::Extensions::IgnoreUndeclared
|
17
|
-
include Hashie::Extensions::Coercion
|
18
|
-
|
19
|
-
property :status_code, default: 200
|
20
|
-
property :cookies, default: Cookies.new([])
|
21
|
-
property :headers, default: Headers.new([])
|
22
|
-
property :delay
|
23
|
-
property :body
|
24
|
-
|
25
|
-
coerce_key :cookies, Cookies
|
26
|
-
coerce_key :headers, Headers
|
27
|
-
coerce_key :delay, Delay
|
28
|
-
coerce_key :body, String
|
29
|
-
end
|
30
|
-
|
31
|
-
# DSL Methods for a response
|
32
|
-
module DSL
|
33
|
-
def response(&_)
|
34
|
-
obj = Response.new
|
35
|
-
yield obj if block_given?
|
36
|
-
obj
|
37
|
-
end
|
38
|
-
|
39
|
-
def decode(string)
|
40
|
-
Base64.decode64(string)
|
41
|
-
end
|
42
|
-
|
43
|
-
alias_method :http_response, :response
|
44
|
-
end
|
45
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'hashie'
|
3
|
-
require_relative './enum'
|
4
|
-
|
5
|
-
#
|
6
|
-
# A class to model the number of times an expectation should be respected.
|
7
|
-
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
-
#
|
9
|
-
module MockServer::Model
|
10
|
-
# Enum for boolean values since Ruby does not have this by default
|
11
|
-
class Boolean < Enum
|
12
|
-
def allowed_values
|
13
|
-
[true, false]
|
14
|
-
end
|
15
|
-
|
16
|
-
def !
|
17
|
-
!@value
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(supplied_value)
|
21
|
-
@value = pre_process_value(supplied_value)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Model for times class
|
26
|
-
class Times < Hashie::Dash
|
27
|
-
include Hashie::Extensions::MethodAccess
|
28
|
-
include Hashie::Extensions::IgnoreUndeclared
|
29
|
-
include Hashie::Extensions::Coercion
|
30
|
-
|
31
|
-
property :remaining_times, default: 0
|
32
|
-
property :unlimited, default: false
|
33
|
-
|
34
|
-
coerce_key :unlimited, Boolean
|
35
|
-
end
|
36
|
-
|
37
|
-
# DSL methods related to times
|
38
|
-
module DSL
|
39
|
-
def unlimited
|
40
|
-
Times.new(unlimited: true)
|
41
|
-
end
|
42
|
-
|
43
|
-
def once
|
44
|
-
Times.new(remaining_times: 1)
|
45
|
-
end
|
46
|
-
|
47
|
-
def exactly(num)
|
48
|
-
Times.new(remaining_times: num)
|
49
|
-
end
|
50
|
-
|
51
|
-
def at_least(num)
|
52
|
-
Times.new(remaining_times: num, unlimited: true)
|
53
|
-
end
|
54
|
-
|
55
|
-
def times(&_)
|
56
|
-
obj = once
|
57
|
-
yield obj if block_given?
|
58
|
-
obj
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'active_support/inflector'
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
#
|
6
|
-
# A module that has common utility methods used by this project
|
7
|
-
# @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
|
8
|
-
#
|
9
|
-
module MockServer::UtilityMethods
|
10
|
-
# Does the following filter/transform operations on a hash
|
11
|
-
# - exclude null or empty valued keys from the hash
|
12
|
-
# - camelize the keys of the hash
|
13
|
-
# @param obj [Object] an object which will be used to create the hash. Must support :to_hash method
|
14
|
-
# @return [Hash] the transformed hash
|
15
|
-
# rubocop:disable Style/MethodLength
|
16
|
-
# rubocop:disable Style/CyclomaticComplexity
|
17
|
-
def camelized_hash(obj)
|
18
|
-
obj = obj && obj.respond_to?(:to_hash) ? obj.to_hash : obj
|
19
|
-
|
20
|
-
if obj.is_a?(Hash)
|
21
|
-
obj.each_with_object({}) do |(k, v), acc|
|
22
|
-
is_empty = v.nil? || (v.respond_to?(:empty?) ? v.empty? : false)
|
23
|
-
acc[camelize(k)] = camelized_hash(v) unless is_empty
|
24
|
-
end
|
25
|
-
elsif obj.respond_to?(:map)
|
26
|
-
obj.map { |element| camelized_hash(element) }
|
27
|
-
else
|
28
|
-
obj
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# Converts keys to symbols
|
33
|
-
# @param hash [Hash] a hash
|
34
|
-
# @return [Hash] a copy of the hash where keys are symbols
|
35
|
-
def symbolize_keys(hash)
|
36
|
-
if hash.is_a?(Hash)
|
37
|
-
Hash[hash.map { |k, v| [k.to_s.underscore.to_sym, symbolize_keys(v)] }]
|
38
|
-
elsif hash.respond_to?(:map)
|
39
|
-
hash.map { |obj| symbolize_keys(obj) }
|
40
|
-
else
|
41
|
-
hash
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# @param str [Object] an object to camelize the string representation of
|
46
|
-
# @return [String] the string converted to camelcase with first letter in lower case
|
47
|
-
def camelize(str)
|
48
|
-
str.to_s.camelize(:lower)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Parse string response into JSON
|
52
|
-
# @param response [Response] from RestClient response
|
53
|
-
# @return [Hash] the parsed response or the object unmodified if parsing is not possible
|
54
|
-
def parse_string_to_json(response)
|
55
|
-
JSON.parse(response)
|
56
|
-
rescue JSON::ParserError
|
57
|
-
response
|
58
|
-
end
|
59
|
-
end
|
data/lib/mockserver/version.rb
DELETED
data/pom.xml
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
3
|
-
<parent>
|
4
|
-
<groupId>org.mock-server</groupId>
|
5
|
-
<artifactId>mockserver</artifactId>
|
6
|
-
<version>3.10.2-SNAPSHOT</version>
|
7
|
-
</parent>
|
8
|
-
<modelVersion>4.0.0</modelVersion>
|
9
|
-
|
10
|
-
<artifactId>mockserver-client-ruby</artifactId>
|
11
|
-
<name>MockServer Ruby Client</name>
|
12
|
-
<description>A ruby client for the MockServer</description>
|
13
|
-
<url>http://www.mock-server.com</url>
|
14
|
-
|
15
|
-
<properties>
|
16
|
-
<skipRubyRelease>true</skipRubyRelease>
|
17
|
-
<skipRubyBuild>false</skipRubyBuild>
|
18
|
-
</properties>
|
19
|
-
|
20
|
-
<build>
|
21
|
-
<plugins>
|
22
|
-
<!-- run mock server for ruby client tests -->
|
23
|
-
<plugin>
|
24
|
-
<groupId>${project.groupId}</groupId>
|
25
|
-
<artifactId>mockserver-maven-plugin</artifactId>
|
26
|
-
<version>${project.version}</version>
|
27
|
-
<configuration>
|
28
|
-
<logLevel>WARN</logLevel>
|
29
|
-
<serverPort>1080</serverPort>
|
30
|
-
<proxyPort>1090</proxyPort>
|
31
|
-
</configuration>
|
32
|
-
<executions>
|
33
|
-
<execution>
|
34
|
-
<id>pre-test</id>
|
35
|
-
<phase>generate-test-sources</phase>
|
36
|
-
<goals>
|
37
|
-
<goal>start</goal>
|
38
|
-
</goals>
|
39
|
-
</execution>
|
40
|
-
<execution>
|
41
|
-
<id>post-test</id>
|
42
|
-
<phase>verify</phase>
|
43
|
-
<goals>
|
44
|
-
<goal>stop</goal>
|
45
|
-
</goals>
|
46
|
-
</execution>
|
47
|
-
</executions>
|
48
|
-
</plugin>
|
49
|
-
<!-- run ruby bundle build and install -->
|
50
|
-
<plugin>
|
51
|
-
<groupId>org.codehaus.mojo</groupId>
|
52
|
-
<artifactId>exec-maven-plugin</artifactId>
|
53
|
-
<version>1.4.0</version>
|
54
|
-
<executions>
|
55
|
-
<execution>
|
56
|
-
<id>bundle_install</id>
|
57
|
-
<phase>prepare-package</phase>
|
58
|
-
<goals>
|
59
|
-
<goal>exec</goal>
|
60
|
-
</goals>
|
61
|
-
<configuration>
|
62
|
-
<skip>${skipRubyBuild}</skip>
|
63
|
-
<executable>bundle</executable>
|
64
|
-
<arguments>
|
65
|
-
<argument>install</argument>
|
66
|
-
<argument>--path</argument>
|
67
|
-
<argument>vendor/bundle</argument>
|
68
|
-
</arguments>
|
69
|
-
<environmentVariables>
|
70
|
-
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
71
|
-
</environmentVariables>
|
72
|
-
</configuration>
|
73
|
-
</execution>
|
74
|
-
<execution>
|
75
|
-
<id>ruby_make</id>
|
76
|
-
<phase>prepare-package</phase>
|
77
|
-
<goals>
|
78
|
-
<goal>exec</goal>
|
79
|
-
</goals>
|
80
|
-
<configuration>
|
81
|
-
<skip>${skipRubyBuild}</skip>
|
82
|
-
<executable>bundle</executable>
|
83
|
-
<arguments>
|
84
|
-
<argument>exec</argument>
|
85
|
-
<argument>rake</argument>
|
86
|
-
<argument>build</argument>
|
87
|
-
<argument>spec</argument>
|
88
|
-
</arguments>
|
89
|
-
<environmentVariables>
|
90
|
-
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
91
|
-
</environmentVariables>
|
92
|
-
</configuration>
|
93
|
-
</execution>
|
94
|
-
<execution>
|
95
|
-
<id>ruby_release</id>
|
96
|
-
<phase>deploy</phase>
|
97
|
-
<goals>
|
98
|
-
<goal>exec</goal>
|
99
|
-
</goals>
|
100
|
-
<configuration>
|
101
|
-
<skip>${skipRubyRelease}</skip>
|
102
|
-
<executable>bundle</executable>
|
103
|
-
<arguments>
|
104
|
-
<argument>exec</argument>
|
105
|
-
<argument>rake</argument>
|
106
|
-
<argument>release</argument>
|
107
|
-
</arguments>
|
108
|
-
<environmentVariables>
|
109
|
-
<BUNDLE_GEMFILE>${basedir}/Gemfile</BUNDLE_GEMFILE>
|
110
|
-
</environmentVariables>
|
111
|
-
</configuration>
|
112
|
-
</execution>
|
113
|
-
</executions>
|
114
|
-
</plugin>
|
115
|
-
</plugins>
|
116
|
-
</build>
|
117
|
-
|
118
|
-
</project>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"httpResponse": {
|
3
|
-
"statusCode": 401,
|
4
|
-
"headers": [
|
5
|
-
{
|
6
|
-
"name": "Content-Type",
|
7
|
-
"values": ["application/json; charset=utf-8"]
|
8
|
-
},
|
9
|
-
{
|
10
|
-
"name": "Cache-Control",
|
11
|
-
"values": ["public, max-age=86400"]
|
12
|
-
}
|
13
|
-
],
|
14
|
-
"body": "incorrect username and password combination",
|
15
|
-
"delay": {
|
16
|
-
"timeUnit": "SECONDS",
|
17
|
-
"value": 1
|
18
|
-
}
|
19
|
-
}
|
20
|
-
}
|
@@ -1,22 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"httpRequest": {
|
3
|
-
"method": "POST",
|
4
|
-
"path": "/login",
|
5
|
-
"queryStringParameters": [
|
6
|
-
{
|
7
|
-
"name": "returnUrl",
|
8
|
-
"values": ["/account"]
|
9
|
-
}
|
10
|
-
],
|
11
|
-
"cookies": [
|
12
|
-
{
|
13
|
-
"name": "sessionId",
|
14
|
-
"value": "2By8LOhBmaW5nZXJwcmludCIlMDAzMW"
|
15
|
-
}
|
16
|
-
],
|
17
|
-
"body": {
|
18
|
-
"type": "STRING",
|
19
|
-
"value": "{username:'foo', password:'bar'}"
|
20
|
-
}
|
21
|
-
}
|
22
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"httpRequest": {
|
3
|
-
"method": "POST",
|
4
|
-
"path": "/login",
|
5
|
-
"queryStringParameters": [
|
6
|
-
{
|
7
|
-
"values": [
|
8
|
-
"/account"
|
9
|
-
],
|
10
|
-
"name": "returnUrl"
|
11
|
-
}
|
12
|
-
],
|
13
|
-
"cookies": [
|
14
|
-
{
|
15
|
-
"name": "sessionId",
|
16
|
-
"value": "2By8LOhBmaW5nZXJwcmludCIlMDAzMW"
|
17
|
-
}
|
18
|
-
],
|
19
|
-
"body": {
|
20
|
-
"type": "STRING",
|
21
|
-
"value": "{\"username\":\"foo\",\"password\":\"bar\"}"
|
22
|
-
}
|
23
|
-
},
|
24
|
-
"httpResponse": {
|
25
|
-
"statusCode": 401,
|
26
|
-
"headers": [
|
27
|
-
{
|
28
|
-
"values": [
|
29
|
-
"application/json; charset=utf-8"
|
30
|
-
],
|
31
|
-
"name": "Content-Type"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
"values": [
|
35
|
-
"public, max-age=86400"
|
36
|
-
],
|
37
|
-
"name": "Cache-Control"
|
38
|
-
}
|
39
|
-
],
|
40
|
-
"body": "{\"message\":\"incorrect username and password combination\"}",
|
41
|
-
"delay": {
|
42
|
-
"timeUnit": "SECONDS",
|
43
|
-
"value": 1
|
44
|
-
}
|
45
|
-
},
|
46
|
-
"times": {
|
47
|
-
"remainingTimes": 2,
|
48
|
-
"unlimited": "false"
|
49
|
-
}
|
50
|
-
}
|
@@ -1,22 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"method": "POST",
|
3
|
-
"path": "/login",
|
4
|
-
"queryStringParameters": [
|
5
|
-
{
|
6
|
-
"values": [
|
7
|
-
"/account"
|
8
|
-
],
|
9
|
-
"name": "returnUrl"
|
10
|
-
}
|
11
|
-
],
|
12
|
-
"cookies": [
|
13
|
-
{
|
14
|
-
"value": "2By8LOhBmaW5nZXJwcmludCIlMDAzMW",
|
15
|
-
"name": "sessionId"
|
16
|
-
}
|
17
|
-
],
|
18
|
-
"body": {
|
19
|
-
"type": "STRING",
|
20
|
-
"value": "{\"username\":\"foo\",\"password\":\"bar\"}"
|
21
|
-
}
|
22
|
-
}
|