1
1
require 'spec_helper'
2
2
3
3
describe 'Me API V1' , type : :request do
4
+ include_context :doorkeeper_app_with_token
4
5
describe 'current' do
5
- it " Sends correct error code when no user present" do
6
+ it ' Sends correct error code when no user present' do
6
7
get '/api/v1/me'
7
8
expect ( response . response_code ) . to eq ( 401 )
8
9
expect ( response . body . match ( 'OAuth' ) ) . to be_present
9
10
expect ( response . headers [ 'Content-Type' ] . match ( 'json' ) ) . to be_present
10
11
expect ( response . headers [ 'Access-Control-Allow-Origin' ] ) . to eq ( '*' )
11
12
expect ( response . headers [ 'Access-Control-Request-Method' ] ) . to eq ( '*' )
12
13
end
13
-
14
- it " fails if no access token" do
14
+
15
+ it ' fails if no access token' do
15
16
get '/api/v1/me' , format : :json
16
17
expect ( response . response_code ) . to eq ( 401 )
17
- expect ( JSON ( response . body ) [ " error" ] . present? ) . to be_truthy
18
+ expect ( JSON ( response . body ) [ ' error' ] . present? ) . to be_truthy
18
19
expect ( response . headers [ 'Access-Control-Allow-Origin' ] ) . to eq ( '*' )
19
20
expect ( response . headers [ 'Access-Control-Request-Method' ] ) . to eq ( '*' )
20
21
end
21
22
22
- it "responds with the user" do
23
- create_doorkeeper_app ( scopes : OAUTH_SCOPES_S )
24
- get '/api/v1/me' , format : :json , access_token : @token . token
23
+ it 'responds with the user' do
24
+ get '/api/v1/me' , format : :json , access_token : access_token . token
25
25
result = JSON . parse ( response . body )
26
26
expect ( response . headers [ 'Access-Control-Allow-Origin' ] ) . to eq ( '*' )
27
- expect ( result [ 'user' ] [ 'name' ] ) . to eq ( @ user. name )
28
- expect ( result [ 'user' ] [ 'email' ] ) . to eq ( @ user. email )
27
+ expect ( result [ 'user' ] [ 'name' ] ) . to eq ( user . name )
28
+ expect ( result [ 'user' ] [ 'email' ] ) . to eq ( user . email )
29
29
expect ( response . response_code ) . to eq ( 200 )
30
30
end
31
31
end
32
32
33
- describe 'items' do
34
- it "gets items, returning correct pagination serialized by the serializer" do
35
- create_doorkeeper_app ( scopes : OAUTH_SCOPES_S )
36
- get '/api/v1/me/items' , format : :json , access_token : @token . token
33
+ describe 'items' do
34
+ it 'gets items, returning correct pagination serialized by the serializer' do
35
+ get '/api/v1/me/items' , format : :json , access_token : access_token . token
37
36
result = JSON . parse ( response . body )
38
37
39
38
expect ( result [ 'me' ] [ 0 ] . keys . include? ( 'secret' ) ) . to_not be_present
43
42
end
44
43
end
45
44
46
- describe 'update current user' do
45
+ describe 'update current user' do
46
+ let ( :attribs ) { { email : 'foo@bar.com' , name : 'new namething' , access_token : access_token . token } }
47
+
47
48
context 'incorrectly scoped access token' do
48
49
it "fails if the access token doesn't have the required scope" do
49
- create_doorkeeper_app ( scopes : 'read_user' )
50
- orig_name = @user . name
51
- attribs = { email : 'foo@bar.com' , name : 'new namething' , access_token : @token . token }
50
+ access_token . update_attribute :scopes , 'read_user'
51
+ orig_name = user . name
52
52
put '/api/v1/me' , attribs , format : :json
53
53
54
54
expect ( response . response_code ) . to eq ( 403 )
55
55
expect ( response . body . match ( /OAuth error.* write to user/i ) ) . to be_present
56
- @ user. reload
57
- expect ( @ user. name ) . to eq ( orig_name )
56
+ user . reload
57
+ expect ( user . name ) . to eq ( orig_name )
58
58
end
59
59
end
60
60
context 'scoped access token' do
61
- it "updates the user" do
62
- create_doorkeeper_app ( scopes : 'write_user' )
63
- orig_name = @user . name
64
- attribs = { email : 'foo@bar.com' , name : 'new namething' , access_token : @token . token }
61
+ before do
62
+ access_token . update_attribute :scopes , 'write_user'
63
+ end
64
+ it 'updates the user' do
65
65
put '/api/v1/me' , attribs , format : :json
66
- @user . reload
67
- result = JSON . parse ( response . body )
68
-
69
66
expect ( response . response_code ) . to eq ( 200 )
70
- expect ( @user . name ) . to eq ( 'new namething' )
71
- expect ( @user . email ) . to eq ( 'foo@bar.com' )
67
+ user . reload
68
+ expect ( user . name ) . to eq ( 'new namething' )
69
+ expect ( user . email ) . to eq ( 'foo@bar.com' )
72
70
end
73
71
74
- it "fails when one of the supplied values isn't in the params" do
75
- create_doorkeeper_app ( scopes : 'write_user' )
76
- orig_name = @user . name
77
- attribs = { demo_value : 'foo' , name : 'other' , access_token : @token . token }
78
- put '/api/v1/me' , attribs , format : :json
72
+ it "fails when one of the supplied values isn't in the params" do
73
+ orig_name = user . name
74
+ put '/api/v1/me' , attribs . merge ( demo_value : 'foo' ) , format : :json
79
75
80
76
expect ( response . response_code ) . to eq ( 400 )
81
77
expect ( response . body ) . to match ( 'demo_value does not have a valid value' )
82
- @ user. reload
83
- expect ( @ user. name ) . to_not eq ( 'other' )
78
+ user . reload
79
+ expect ( user . name ) . to eq orig_name
84
80
end
85
81
end
86
82
end
87
- end
83
+ end
0 commit comments