rb-net_http-client 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ describe NetHTTP::Request::Schema do
4
+ # TODO: Add unit tests around input validation.
5
+ # it '' do
6
+ #
7
+ # end
8
+ end
@@ -0,0 +1,97 @@
1
+ require 'webmock/rspec'
2
+ require_relative '../../../spec_helper'
3
+
4
+ describe NetHTTP::Response::Ext do
5
+ it 'performs a POST request for a valid oAuth token from ESG' do
6
+ stub_request(:post, 'https://esg-qa-oauth2-internal.fmr.com/as/resourceOwner').
7
+ with(body: successful_post_request_token_req_body,
8
+ headers: { 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8' }).
9
+ to_return(status: 200,
10
+ body: successful_post_request_token_resp_body,
11
+ headers: { 'date' => ['Thu, 10 Aug 2017 14:09:19 GMT'],
12
+ 'server' => [''],
13
+ 'connection' => ['close'],
14
+ 'x-correlationid' => ['Id-0f698c59b97c8df3c572145c 0'],
15
+ 'accept' => ['*/*'],
16
+ 'host' => ['esg-qa-oauth2-internal.fmr.com'],
17
+ 'user-agent' => ['Ruby'],
18
+ 'cache-control' => ['no-store'],
19
+ 'content-type' => ['application/json'],
20
+ 'pragma' => ['no-cache'] })
21
+
22
+ client = NetHTTP.client(post_request_token_client_opts)
23
+ resp = client.call_web_service(post_request_token_req_opts)
24
+
25
+ expect(resp.methods.include?(:logger)).to eq(true)
26
+ expect(resp.methods.include?(:resp_body)).to eq(true)
27
+ expect(resp.methods.include?(:resp_code)).to eq(true)
28
+ expect(resp.methods.include?(:headers)).to eq(true)
29
+ expect(resp.methods.include?(:headers_hash)).to eq(true)
30
+ expect(resp.methods.include?(:body_hash)).to eq(true)
31
+ expect(resp.methods.include?(:valid_json?)).to eq(true)
32
+ expect(resp.methods.include?(:valid_xml?)).to eq(true)
33
+ expect(resp.methods.include?(:valid_html?)).to eq(true)
34
+ expect(resp.methods.include?(:resp_headers)).to eq(true)
35
+ expect(resp.methods.include?(:resp_headers_hash)).to eq(true)
36
+ expect(resp.methods.include?(:resp_body_hash)).to eq(true)
37
+ end
38
+
39
+ it 'the logger object is maintained from client to core object' do
40
+ stub_request(:post, 'https://esg-qa-oauth2-internal.fmr.com/as/resourceOwner').
41
+ with(body: successful_post_request_token_req_body,
42
+ headers: { 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8' }).
43
+ to_return(status: 200,
44
+ body: successful_post_request_token_resp_body,
45
+ headers: { 'date' => ['Thu, 10 Aug 2017 14:09:19 GMT'],
46
+ 'server' => [''],
47
+ 'connection' => ['close'],
48
+ 'x-correlationid' => ['Id-0f698c59b97c8df3c572145c 0'],
49
+ 'accept' => ['*/*'],
50
+ 'host' => ['esg-qa-oauth2-internal.fmr.com'],
51
+ 'user-agent' => ['Ruby'],
52
+ 'cache-control' => ['no-store'],
53
+ 'content-type' => ['application/json'],
54
+ 'pragma' => ['no-cache'] })
55
+
56
+ client = NetHTTP.client(post_request_token_client_opts)
57
+ resp = client.call_web_service(post_request_token_req_opts)
58
+
59
+ expect(client.logger == resp.logger).to eq(false)
60
+ expect(client.logger.class).to eq(Logger)
61
+ expect(resp.logger.class).to eq(Logger)
62
+ end
63
+
64
+ private
65
+
66
+ # post
67
+ def post_request_token_client_opts
68
+ opts = {}
69
+ opts[:uri] = 'https://esg-qa-oauth2-internal.fmr.com/as/resourceOwner'
70
+ opts
71
+ end
72
+
73
+ def post_request_token_req_opts
74
+ opts = {}
75
+
76
+ user_id = ENV['USER_ID']
77
+ password = ENV['PASSWORD']
78
+ client_id = 'd6bcd5e1-29d7-4ec0-9b96-215b3a317fd6'
79
+ client_secret = 'e391e6aa-4d60-4470-b351-0f84f11495a8'
80
+ grant_type = 'password'
81
+ scope = 'AppIdClaimsTrust'
82
+
83
+ opts[:req_method] = 'post'
84
+ opts[:req_headers] = { 'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8' }
85
+ opts[:req_body] = "username=#{user_id}&password=#{password}&client_id=#{client_id}&client_secret=#{client_secret}&grant_type=#{grant_type}&scope=#{scope}"
86
+ opts[:req_path] = '/as/resourceOwner'
87
+ opts
88
+ end
89
+
90
+ def successful_post_request_token_req_body
91
+ "username=#{ENV['USER_ID']}&password=#{ENV['PASSWORD']}&client_id=d6bcd5e1-29d7-4ec0-9b96-215b3a317fd6&client_secret=e391e6aa-4d60-4470-b351-0f84f11495a8&grant_type=password&scope=AppIdClaimsTrust"
92
+ end
93
+
94
+ def successful_post_request_token_resp_body
95
+ '{"access_token":"l3k0QJfU3k6L0XXyfe5MJBjy5672hgau6aJA1BMAwYDwmVkeK00M7h","token_type":"Bearer","expires_in":43201,"refresh_token":"x9gvXcGF1zKD4ZpwYA6T9n9vHdc5CB1xednEPPIqU6yWic","scope":"AppIdClaimsTrust","Environment":"QA","secondLvlAuthzId":"","webAuthAppID":"AP118499"}'
96
+ end
97
+ end
@@ -0,0 +1,10 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe NetHTTP::VERSION do
4
+ it 'should have a valid version' do
5
+ expect(NetHTTP::VERSION.nil?).to eq(false)
6
+ expect(NetHTTP::VERSION.empty?).to eq(false)
7
+ expect(NetHTTP::VERSION.class).to eq(String)
8
+ expect(NetHTTP::VERSION.frozen?).to eq(true)
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,252 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rb-net_http-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Bostian
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-validation
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.13.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.13.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.10.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.10.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dotenv
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.7.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.7.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 12.3.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 12.3.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.8.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.8.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec_junit_formatter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.4.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.4.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.65.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.65.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-checkstyle_formatter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.4.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.4.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.16.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.16.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov-json
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov-rcov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.2.3
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.2.3
181
+ - !ruby/object:Gem::Dependency
182
+ name: webmock
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 3.5.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 3.5.0
195
+ description: A Simple Ruby HTTP Client built on top of the Ruby Net HTTP standard
196
+ library.
197
+ email:
198
+ - rab0309@gmail.com
199
+ executables: []
200
+ extensions: []
201
+ extra_rdoc_files: []
202
+ files:
203
+ - lib/client/client.rb
204
+ - lib/client/ext.rb
205
+ - lib/client/schema.rb
206
+ - lib/core/core.rb
207
+ - lib/core/utilities.rb
208
+ - lib/rb-net_http-client.rb
209
+ - lib/request/ext.rb
210
+ - lib/request/schema.rb
211
+ - lib/response/ext.rb
212
+ - lib/version.rb
213
+ - spec/integration/net_http/client/client_ext_spec.rb
214
+ - spec/integration/net_http/client/client_spec.rb
215
+ - spec/integration/net_http/net_http_core_spec.rb
216
+ - spec/integration/net_http/request/request_ext_spec.rb
217
+ - spec/integration/net_http/response/response_ext_spec.rb
218
+ - spec/integration/net_http/version_spec.rb
219
+ - spec/unit/net_http/client/client_ext_spec.rb
220
+ - spec/unit/net_http/client/client_schema_spec.rb
221
+ - spec/unit/net_http/client/client_spec.rb
222
+ - spec/unit/net_http/net_http_core_spec.rb
223
+ - spec/unit/net_http/request/request_ext_spec.rb
224
+ - spec/unit/net_http/request/request_schema_spec.rb
225
+ - spec/unit/net_http/response/response_ext_spec.rb
226
+ - spec/unit/net_http/version_spec.rb
227
+ homepage: https://github.com/rabos5/rb-net_http-client
228
+ licenses:
229
+ - MIT
230
+ metadata:
231
+ allowed_push_host: https://rubygems.org/
232
+ post_install_message:
233
+ rdoc_options: []
234
+ require_paths:
235
+ - lib
236
+ required_ruby_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - "~>"
239
+ - !ruby/object:Gem::Version
240
+ version: '2.5'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubyforge_project:
248
+ rubygems_version: 2.7.7
249
+ signing_key:
250
+ specification_version: 4
251
+ summary: A Simple Ruby HTTP Client
252
+ test_files: []