Skip to content

Commit aea28ec

Browse files
committed
Proxy. (+1 squashed commit)
Squashed commits: [cd4fa45] Default oauth2 options.
1 parent f591ca9 commit aea28ec

File tree

2 files changed

+59
-61
lines changed

2 files changed

+59
-61
lines changed

lib/jira/oauth2_client.rb

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -107,20 +107,15 @@ class Oauth2Client < RequestClient
107107
OAUTH2_CLIENT_OPTIONS_KEYS =
108108
%i[auth_scheme authorize_url redirect_uri token_url max_redirects site
109109
use_ssl ssl_verify_mode ssl_version]
110-
# @private
111-
DEFAULT_AUTHORIZE_OPTIONS = {
112-
authorize_url: '/rest/oauth2/latest/authorize',
113-
auth_scheme: 'request_body'
114-
}.freeze
110+
115111
# @private
116112
DEFAULT_OAUTH2_CLIENT_OPTIONS = {
113+
use_ssl: true,
117114
auth_scheme: 'request_body',
118115
authorize_url: '/rest/oauth2/latest/authorize',
119-
token_url: '/rest/oauth2/latest/token'
120-
}.freeze
121-
DEFAULT_OPTIONS = {
122116
token_url: '/rest/oauth2/latest/token',
123117
}.freeze
118+
124119
attr_reader :prior_grant_type, :access_token
125120
# attr_reader :options
126121
attr_reader :oauth2_client_options, :client_id, :client_secret, :csrf_state
@@ -137,31 +132,25 @@ class Oauth2Client < RequestClient
137132
# @option options [String] :proxy_user Proxy user
138133
# @option options [String] :proxy_password Proxy Password
139134
def initialize(options = {})
140-
@options = init_oauth2_options(options)
135+
# @options = init_oauth2_options(options)
136+
init_oauth2_options(options)
141137
if options.has_key?(:access_token_options)
142138
@access_token = access_token_from_options(options[:access_token_options])
143139
end
144140
end
145141

146142
# @private
147143
private def init_oauth2_options(options)
148-
# byebug
149-
options_local = options.dup
150-
@client_id = options_local.delete(:client_id)
151-
@client_secret = options_local.delete(:client_secret)
144+
@client_id = options[:client_id]
145+
@client_secret = options[:client_secret]
152146

153-
options_local = DEFAULT_OAUTH2_CLIENT_OPTIONS.merge(options)
154-
# @oauth2_client_options = DEFAULT_AUTHORIZE_OPTIONS.merge(options_local.delete(:oauth2_client_options) || {})
155-
# @oauth2_client_options = DEFAULT_AUTHORIZE_OPTIONS.merge(options_local.delete(:oauth2_client_options) || {})
156-
@oauth2_client_options = options_local.slice(*OAUTH2_CLIENT_OPTIONS_KEYS)
147+
@oauth2_client_options = DEFAULT_OAUTH2_CLIENT_OPTIONS.merge(options).slice(*OAUTH2_CLIENT_OPTIONS_KEYS)
157148

158149

159150
@oauth2_client_options[:connection_opts] ||= {}
160151

161-
162152
@oauth2_client_options[:connection_opts][:headers] ||= options[:default_headers] if options[:default_headers]
163153

164-
165154
if options[:use_ssl]
166155
@oauth2_client_options[:connection_opts][:ssl] ||= {}
167156
@oauth2_client_options[:connection_opts][:ssl][:version] = options[:ssl_version] if options[:ssl_version]
@@ -171,10 +160,9 @@ def initialize(options = {})
171160
@oauth2_client_options[:connection_opts][:ssl][:client_key] = options[:ssl_client_key] if options[:ssl_client_key]
172161
end
173162

174-
175-
proxy_uri = oauth2_client_options.delete(:proxy_uri)
176-
proxy_user = oauth2_client_options.delete(:proxy_user)
177-
proxy_password = oauth2_client_options.delete(:proxy_password)
163+
proxy_uri = options[:proxy_uri]
164+
proxy_user = options[:proxy_user]
165+
proxy_password = options[:proxy_password]
178166
if proxy_uri
179167
@oauth2_client_options[:connection_opts][:proxy] ||= {}
180168
proxy_opts = @oauth2_client_options[:connection_opts][:proxy]
@@ -186,13 +174,6 @@ def initialize(options = {})
186174
@oauth2_client_options
187175
end
188176

189-
# @private
190-
# private def init_oauth2_client(oauth2_client_options)
191-
# OAuth2::Client.new(client_id,
192-
# client_secret,
193-
# oauth2_client_options)
194-
# end
195-
196177
def oauth2_client
197178
@oauth2_client ||=
198179
OAuth2::Client.new(client_id,

spec/jira/oauth2_client_spec.rb

Lines changed: 48 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,19 @@ def query_params_to_h(uri)
3030
let(:client_key) { 'jira_client.key' }
3131
let(:minimum_options) do
3232
{
33-
33+
site: site,
34+
client_id: client_id,
35+
client_secret: client_secret,
36+
redirect_uri: redirect_uri,
3437
}
3538
end
3639
let(:full_options) do
3740
minimum_options.merge(
3841
{
39-
client_id: client_id,
40-
client_secret: client_secret,
41-
site: site,
4242
use_ssl: ssl_flag,
4343
auth_scheme: auth_scheme,
4444
authorize_site: auth_site,
4545
authorize_url: authorize_url,
46-
redirect_uri: redirect_uri,
4746
token_url: token_url,
4847
max_redirects: max_redirects,
4948
default_headers: headers,
@@ -70,13 +69,12 @@ def query_params_to_h(uri)
7069
describe '.new' do
7170
context 'setting options' do
7271
subject(:request_client) do
73-
# JIRA::Oauth2Client.new(client_id: client_id, client_secret: client_secret, site: site,
74-
# oauth2_client_options: { site: auth_site })
7572
JIRA::Oauth2Client.new(full_options)
7673
end
7774

7875
it 'sets oauth2 client options' do
79-
# expect(request_client.options[:site]).to eq(site)
76+
expect(request_client.class).to eq(JIRA::Oauth2Client)
77+
expect(request_client.oauth2_client.class).to eq(OAuth2::Client)
8078
expect(request_client.client_id).to eq(client_id)
8179
expect(request_client.client_secret).to eq(client_secret)
8280
expect(request_client.oauth2_client_options[:site]).to eq(site)
@@ -92,6 +90,9 @@ def query_params_to_h(uri)
9290
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_cert)).to eq(client_cert)
9391
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_key)).to eq(client_key)
9492
expect(request_client.oauth2_client_options.dig(:connection_opts, :headers)).to eq(headers)
93+
expect(request_client.oauth2_client.site).to eq(site)
94+
expect(request_client.oauth2_client.id).to eq(client_id)
95+
expect(request_client.oauth2_client.secret).to eq(client_secret)
9596
# authorize_url: 'oauth/authorize',
9697
# redirect_uri: ?
9798
# authorize_url: ?
@@ -129,48 +130,64 @@ def query_params_to_h(uri)
129130

130131
context 'using default options' do
131132
subject(:request_client) do
132-
# JIRA::Oauth2Client.new(client_id: client_id, client_secret: client_secret, site: site,
133-
# oauth2_client_options: { site: auth_site })
134133
JIRA::Oauth2Client.new(minimum_options)
135134
end
136135

137136
it 'uses default oauth2 client options' do
138-
139-
end
140-
end
141-
142-
context 'initialize oauth2 request client' do
143-
it 'creates a Oauth2::Client on initialize' do
137+
expect(request_client.class).to eq(JIRA::Oauth2Client)
144138
expect(request_client.oauth2_client.class).to eq(OAuth2::Client)
145-
expect(request_client.oauth2_client.site).to eq(auth_site)
139+
expect(request_client.client_id).to eq(client_id)
140+
expect(request_client.client_secret).to eq(client_secret)
141+
expect(request_client.oauth2_client_options[:site]).to eq(site)
142+
expect(request_client.oauth2_client_options[:use_ssl]).to eq(JIRA::Oauth2Client::DEFAULT_OAUTH2_CLIENT_OPTIONS[:use_ssl])
143+
expect(request_client.oauth2_client_options[:auth_scheme]).to eq(JIRA::Oauth2Client::DEFAULT_OAUTH2_CLIENT_OPTIONS[:auth_scheme])
144+
expect(request_client.oauth2_client_options[:authorize_url]).to eq(JIRA::Oauth2Client::DEFAULT_OAUTH2_CLIENT_OPTIONS[:authorize_url])
145+
expect(request_client.oauth2_client_options[:token_url]).to eq(JIRA::Oauth2Client::DEFAULT_OAUTH2_CLIENT_OPTIONS[:token_url])
146+
expect(request_client.oauth2_client_options[:redirect_uri]).to eq(redirect_uri)
147+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :version)).to be_nil
148+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :verify)).to be_nil
149+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :ca_path)).to be_nil
150+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_cert)).to be_nil
151+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_key)).to be_nil
152+
expect(request_client.oauth2_client_options.dig(:connection_opts, :headers)).to be_nil
153+
expect(request_client.oauth2_client.site).to eq(site)
146154
expect(request_client.oauth2_client.id).to eq(client_id)
147155
expect(request_client.oauth2_client.secret).to eq(client_secret)
148-
expect(request_client.oauth2_client.options[:auth_scheme]).to eq(JIRA::Oauth2Client::DEFAULT_AUTHORIZE_OPTIONS[:auth_scheme])
149-
expect(request_client.oauth2_client.options[:authorize_url]).to eq(JIRA::Oauth2Client::DEFAULT_AUTHORIZE_OPTIONS[:authorize_url])
150156
end
151157
end
152158

153159
context 'using a proxy' do
154-
let(:proxy_site) { 'https://auth_server' }
160+
let(:proxy_site) { 'https://proxy_server' }
155161
let(:proxy_user) { 'ironman' }
156162
let(:proxy_password) { 'iamironman' }
157-
subject(:proxy_request_client) do
158-
JIRA::Oauth2Client.new(client_id: client_id, client_secret: client_secret, site: site,
159-
oauth2_client_options: { site: auth_site,
160-
proxy_uri: proxy_site,
161-
proxy_user: proxy_user,
162-
proxy_password: proxy_password })
163+
subject(:request_client) do
164+
JIRA::Oauth2Client.new(proxy_options)
163165
end
164166

165167
it 'creates a proxy configured Oauth2::Client on initialize' do
168+
expect(request_client.class).to eq(JIRA::Oauth2Client)
166169
expect(request_client.oauth2_client.class).to eq(OAuth2::Client)
167-
expect(request_client.oauth2_client.site).to eq(auth_site)
170+
expect(request_client.client_id).to eq(client_id)
171+
expect(request_client.client_secret).to eq(client_secret)
172+
expect(request_client.oauth2_client_options[:site]).to eq(site)
173+
expect(request_client.oauth2_client_options[:use_ssl]).to eq(ssl_flag)
174+
expect(request_client.oauth2_client_options[:auth_scheme]).to eq(auth_scheme)
175+
expect(request_client.oauth2_client_options[:authorize_url]).to eq(authorize_url)
176+
expect(request_client.oauth2_client_options[:redirect_uri]).to eq(redirect_uri)
177+
expect(request_client.oauth2_client_options[:token_url]).to eq(token_url)
178+
expect(request_client.oauth2_client_options[:max_redirects]).to eq(max_redirects)
179+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :version)).to eq(ssl_version)
180+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :verify)).to eq(ssl_verify)
181+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :ca_path)).to eq(ca_path)
182+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_cert)).to eq(client_cert)
183+
expect(request_client.oauth2_client_options.dig(:connection_opts, :ssl, :client_key)).to eq(client_key)
184+
expect(request_client.oauth2_client_options.dig(:connection_opts, :headers)).to eq(headers)
185+
expect(request_client.oauth2_client.site).to eq(site)
168186
expect(request_client.oauth2_client.id).to eq(client_id)
169187
expect(request_client.oauth2_client.secret).to eq(client_secret)
170-
# expect(request_client.oauth2_client.options[:token_url]).to eq(JIRA::Oauth2Client::DEFAULT_OPTIONS[:token_url])
171-
expect(proxy_request_client.oauth2_client.options.dig(:connection_opts, :proxy, :uri)).to eq(proxy_site)
172-
expect(proxy_request_client.oauth2_client.options.dig(:connection_opts, :proxy, :user)).to eq(proxy_user)
173-
expect(proxy_request_client.oauth2_client.options.dig(:connection_opts, :proxy, :password)).to eq(proxy_password)
188+
expect(request_client.oauth2_client.options.dig(:connection_opts, :proxy, :uri)).to eq(proxy_site)
189+
expect(request_client.oauth2_client.options.dig(:connection_opts, :proxy, :user)).to eq(proxy_user)
190+
expect(request_client.oauth2_client.options.dig(:connection_opts, :proxy, :password)).to eq(proxy_password)
174191
end
175192
end
176193

0 commit comments

Comments
 (0)