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.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +79 -0
  4. data/README.md +89 -229
  5. data/Rakefile +8 -8
  6. data/docs/Body.md +7 -0
  7. data/docs/BodyWithContentType.md +7 -0
  8. data/docs/ConnectionOptions.md +12 -0
  9. data/docs/ControlApi.md +269 -0
  10. data/docs/Delay.md +9 -0
  11. data/docs/Expectation.md +7 -0
  12. data/docs/ExpectationApi.md +51 -0
  13. data/docs/Expectations.md +7 -0
  14. data/docs/HttpClassCallback.md +8 -0
  15. data/docs/HttpError.md +10 -0
  16. data/docs/HttpForward.md +11 -0
  17. data/docs/HttpObjectCallback.md +8 -0
  18. data/docs/HttpOverrideForwardedRequest.md +9 -0
  19. data/docs/HttpRequest.md +15 -0
  20. data/docs/HttpResponse.md +14 -0
  21. data/docs/HttpTemplate.md +10 -0
  22. data/docs/KeyToMultiValue.md +7 -0
  23. data/docs/KeyToValue.md +7 -0
  24. data/docs/Ports.md +8 -0
  25. data/docs/TimeToLive.md +10 -0
  26. data/docs/Times.md +9 -0
  27. data/docs/Verification.md +9 -0
  28. data/docs/VerificationSequence.md +8 -0
  29. data/docs/VerificationTimes.md +9 -0
  30. data/docs/VerifyApi.md +94 -0
  31. data/lib/mockserver-client.rb +62 -15
  32. data/lib/mockserver-client/api/control_api.rb +316 -0
  33. data/lib/mockserver-client/api/expectation_api.rb +73 -0
  34. data/lib/mockserver-client/api/verify_api.rb +127 -0
  35. data/lib/mockserver-client/api_client.rb +388 -0
  36. data/lib/mockserver-client/api_error.rb +38 -0
  37. data/lib/mockserver-client/configuration.rb +202 -0
  38. data/lib/mockserver-client/models/body.rb +174 -0
  39. data/lib/mockserver-client/models/body_with_content_type.rb +174 -0
  40. data/lib/mockserver-client/models/connection_options.rb +219 -0
  41. data/lib/mockserver-client/models/delay.rb +192 -0
  42. data/lib/mockserver-client/models/expectation.rb +174 -0
  43. data/lib/mockserver-client/models/expectations.rb +174 -0
  44. data/lib/mockserver-client/models/http_class_callback.rb +183 -0
  45. data/lib/mockserver-client/models/http_error.rb +201 -0
  46. data/lib/mockserver-client/models/http_forward.rb +244 -0
  47. data/lib/mockserver-client/models/http_object_callback.rb +183 -0
  48. data/lib/mockserver-client/models/http_override_forwarded_request.rb +192 -0
  49. data/lib/mockserver-client/models/http_request.rb +246 -0
  50. data/lib/mockserver-client/models/http_response.rb +237 -0
  51. data/lib/mockserver-client/models/http_template.rb +235 -0
  52. data/lib/mockserver-client/models/key_to_multi_value.rb +174 -0
  53. data/lib/mockserver-client/models/key_to_value.rb +174 -0
  54. data/lib/mockserver-client/models/ports.rb +185 -0
  55. data/lib/mockserver-client/models/time_to_live.rb +235 -0
  56. data/lib/mockserver-client/models/times.rb +192 -0
  57. data/lib/mockserver-client/models/verification.rb +192 -0
  58. data/lib/mockserver-client/models/verification_sequence.rb +185 -0
  59. data/lib/mockserver-client/models/verification_times.rb +192 -0
  60. data/lib/mockserver-client/version.rb +15 -0
  61. data/mockserver-client.gemspec +44 -36
  62. data/spec/api/control_api_spec.rb +102 -0
  63. data/spec/api/expectation_api_spec.rb +46 -0
  64. data/spec/api/verify_api_spec.rb +57 -0
  65. data/spec/api_client_spec.rb +226 -0
  66. data/spec/configuration_spec.rb +42 -0
  67. data/spec/models/body_spec.rb +35 -0
  68. data/spec/models/body_with_content_type_spec.rb +35 -0
  69. data/spec/models/connection_options_spec.rb +65 -0
  70. data/spec/models/delay_spec.rb +47 -0
  71. data/spec/models/expectation_spec.rb +35 -0
  72. data/spec/models/expectations_spec.rb +35 -0
  73. data/spec/models/http_class_callback_spec.rb +41 -0
  74. data/spec/models/http_error_spec.rb +53 -0
  75. data/spec/models/http_forward_spec.rb +63 -0
  76. data/spec/models/http_object_callback_spec.rb +41 -0
  77. data/spec/models/http_override_forwarded_request_spec.rb +47 -0
  78. data/spec/models/http_request_spec.rb +83 -0
  79. data/spec/models/http_response_spec.rb +77 -0
  80. data/spec/models/http_template_spec.rb +57 -0
  81. data/spec/models/key_to_multi_value_spec.rb +35 -0
  82. data/spec/models/key_to_value_spec.rb +35 -0
  83. data/spec/models/ports_spec.rb +41 -0
  84. data/spec/models/time_to_live_spec.rb +57 -0
  85. data/spec/models/times_spec.rb +47 -0
  86. data/spec/models/verification_sequence_spec.rb +41 -0
  87. data/spec/models/verification_spec.rb +47 -0
  88. data/spec/models/verification_times_spec.rb +47 -0
  89. data/spec/spec_helper.rb +103 -53
  90. metadata +225 -158
  91. data/.gitignore +0 -21
  92. data/.rubocop.yml +0 -7
  93. data/bin/mockserver +0 -9
  94. data/lib/cli.rb +0 -146
  95. data/lib/mockserver/abstract_client.rb +0 -111
  96. data/lib/mockserver/mock_server_client.rb +0 -46
  97. data/lib/mockserver/model/array_of.rb +0 -85
  98. data/lib/mockserver/model/body.rb +0 -56
  99. data/lib/mockserver/model/cookie.rb +0 -36
  100. data/lib/mockserver/model/delay.rb +0 -34
  101. data/lib/mockserver/model/enum.rb +0 -47
  102. data/lib/mockserver/model/expectation.rb +0 -139
  103. data/lib/mockserver/model/forward.rb +0 -41
  104. data/lib/mockserver/model/header.rb +0 -43
  105. data/lib/mockserver/model/parameter.rb +0 -43
  106. data/lib/mockserver/model/request.rb +0 -81
  107. data/lib/mockserver/model/response.rb +0 -45
  108. data/lib/mockserver/model/times.rb +0 -61
  109. data/lib/mockserver/proxy_client.rb +0 -9
  110. data/lib/mockserver/utility_methods.rb +0 -59
  111. data/lib/mockserver/version.rb +0 -5
  112. data/pom.xml +0 -118
  113. data/spec/fixtures/forward_mockserver.json +0 -7
  114. data/spec/fixtures/incorrect_login_response.json +0 -20
  115. data/spec/fixtures/post_login_request.json +0 -22
  116. data/spec/fixtures/register_expectation.json +0 -50
  117. data/spec/fixtures/retrieved_request.json +0 -22
  118. data/spec/fixtures/search_request.json +0 -6
  119. data/spec/fixtures/times_once.json +0 -6
  120. data/spec/integration/mock_client_integration_spec.rb +0 -82
  121. data/spec/mockserver/builder_spec.rb +0 -90
  122. data/spec/mockserver/mock_client_spec.rb +0 -80
  123. data/spec/mockserver/proxy_client_spec.rb +0 -38
@@ -1,36 +0,0 @@
1
- # encoding: UTF-8
2
- require 'hashie'
3
- require_relative './array_of'
4
-
5
- #
6
- # A class to model cookies in payloads.
7
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
8
- #
9
- module MockServer::Model
10
- # Model for cookie
11
- class Cookie < Hashie::Dash
12
- include Hashie::Extensions::MethodAccess
13
- include Hashie::Extensions::IgnoreUndeclared
14
- include Hashie::Extensions::Coercion
15
-
16
- property :name, required: true
17
- property :value, required: true
18
-
19
- coerce_key :name, String
20
- coerce_key :value, String
21
- end
22
-
23
- # A collection that only stores cookies
24
- class Cookies < ArrayOf
25
- def child_class
26
- Cookie
27
- end
28
- end
29
-
30
- # DSL methods for cookie
31
- module DSL
32
- def cookie(key, value)
33
- Cookie.new(name: key, value: value)
34
- end
35
- end
36
- end
@@ -1,34 +0,0 @@
1
- # encoding: UTF-8
2
- require_relative './enum'
3
-
4
- #
5
- # A model for a delay in a response.
6
- # @author: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
7
- #
8
- module MockServer::Model
9
- # Enum for time unit
10
- class TimeUnit < SymbolizedEnum
11
- def allowed_values
12
- [:NANOSECONDS, :MICROSECONDS, :MILLISECONDS, :SECONDS, :MINUTES, :HOURS, :DAYS]
13
- end
14
- end
15
-
16
- # Model a delay object
17
- class Delay < Hashie::Dash
18
- include Hashie::Extensions::MethodAccess
19
- include Hashie::Extensions::IgnoreUndeclared
20
- include Hashie::Extensions::Coercion
21
-
22
- property :time_unit, default: 'SECONDS'
23
- property :value, required: true
24
-
25
- coerce_key :time_unit, TimeUnit
26
- end
27
-
28
- # DSL methods related to delay model
29
- module DSL
30
- def delay_by(time_unit, value)
31
- Delay.new(time_unit: time_unit, value: value)
32
- end
33
- end
34
- end
@@ -1,47 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # A class to model a Java-like Enum.
4
- # To create an Enum extend this class and override :allowed_values method with allowed enum values.
5
- #
6
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
7
- #
8
- module MockServer::Model
9
- # Enum generic class
10
- class Enum
11
- # Create an instance of the enum from the value supplied
12
- # @param supplied_value [Object] value used to create instance of an enum
13
- # @raise [Exception] if the supplied value is not valid for this enum
14
- def initialize(supplied_value)
15
- supplied_value = pre_process_value(supplied_value)
16
- fail "Supplied value: #{supplied_value} is not valid. Allowed values are: #{allowed_values.inspect}" unless allowed_values.include?(supplied_value)
17
- @value = supplied_value
18
- end
19
-
20
- # @return [Array] a list of values allowed by this enum
21
- def allowed_values
22
- fail 'Override :allowed_values in Enum class'
23
- end
24
-
25
- # A pre-process hook for a value before it is stored
26
- # @param value [Object] a value used to instantiate the enum
27
- # @return [Object] the processed value. By default, a no-op implementation.
28
- def pre_process_value(value)
29
- value
30
- end
31
-
32
- # Override this for JSON representation
33
- def to_s
34
- @value.to_s
35
- end
36
- end
37
-
38
- # Subclass of Enum that has a list of symbols as allowed values.
39
- class SymbolizedEnum < Enum
40
- # Pre-process the value passed in and convert to a symbol
41
- # @param value [Object] a value used to instantiate the enum
42
- # @return [Symbol] a symbolized version of the value passed in (first calls to_s)
43
- def pre_process_value(value)
44
- value.to_s.to_sym
45
- end
46
- end
47
- end
@@ -1,139 +0,0 @@
1
- # encoding: UTF-8
2
- require_relative './array_of'
3
- require_relative './request'
4
- require_relative './response'
5
- require_relative './forward'
6
- require_relative './times'
7
- require_relative '../utility_methods'
8
-
9
- #
10
- # A class to model an expectation sent to the Mockserver instance.
11
- # See http://www.mock-server.com/#create-expectations for details.
12
- #
13
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
14
- #
15
- module MockServer
16
- HTTP_REQUEST = 'httpRequest' unless const_defined?(:HTTP_REQUEST)
17
- HTTP_RESPONSE = 'httpResponse' unless const_defined?(:HTTP_RESPONSE)
18
- HTTP_FORWARD = 'httpForward' unless const_defined?(:HTTP_FORWARD)
19
- HTTP_TIMES = 'times' unless const_defined?(:HTTP_TIMES)
20
-
21
- # Models
22
- module Model
23
- # Expectation model
24
- class Expectation
25
- include MockServer::UtilityMethods
26
- attr_accessor :times
27
-
28
- # Creates an expectation from a hash
29
- # @param payload [Hash] a hash representation of the expectation
30
- def populate_from_payload(payload)
31
- @request = payload[MockServer::HTTP_REQUEST]
32
- @request = Request.new(symbolize_keys(@request)) if @request
33
-
34
- @response = payload[MockServer::HTTP_RESPONSE]
35
- @response = Response.new(symbolize_keys(@response)) if @response
36
-
37
- @forward = payload[MockServer::HTTP_FORWARD]
38
- @forward = Forward.new(symbolize_keys(@forward)) if @forward
39
-
40
- @times = payload[MockServer::HTTP_TIMES]
41
- @times = Times.new(symbolize_keys(@times)) if @times
42
- end
43
-
44
- # Method to setup the request on the expectation object
45
- # @yieldparam [Request] the request that this expectation references
46
- # @return [Expectation] this object according to the the builder pattern
47
- def request(&_)
48
- if block_given?
49
- @request ||= Request.new
50
- yield @request
51
- end
52
- @request
53
- end
54
-
55
- # Method to setup the response on the expectation object
56
- # @yieldparam [Response] the response that this expectation references
57
- # @return [Expectation] this object according to the the builder pattern
58
- def response(&_)
59
- if block_given?
60
- @response ||= Response.new
61
- yield @response
62
- end
63
- @response
64
- end
65
-
66
- # Method to setup the request on the expectation object
67
- # @yieldparam [Forward] the forward object that this expectation references
68
- # @return [Expectation] this object according to the the builder pattern
69
- def forward(&_)
70
- if block_given?
71
- @forward ||= Forward.new
72
- yield @forward
73
- end
74
- @forward
75
- end
76
-
77
- # Setter for request
78
- # @param request [Request] a request object
79
- def request=(request)
80
- @request = Request.new(request)
81
- end
82
-
83
- # Setter for response
84
- # @param response [Response] a response object
85
- def response=(response)
86
- @response = Response.new(response)
87
- end
88
-
89
- # Setter for forward
90
- # @param forward [Forward] a forward object
91
- def forward=(forward)
92
- @forward = Forward.new(forward)
93
- end
94
-
95
- # Override to_json method
96
- # @return [String] the json representation for this object
97
- def to_json(*p)
98
- to_hash.to_json(*p)
99
- end
100
-
101
- # Convert to hash
102
- # @return [Hash] the hash representation for this object
103
- def to_hash
104
- {
105
- MockServer::HTTP_REQUEST => @request,
106
- MockServer::HTTP_RESPONSE => @response,
107
- MockServer::HTTP_FORWARD => @forward,
108
- MockServer::HTTP_TIMES => @times
109
- }
110
- end
111
- end
112
-
113
- # Class to store a list of mocks - useful for modeling retrieve endpoint result
114
- class Expectations < ArrayOf
115
- # Code is used to store HTTP status code returned from retrieve endpoint
116
- attr_accessor :code
117
-
118
- def child_class
119
- Expectation
120
- end
121
- end
122
-
123
- # DSL method for creating expectation
124
- module DSL
125
- def expectation(&_)
126
- expectation = Expectation.new
127
- yield expectation if block_given?
128
- expectation
129
- end
130
-
131
- def expectation_from_json(payload)
132
- expectation = Expectation.new
133
- yield expectation if block_given?
134
- expectation.populate_from_payload(payload)
135
- expectation
136
- end
137
- end
138
- end
139
- end
@@ -1,41 +0,0 @@
1
- # encoding: UTF-8
2
- require 'hashie'
3
- require_relative './enum'
4
-
5
- #
6
- # A class to model a forwarding on a request.
7
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
8
- #
9
- module MockServer::Model
10
- # Enum for a scheme used in a forward request
11
- class Scheme < SymbolizedEnum
12
- def allowed_values
13
- [:HTTP, :HTTPS]
14
- end
15
- end
16
-
17
- # Model for forwarding
18
- class Forward < Hashie::Dash
19
- include Hashie::Extensions::MethodAccess
20
- include Hashie::Extensions::IgnoreUndeclared
21
- include Hashie::Extensions::Coercion
22
-
23
- property :host, default: 'localhost'
24
- property :port, default: 80
25
- property :scheme, default: 'HTTP'
26
-
27
- coerce_key :host, String
28
- coerce_key :scheme, Scheme
29
- end
30
-
31
- # DSL methods for forward
32
- module DSL
33
- def forward(&_)
34
- obj = Forward.new
35
- yield obj if block_given?
36
- obj
37
- end
38
-
39
- alias_method :http_forward, :forward
40
- end
41
- end
@@ -1,43 +0,0 @@
1
- # encoding: UTF-8
2
- require 'hashie'
3
- require_relative './array_of'
4
-
5
- #
6
- # A class to model headers in payloads.
7
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
8
- #
9
- module MockServer::Model
10
- # A class that only stores strings
11
- class Strings < ArrayOf
12
- def child_class
13
- String
14
- end
15
- end
16
-
17
- # Model for header
18
- class Header < Hashie::Dash
19
- include Hashie::Extensions::MethodAccess
20
- include Hashie::Extensions::IgnoreUndeclared
21
- include Hashie::Extensions::Coercion
22
-
23
- property :name, required: true
24
- property :values, default: Strings.new([])
25
-
26
- coerce_key :name, String
27
- coerce_key :values, Strings
28
- end
29
-
30
- # A collection that only stores headers
31
- class Headers < ArrayOf
32
- def child_class
33
- Header
34
- end
35
- end
36
-
37
- # DSL methods for header
38
- module DSL
39
- def header(key, *value)
40
- Header.new(name: key, values: value)
41
- end
42
- end
43
- end
@@ -1,43 +0,0 @@
1
- # encoding: UTF-8
2
- require 'hashie'
3
- require_relative './array_of'
4
-
5
- #
6
- # A class to model parameters in payloads.
7
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
8
- #
9
- module MockServer::Model
10
- # A class that only stores strings
11
- class Strings < ArrayOf
12
- def child_class
13
- String
14
- end
15
- end
16
-
17
- # Model for parameter
18
- class Parameter < Hashie::Dash
19
- include Hashie::Extensions::MethodAccess
20
- include Hashie::Extensions::IgnoreUndeclared
21
- include Hashie::Extensions::Coercion
22
-
23
- property :name, required: true
24
- property :values, default: Strings.new([])
25
-
26
- coerce_key :name, String
27
- coerce_key :values, Strings
28
- end
29
-
30
- # A collection that only stores parameters
31
- class Parameters < ArrayOf
32
- def child_class
33
- Parameter
34
- end
35
- end
36
-
37
- # DSL methods for parameter
38
- module DSL
39
- def parameter(key, *value)
40
- Parameter.new(name: key, values: value)
41
- end
42
- end
43
- end
@@ -1,81 +0,0 @@
1
- # encoding: UTF-8
2
- require 'hashie'
3
- require_relative './parameter'
4
- require_relative './header'
5
- require_relative './cookie'
6
- require_relative './body'
7
- require_relative './enum'
8
- require 'base64'
9
- #
10
- # A class to model a request in an expectation.
11
- # @author:: Nayyara Samuel (mailto: nayyara.samuel@opower.com)
12
- #
13
- module MockServer::Model
14
- # Enum for HTTP methods
15
- class HTTPMethod < SymbolizedEnum
16
- def allowed_values
17
- [:GET, :POST, :PUT, :DELETE]
18
- end
19
- end
20
-
21
- # Request model
22
- class Request < Hashie::Trash
23
- include Hashie::Extensions::MethodAccess
24
- include Hashie::Extensions::IgnoreUndeclared
25
- include Hashie::Extensions::Coercion
26
-
27
- ALLOWED_METHODS = [:GET, :POST, :PUT, :DELETE]
28
-
29
- property :method, required: true, default: :GET
30
- property :path, required: true, default: ''
31
- property :query_string_parameters, default: Parameters.new([])
32
- property :cookies, default: Cookies.new([])
33
- property :headers, default: Headers.new([])
34
- property :body, transform_with: (lambda do |body|
35
- is_base_64_body = body && body.type == :BINARY
36
- body_value = is_base_64_body ? Base64.decode64(body.value) : body.value
37
- Body.new(type: :STRING, value: body_value)
38
- end)
39
-
40
- coerce_key :method, HTTPMethod
41
- coerce_key :path, String
42
- coerce_key :query_string_parameters, Parameters
43
- coerce_key :cookies, Cookies
44
- coerce_key :headers, Headers
45
- coerce_key :body, Body
46
-
47
- # Creates a request from a hash
48
- # @param payload [Hash] a hash representation of the request
49
- def populate_from_payload(payload)
50
- @request = payload[MockServer::HTTP_REQUEST]
51
- @request = Request.new(symbolize_keys(@request)) if @request
52
- end
53
- end
54
-
55
- # Class to store a list of mocks - useful for modeling retrieve endpoint result
56
- class Requests < ArrayOf
57
- # Code is used to store HTTP status code returned from retrieve endpoint
58
- attr_accessor :code
59
-
60
- def child_class
61
- Request
62
- end
63
- end
64
-
65
- # DSL methods related to requests
66
- module DSL
67
- def request(method, path, &_)
68
- obj = Request.new(method: method, path: path)
69
- yield obj if block_given?
70
- obj
71
- end
72
-
73
- def request_from_json(payload)
74
- request = Request.new(symbolize_keys(payload))
75
- yield request if block_given?
76
- request
77
- end
78
-
79
- alias_method :http_request, :request
80
- end
81
- end