1
1
require 'spec_helper'
2
2
3
3
describe OpenIDConnect ::AccessToken do
4
+ subject { token }
5
+ let :client do
6
+ OpenIDConnect ::Client . new (
7
+ :identifier => 'client_id' ,
8
+ :host => 'server.example.com'
9
+ )
10
+ end
11
+ let :token do
12
+ OpenIDConnect ::AccessToken . new (
13
+ :access_token => 'access_token' ,
14
+ :client => client
15
+ )
16
+ end
17
+ its ( :token_type ) { should == :bearer }
18
+
4
19
describe '#user_info!' do
5
- it :TODO
20
+ it 'should return OpenIDConnect::ResponseObject::UserInfo::OpenID' do
21
+ mock_json :get , client . user_info_uri , 'user_info/openid' , :HTTP_AUTHORIZATION => 'Bearer access_token' do
22
+ token . user_info! . should be_a OpenIDConnect ::ResponseObject ::UserInfo ::OpenID
23
+ end
24
+ end
25
+
26
+ describe 'error handling' do
27
+ context 'when bad_request' do
28
+ it 'should raise OpenIDConnect::Forbidden' do
29
+ mock_json :get , client . user_info_uri , 'errors/invalid_request' , :HTTP_AUTHORIZATION => 'Bearer access_token' , :status => 400 do
30
+ expect { token . user_info! } . should raise_error OpenIDConnect ::BadRequest
31
+ end
32
+ end
33
+ end
34
+
35
+ context 'when unauthorized' do
36
+ it 'should raise OpenIDConnect::Unauthorized' do
37
+ mock_json :get , client . user_info_uri , 'errors/invalid_access_token' , :HTTP_AUTHORIZATION => 'Bearer access_token' , :status => 401 do
38
+ expect { token . user_info! } . should raise_error OpenIDConnect ::Unauthorized
39
+ end
40
+ end
41
+ end
42
+
43
+ context 'when forbidden' do
44
+ it 'should raise OpenIDConnect::Forbidden' do
45
+ mock_json :get , client . user_info_uri , 'errors/insufficient_scope' , :HTTP_AUTHORIZATION => 'Bearer access_token' , :status => 403 do
46
+ expect { token . user_info! } . should raise_error OpenIDConnect ::Forbidden
47
+ end
48
+ end
49
+ end
50
+
51
+ context 'when unknown' do
52
+ it 'should raise OpenIDConnect::HttpError' do
53
+ mock_json :get , client . user_info_uri , 'errors/unknown' , :HTTP_AUTHORIZATION => 'Bearer access_token' , :status => 500 do
54
+ expect { token . user_info! } . should raise_error OpenIDConnect ::HttpError
55
+ end
56
+ end
57
+ end
58
+ end
6
59
end
7
60
8
61
describe '#id_token!' do
9
- it :TODO
62
+ it 'should return OpenIDConnect::ResponseObject::IdToken' do
63
+ mock_json :get , client . introspection_uri , 'id_token' , :HTTP_AUTHORIZATION => 'Bearer access_token' do
64
+ token . id_token! . should be_a OpenIDConnect ::ResponseObject ::IdToken
65
+ end
66
+ end
10
67
end
11
68
end
0 commit comments