]> git.openstreetmap.org Git - rails.git/blob - test/controllers/oauth_clients_controller_test.rb
Use only_path instead of setting an explicit host
[rails.git] / test / controllers / oauth_clients_controller_test.rb
1 require "test_helper"
2
3 class OauthClientsControllerTest < ActionController::TestCase
4   fixtures :users, :client_applications
5
6   ##
7   # test all routes which lead to this controller
8   def test_routes
9     assert_routing(
10       { :path => "/user/username/oauth_clients", :method => :get },
11       { :controller => "oauth_clients", :action => "index", :display_name => "username" }
12     )
13     assert_routing(
14       { :path => "/user/username/oauth_clients/new", :method => :get },
15       { :controller => "oauth_clients", :action => "new", :display_name => "username" }
16     )
17     assert_routing(
18       { :path => "/user/username/oauth_clients", :method => :post },
19       { :controller => "oauth_clients", :action => "create", :display_name => "username" }
20     )
21     assert_routing(
22       { :path => "/user/username/oauth_clients/1", :method => :get },
23       { :controller => "oauth_clients", :action => "show", :display_name => "username", :id => "1" }
24     )
25     assert_routing(
26       { :path => "/user/username/oauth_clients/1/edit", :method => :get },
27       { :controller => "oauth_clients", :action => "edit", :display_name => "username", :id => "1" }
28     )
29     assert_routing(
30       { :path => "/user/username/oauth_clients/1", :method => :put },
31       { :controller => "oauth_clients", :action => "update", :display_name => "username", :id => "1" }
32     )
33     assert_routing(
34       { :path => "/user/username/oauth_clients/1", :method => :delete },
35       { :controller => "oauth_clients", :action => "destroy", :display_name => "username", :id => "1" }
36     )
37   end
38
39   def test_index
40     user = users(:public_user)
41
42     get :index, :display_name => user.display_name
43     assert_response :redirect
44     assert_redirected_to login_path(:referer => oauth_clients_path(:display_name => user.display_name))
45
46     get :index, { :display_name => user.display_name }, { :user => user }
47     assert_response :success
48     assert_template "index"
49     assert_select "div.client_application", 2
50   end
51
52   def test_new
53     user = users(:public_user)
54
55     get :new, :display_name => user.display_name
56     assert_response :redirect
57     assert_redirected_to login_path(:referer => new_oauth_client_path(:display_name => user.display_name))
58
59     get :new, { :display_name => user.display_name }, { :user => user }
60     assert_response :success
61     assert_template "new"
62     assert_select "form", 1 do
63       assert_select "input#client_application_name", 1
64       assert_select "input#client_application_url", 1
65       assert_select "input#client_application_callback_url", 1
66       assert_select "input#client_application_support_url", 1
67       ClientApplication.all_permissions.each do |perm|
68         assert_select "input#client_application_#{perm}", 1
69       end
70     end
71   end
72
73   def test_create
74     user = users(:public_user)
75
76     assert_difference "ClientApplication.count", 0 do
77       post :create, :display_name => user.display_name
78     end
79     assert_response :forbidden
80
81     assert_difference "ClientApplication.count", 0 do
82       post :create, {
83         :display_name => user.display_name,
84         :client_application => {
85           :name => "Test Application"
86         }
87       }, { :user => user }
88     end
89     assert_response :success
90     assert_template "new"
91
92     assert_difference "ClientApplication.count", 1 do
93       post :create, {
94         :display_name => user.display_name,
95         :client_application => {
96           :name => "Test Application",
97           :url => "http://test.example.com/"
98         }
99       }, { :user => user }
100     end
101     assert_response :redirect
102     assert_redirected_to oauth_client_path(:id => ClientApplication.find_by(:name => "Test Application").id)
103   end
104
105   def test_show
106     user = users(:public_user)
107     client = client_applications(:oauth_web_app)
108
109     get :show, :display_name => user.display_name, :id => client.id
110     assert_response :redirect
111     assert_redirected_to login_path(:referer => oauth_client_path(:display_name => user.display_name, :id => client.id))
112
113     get :show, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
114     assert_response :not_found
115     assert_template "not_found"
116
117     get :show, { :display_name => user.display_name, :id => client.id }, { :user => user }
118     assert_response :success
119     assert_template "show"
120   end
121
122   def test_edit
123     user = users(:public_user)
124     client = client_applications(:oauth_web_app)
125
126     get :edit, :display_name => user.display_name, :id => client.id
127     assert_response :redirect
128     assert_redirected_to login_path(:referer => edit_oauth_client_path(:display_name => user.display_name, :id => client.id))
129
130     get :edit, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
131     assert_response :not_found
132     assert_template "not_found"
133
134     get :edit, { :display_name => user.display_name, :id => client.id }, { :user => user }
135     assert_response :success
136     assert_template "edit"
137     assert_select "form", 1 do
138       assert_select "input#client_application_name", 1
139       assert_select "input#client_application_url", 1
140       assert_select "input#client_application_callback_url", 1
141       assert_select "input#client_application_support_url", 1
142       ClientApplication.all_permissions.each do |perm|
143         assert_select "input#client_application_#{perm}", 1
144       end
145     end
146   end
147
148   def test_update
149     user = users(:public_user)
150     client = client_applications(:oauth_web_app)
151
152     put :update, :display_name => user.display_name, :id => client.id
153     assert_response :forbidden
154
155     put :update, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
156     assert_response :not_found
157     assert_template "not_found"
158
159     put :update, {
160       :display_name => user.display_name,
161       :id => client.id,
162       :client_application => {
163         :name => "New Name",
164         :url => nil
165       }
166     }, { :user => user }
167     assert_response :success
168     assert_template "edit"
169
170     put :update, {
171       :display_name => user.display_name,
172       :id => client.id,
173       :client_application => {
174         :name => "New Name",
175         :url => "http://new.example.com/url"
176       }
177     }, { :user => user }
178     assert_response :redirect
179     assert_redirected_to oauth_client_path(:id => client.id)
180   end
181
182   def test_destroy
183     user = users(:public_user)
184     client = client_applications(:oauth_web_app)
185
186     assert_difference "ClientApplication.count", 0 do
187       delete :destroy, :display_name => user.display_name, :id => client.id
188     end
189     assert_response :forbidden
190
191     assert_difference "ClientApplication.count", 0 do
192       delete :destroy, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
193     end
194     assert_response :not_found
195     assert_template "not_found"
196
197     assert_difference "ClientApplication.count", -1 do
198       delete :destroy, { :display_name => user.display_name, :id => client.id }, { :user => user }
199     end
200     assert_response :redirect
201     assert_redirected_to oauth_clients_path(:display_name => user.display_name)
202   end
203 end