Skip to content

Commit 12b6110

Browse files
committed
Improve client authentication method specs and assert request_parameters for client_secret_post
1 parent e63e18c commit 12b6110

File tree

4 files changed

+34
-25
lines changed

4 files changed

+34
-25
lines changed

spec/lib/oauth/client_authentication/client_secret_basic_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
RSpec.describe Doorkeeper::OAuth::ClientAuthentication::ClientSecretBasic do
66
describe 'matches_request?' do
77
it "matches if the request has basic authorization" do
8-
request = mock_request({}, ActionController::HttpAuthentication::Basic.encode_credentials('username', 'password'))
8+
request = mock_request authorization: ActionController::HttpAuthentication::Basic.encode_credentials('username', 'password')
99

1010
expect(described_class.matches_request?(request)).to be true
1111
end
1212

1313
it "doesn't match if the request has bearer authorization" do
14-
request = mock_request({}, "Bearer foobar")
14+
request = mock_request authorization: "Bearer foobar"
1515

1616
expect(described_class.matches_request?(request)).to_not be true
1717
end
1818
end
1919

2020
describe 'authenticate' do
2121
it "returns credentials using the values from the authorization header" do
22-
request = mock_request({}, ActionController::HttpAuthentication::Basic.encode_credentials('client_id', 'client_secret'))
22+
request = mock_request authorization: ActionController::HttpAuthentication::Basic.encode_credentials('client_id', 'client_secret')
2323

2424
credentials = described_class.authenticate(request)
2525

@@ -29,7 +29,7 @@
2929
end
3030

3131
it "returns nil if the client_secret is missing from the authorization header" do
32-
request = mock_request({}, ActionController::HttpAuthentication::Basic.encode_credentials('client_id', ''))
32+
request = mock_request authorization: ActionController::HttpAuthentication::Basic.encode_credentials('client_id', '')
3333

3434
credentials = described_class.authenticate(request)
3535

spec/lib/oauth/client_authentication/client_secret_post_spec.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,38 @@
55
RSpec.describe Doorkeeper::OAuth::ClientAuthentication::ClientSecretPost do
66
describe 'matches_request?' do
77
it "matches if the request doesn't have authorization" do
8-
request = mock_request({
8+
request = mock_request request_parameters: {
99
client_id: '1234',
1010
client_secret: '5678'
11-
})
11+
}
1212

1313
expect(described_class.matches_request?(request)).to be true
1414
end
1515

1616
it "doesn't match if the request is missing client_secret" do
17-
request = mock_request({
17+
request = mock_request request_parameters: {
1818
client_id: '1234'
19-
})
19+
}
20+
21+
expect(described_class.matches_request?(request)).to_not be true
22+
end
23+
24+
it "doesn't match if the parameters are in the query parameters" do
25+
request = mock_request query_parameters: {
26+
client_id: '1234',
27+
client_secret: '5678'
28+
}
2029

2130
expect(described_class.matches_request?(request)).to_not be true
2231
end
2332
end
2433

2534
describe 'authenticate' do
2635
it "returns credentials using the values from the request parameters" do
27-
request = mock_request({
36+
request = mock_request request_parameters: {
2837
client_id: 'client_id',
2938
client_secret: 'client_secret'
30-
})
39+
}
3140

3241
credentials = described_class.authenticate(request)
3342

spec/lib/oauth/client_authentication/none_spec.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,36 @@
55
RSpec.describe Doorkeeper::OAuth::ClientAuthentication::None do
66
describe 'matches_request?' do
77
it "matches if the request doesn't have authorization or client_secret" do
8-
request = mock_request({
8+
request = mock_request request_parameters: {
99
client_id: '1234'
10-
})
10+
}
1111

1212
expect(described_class.matches_request?(request)).to be true
1313
end
1414

1515
it "doesn't match if the request has client_secret" do
16-
request = mock_request({
16+
request = mock_request request_parameters: {
1717
client_id: '1234',
1818
client_secret: "5678"
19-
})
19+
}
2020

2121
expect(described_class.matches_request?(request)).to_not be true
2222
end
2323

2424
it "doesn't match if the request has authorization" do
25-
request = mock_request({
25+
request = mock_request request_parameters: {
2626
client_id: '1234'
27-
}, ActionController::HttpAuthentication::Basic.encode_credentials('username', 'password'))
27+
}, authorization: ActionController::HttpAuthentication::Basic.encode_credentials('username', 'password')
2828

2929
expect(described_class.matches_request?(request)).to_not be true
3030
end
3131
end
3232

3333
describe 'authenticate' do
3434
it "returns credentials using the values from the request parameters, without a secret" do
35-
request = mock_request({
35+
request = mock_request request_parameters: {
3636
client_id: 'client_id'
37-
})
37+
}
3838

3939
credentials = described_class.authenticate(request)
4040

@@ -44,10 +44,10 @@
4444
end
4545

4646
it "ignores the client_secret if set" do
47-
request = mock_request({
47+
request = mock_request request_parameters: {
4848
client_id: 'client_id',
4949
client_secret: 'client_secret'
50-
})
50+
}
5151

5252
credentials = described_class.authenticate(request)
5353

spec/support/helpers/request_mock_helper.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module RequestMockHelper
22
# I'm not sure if there's a better way to get a mock rack request for
33
# testing. Here we don't need a full request spec, but we do need enough to
44
# check that the logic of these classes works.
5-
def mock_request(params, credentials = nil)
5+
def mock_request(request_parameters: {}, query_parameters: {}, authorization: nil)
66
request = ActionDispatch::Request.new({
77
"REQUEST_METHOD"=>"POST",
88
"SERVER_NAME"=>"example.org",
@@ -12,12 +12,12 @@ def mock_request(params, credentials = nil)
1212
"HTTP_HOST"=> "example.org",
1313
"ORIGINAL_FULLPATH" => "/test",
1414
"action_dispatch.remote_ip" => "127.0.0.1",
15-
"action_dispatch.request.query_parameters" => {},
16-
"action_dispatch.request.request_parameters" => params
15+
"action_dispatch.request.query_parameters" => query_parameters,
16+
"action_dispatch.request.request_parameters" => request_parameters
1717
})
1818

19-
unless credentials.nil?
20-
request.env["HTTP_AUTHORIZATION"] = credentials
19+
unless authorization.nil?
20+
request.env["HTTP_AUTHORIZATION"] = authorization
2121
end
2222

2323
request

0 commit comments

Comments
 (0)