##// END OF EJS Templates
Merged r9909 from trunk....
Jean-Philippe Lang -
r9774:70d2f30e9f41
parent child
Show More
@@ -1,334 +1,336
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 RedmineApp::Application.routes.draw do
18 RedmineApp::Application.routes.draw do
19 root :to => 'welcome#index', :as => 'home'
19 root :to => 'welcome#index', :as => 'home'
20
20
21 match 'login', :to => 'account#login', :as => 'signin'
21 match 'login', :to => 'account#login', :as => 'signin'
22 match 'logout', :to => 'account#logout', :as => 'signout'
22 match 'logout', :to => 'account#logout', :as => 'signout'
23 match 'account/register', :to => 'account#register', :via => [:get, :post]
23 match 'account/register', :to => 'account#register', :via => [:get, :post]
24 match 'account/lost_password', :to => 'account#lost_password', :via => [:get, :post]
24 match 'account/lost_password', :to => 'account#lost_password', :via => [:get, :post]
25 match 'account/activate', :to => 'account#activate', :via => :get
25 match 'account/activate', :to => 'account#activate', :via => :get
26
26
27 match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news'
27 match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news'
28 match '/issues/preview/new/:project_id', :to => 'previews#issue', :as => 'preview_new_issue'
28 match '/issues/preview/new/:project_id', :to => 'previews#issue', :as => 'preview_new_issue'
29 match '/issues/preview/edit/:id', :to => 'previews#issue', :as => 'preview_edit_issue'
29 match '/issues/preview/edit/:id', :to => 'previews#issue', :as => 'preview_edit_issue'
30 match '/issues/preview', :to => 'previews#issue', :as => 'preview_issue'
30 match '/issues/preview', :to => 'previews#issue', :as => 'preview_issue'
31
31
32 match 'projects/:id/wiki', :to => 'wikis#edit', :via => :post
32 match 'projects/:id/wiki', :to => 'wikis#edit', :via => :post
33 match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post]
33 match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post]
34
34
35 match 'boards/:board_id/topics/new', :to => 'messages#new', :via => [:get, :post]
35 match 'boards/:board_id/topics/new', :to => 'messages#new', :via => [:get, :post]
36 get 'boards/:board_id/topics/:id', :to => 'messages#show'
36 get 'boards/:board_id/topics/:id', :to => 'messages#show'
37 match 'boards/:board_id/topics/quote/:id', :to => 'messages#quote', :via => [:get, :post]
37 match 'boards/:board_id/topics/quote/:id', :to => 'messages#quote', :via => [:get, :post]
38 get 'boards/:board_id/topics/:id/edit', :to => 'messages#edit'
38 get 'boards/:board_id/topics/:id/edit', :to => 'messages#edit'
39
39
40 post 'boards/:board_id/topics/preview', :to => 'messages#preview'
40 post 'boards/:board_id/topics/preview', :to => 'messages#preview'
41 post 'boards/:board_id/topics/:id/replies', :to => 'messages#reply'
41 post 'boards/:board_id/topics/:id/replies', :to => 'messages#reply'
42 post 'boards/:board_id/topics/:id/edit', :to => 'messages#edit'
42 post 'boards/:board_id/topics/:id/edit', :to => 'messages#edit'
43 post 'boards/:board_id/topics/:id/destroy', :to => 'messages#destroy'
43 post 'boards/:board_id/topics/:id/destroy', :to => 'messages#destroy'
44
44
45 # Misc issue routes. TODO: move into resources
45 # Misc issue routes. TODO: move into resources
46 match '/issues/auto_complete', :to => 'auto_completes#issues', :via => :get, :as => 'auto_complete_issues'
46 match '/issues/auto_complete', :to => 'auto_completes#issues', :via => :get, :as => 'auto_complete_issues'
47 match '/issues/context_menu', :to => 'context_menus#issues', :as => 'issues_context_menu'
47 match '/issues/context_menu', :to => 'context_menus#issues', :as => 'issues_context_menu'
48 match '/issues/changes', :to => 'journals#index', :as => 'issue_changes'
48 match '/issues/changes', :to => 'journals#index', :as => 'issue_changes'
49 match '/issues/:id/quoted', :to => 'journals#new', :id => /\d+/, :via => :post, :as => 'quoted_issue'
49 match '/issues/:id/quoted', :to => 'journals#new', :id => /\d+/, :via => :post, :as => 'quoted_issue'
50
50
51 match '/journals/diff/:id', :to => 'journals#diff', :id => /\d+/, :via => :get
51 match '/journals/diff/:id', :to => 'journals#diff', :id => /\d+/, :via => :get
52 match '/journals/edit/:id', :to => 'journals#edit', :id => /\d+/, :via => [:get, :post]
52 match '/journals/edit/:id', :to => 'journals#edit', :id => /\d+/, :via => [:get, :post]
53
53
54 match '/projects/:project_id/issues/gantt', :to => 'gantts#show'
54 match '/projects/:project_id/issues/gantt', :to => 'gantts#show'
55 match '/issues/gantt', :to => 'gantts#show'
55 match '/issues/gantt', :to => 'gantts#show'
56
56
57 match '/projects/:project_id/issues/calendar', :to => 'calendars#show'
57 match '/projects/:project_id/issues/calendar', :to => 'calendars#show'
58 match '/issues/calendar', :to => 'calendars#show'
58 match '/issues/calendar', :to => 'calendars#show'
59
59
60 match 'projects/:id/issues/report', :to => 'reports#issue_report', :via => :get
60 match 'projects/:id/issues/report', :to => 'reports#issue_report', :via => :get
61 match 'projects/:id/issues/report/:detail', :to => 'reports#issue_report_details', :via => :get
61 match 'projects/:id/issues/report/:detail', :to => 'reports#issue_report_details', :via => :get
62
62
63 match 'my/account', :controller => 'my', :action => 'account', :via => [:get, :post]
63 match 'my/account', :controller => 'my', :action => 'account', :via => [:get, :post]
64 match 'my/account/destroy', :controller => 'my', :action => 'destroy', :via => [:get, :post]
64 match 'my/account/destroy', :controller => 'my', :action => 'destroy', :via => [:get, :post]
65 match 'my/page', :controller => 'my', :action => 'page', :via => :get
65 match 'my/page', :controller => 'my', :action => 'page', :via => :get
66 match 'my', :controller => 'my', :action => 'index', :via => :get # Redirects to my/page
66 match 'my', :controller => 'my', :action => 'index', :via => :get # Redirects to my/page
67 match 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key', :via => :post
67 match 'my/reset_rss_key', :controller => 'my', :action => 'reset_rss_key', :via => :post
68 match 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key', :via => :post
68 match 'my/reset_api_key', :controller => 'my', :action => 'reset_api_key', :via => :post
69 match 'my/password', :controller => 'my', :action => 'password', :via => [:get, :post]
69 match 'my/password', :controller => 'my', :action => 'password', :via => [:get, :post]
70 match 'my/page_layout', :controller => 'my', :action => 'page_layout', :via => :get
70 match 'my/page_layout', :controller => 'my', :action => 'page_layout', :via => :get
71 match 'my/add_block', :controller => 'my', :action => 'add_block', :via => :post
71 match 'my/add_block', :controller => 'my', :action => 'add_block', :via => :post
72 match 'my/remove_block', :controller => 'my', :action => 'remove_block', :via => :post
72 match 'my/remove_block', :controller => 'my', :action => 'remove_block', :via => :post
73 match 'my/order_blocks', :controller => 'my', :action => 'order_blocks', :via => :post
73 match 'my/order_blocks', :controller => 'my', :action => 'order_blocks', :via => :post
74
74
75 resources :users
75 resources :users
76 match 'users/:id/memberships/:membership_id', :to => 'users#edit_membership', :via => :put, :as => 'user_membership'
76 match 'users/:id/memberships/:membership_id', :to => 'users#edit_membership', :via => :put, :as => 'user_membership'
77 match 'users/:id/memberships/:membership_id', :to => 'users#destroy_membership', :via => :delete
77 match 'users/:id/memberships/:membership_id', :to => 'users#destroy_membership', :via => :delete
78 match 'users/:id/memberships', :to => 'users#edit_membership', :via => :post, :as => 'user_memberships'
78 match 'users/:id/memberships', :to => 'users#edit_membership', :via => :post, :as => 'user_memberships'
79
79
80 match 'watchers/new', :controller=> 'watchers', :action => 'new', :via => :get
80 match 'watchers/new', :controller=> 'watchers', :action => 'new', :via => :get
81 match 'watchers', :controller=> 'watchers', :action => 'create', :via => :post
81 match 'watchers', :controller=> 'watchers', :action => 'create', :via => :post
82 match 'watchers/append', :controller=> 'watchers', :action => 'append', :via => :post
82 match 'watchers/append', :controller=> 'watchers', :action => 'append', :via => :post
83 match 'watchers/destroy', :controller=> 'watchers', :action => 'destroy', :via => :post
83 match 'watchers/destroy', :controller=> 'watchers', :action => 'destroy', :via => :post
84 match 'watchers/watch', :controller=> 'watchers', :action => 'watch', :via => :post
84 match 'watchers/watch', :controller=> 'watchers', :action => 'watch', :via => :post
85 match 'watchers/unwatch', :controller=> 'watchers', :action => 'unwatch', :via => :post
85 match 'watchers/unwatch', :controller=> 'watchers', :action => 'unwatch', :via => :post
86 match 'watchers/autocomplete_for_user', :controller=> 'watchers', :action => 'autocomplete_for_user', :via => :get
86 match 'watchers/autocomplete_for_user', :controller=> 'watchers', :action => 'autocomplete_for_user', :via => :get
87
87
88 match 'projects/:id/settings/:tab', :to => "projects#settings"
88 match 'projects/:id/settings/:tab', :to => "projects#settings"
89
89
90 resources :projects do
90 resources :projects do
91 member do
91 member do
92 get 'settings'
92 get 'settings'
93 post 'modules'
93 post 'modules'
94 post 'archive'
94 post 'archive'
95 post 'unarchive'
95 post 'unarchive'
96 match 'copy', :via => [:get, :post]
96 match 'copy', :via => [:get, :post]
97 end
97 end
98
98
99 resources :memberships, :shallow => true, :controller => 'members', :only => [:index, :show, :create, :update, :destroy] do
99 resources :memberships, :shallow => true, :controller => 'members', :only => [:index, :show, :create, :update, :destroy] do
100 collection do
100 collection do
101 get 'autocomplete'
101 get 'autocomplete'
102 end
102 end
103 end
103 end
104
104
105 resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy]
105 resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy]
106
106
107 match 'issues/:copy_from/copy', :to => 'issues#new'
107 match 'issues/:copy_from/copy', :to => 'issues#new'
108 resources :issues, :only => [:index, :new, :create] do
108 resources :issues, :only => [:index, :new, :create] do
109 resources :time_entries, :controller => 'timelog' do
109 resources :time_entries, :controller => 'timelog' do
110 collection do
110 collection do
111 get 'report'
111 get 'report'
112 end
112 end
113 end
113 end
114 end
114 end
115 # issue form update
115 # issue form update
116 match 'issues/new', :controller => 'issues', :action => 'new', :via => [:put, :post], :as => 'issue_form'
116 match 'issues/new', :controller => 'issues', :action => 'new', :via => [:put, :post], :as => 'issue_form'
117
117
118 resources :files, :only => [:index, :new, :create]
118 resources :files, :only => [:index, :new, :create]
119
119
120 resources :versions, :except => [:index, :show, :edit, :update, :destroy] do
120 resources :versions, :except => [:index, :show, :edit, :update, :destroy] do
121 collection do
121 collection do
122 put 'close_completed'
122 put 'close_completed'
123 end
123 end
124 end
124 end
125 match 'versions.:format', :to => 'versions#index'
125 match 'versions.:format', :to => 'versions#index'
126 match 'roadmap', :to => 'versions#index', :format => false
126 match 'roadmap', :to => 'versions#index', :format => false
127 match 'versions', :to => 'versions#index'
127 match 'versions', :to => 'versions#index'
128
128
129 resources :news, :except => [:show, :edit, :update, :destroy]
129 resources :news, :except => [:show, :edit, :update, :destroy]
130 resources :time_entries, :controller => 'timelog' do
130 resources :time_entries, :controller => 'timelog' do
131 get 'report', :on => :collection
131 get 'report', :on => :collection
132 end
132 end
133 resources :queries, :only => [:new, :create]
133 resources :queries, :only => [:new, :create]
134 resources :issue_categories, :shallow => true
134 resources :issue_categories, :shallow => true
135 resources :documents, :except => [:show, :edit, :update, :destroy]
135 resources :documents, :except => [:show, :edit, :update, :destroy]
136 resources :boards
136 resources :boards
137 resources :repositories, :shallow => true, :except => [:index, :show] do
137 resources :repositories, :shallow => true, :except => [:index, :show] do
138 member do
138 member do
139 match 'committers', :via => [:get, :post]
139 match 'committers', :via => [:get, :post]
140 end
140 end
141 end
141 end
142
142
143 match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get
143 match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get
144 match 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
144 match 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
145 match 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff'
145 match 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff'
146 resources :wiki, :except => [:index, :new, :create] do
146 resources :wiki, :except => [:index, :new, :create] do
147 member do
147 member do
148 get 'rename'
148 get 'rename'
149 post 'rename'
149 post 'rename'
150 get 'history'
150 get 'history'
151 get 'diff'
151 get 'diff'
152 match 'preview', :via => [:post, :put]
152 match 'preview', :via => [:post, :put]
153 post 'protect'
153 post 'protect'
154 post 'add_attachment'
154 post 'add_attachment'
155 end
155 end
156 collection do
156 collection do
157 get 'export'
157 get 'export'
158 get 'date_index'
158 get 'date_index'
159 end
159 end
160 end
160 end
161 match 'wiki', :controller => 'wiki', :action => 'show', :via => :get
161 match 'wiki', :controller => 'wiki', :action => 'show', :via => :get
162 match 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
162 match 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
163 end
163 end
164
164
165 resources :issues do
165 resources :issues do
166 collection do
166 collection do
167 match 'bulk_edit', :via => [:get, :post]
167 match 'bulk_edit', :via => [:get, :post]
168 post 'bulk_update'
168 post 'bulk_update'
169 end
169 end
170 resources :time_entries, :controller => 'timelog' do
170 resources :time_entries, :controller => 'timelog' do
171 collection do
171 collection do
172 get 'report'
172 get 'report'
173 end
173 end
174 end
174 end
175 resources :relations, :shallow => true, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy]
175 resources :relations, :shallow => true, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy]
176 end
176 end
177 match '/issues', :controller => 'issues', :action => 'destroy', :via => :delete
177 match '/issues', :controller => 'issues', :action => 'destroy', :via => :delete
178
178
179 resources :queries, :except => [:show]
179 resources :queries, :except => [:show]
180
180
181 resources :news, :only => [:index, :show, :edit, :update, :destroy]
181 resources :news, :only => [:index, :show, :edit, :update, :destroy]
182 match '/news/:id/comments', :to => 'comments#create', :via => :post
182 match '/news/:id/comments', :to => 'comments#create', :via => :post
183 match '/news/:id/comments/:comment_id', :to => 'comments#destroy', :via => :delete
183 match '/news/:id/comments/:comment_id', :to => 'comments#destroy', :via => :delete
184
184
185 resources :versions, :only => [:show, :edit, :update, :destroy] do
185 resources :versions, :only => [:show, :edit, :update, :destroy] do
186 post 'status_by', :on => :member
186 post 'status_by', :on => :member
187 end
187 end
188
188
189 resources :documents, :only => [:show, :edit, :update, :destroy] do
189 resources :documents, :only => [:show, :edit, :update, :destroy] do
190 post 'add_attachment', :on => :member
190 post 'add_attachment', :on => :member
191 end
191 end
192
192
193 match '/time_entries/context_menu', :to => 'context_menus#time_entries', :as => :time_entries_context_menu
193 match '/time_entries/context_menu', :to => 'context_menus#time_entries', :as => :time_entries_context_menu
194
194
195 resources :time_entries, :controller => 'timelog', :except => :destroy do
195 resources :time_entries, :controller => 'timelog', :except => :destroy do
196 collection do
196 collection do
197 get 'report'
197 get 'report'
198 get 'bulk_edit'
198 get 'bulk_edit'
199 post 'bulk_update'
199 post 'bulk_update'
200 end
200 end
201 end
201 end
202 match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/
202 match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/
203 # TODO: delete /time_entries for bulk deletion
203 # TODO: delete /time_entries for bulk deletion
204 match '/time_entries/destroy', :to => 'timelog#destroy', :via => :delete
204 match '/time_entries/destroy', :to => 'timelog#destroy', :via => :delete
205
205
206 # TODO: port to be part of the resources route(s)
206 # TODO: port to be part of the resources route(s)
207 match 'projects/:id/settings/:tab', :to => 'projects#settings', :via => :get
207 match 'projects/:id/settings/:tab', :to => 'projects#settings', :via => :get
208
208
209 get 'projects/:id/activity', :to => 'activities#index'
209 get 'projects/:id/activity', :to => 'activities#index'
210 get 'projects/:id/activity.:format', :to => 'activities#index'
210 get 'projects/:id/activity.:format', :to => 'activities#index'
211 get 'activity', :to => 'activities#index'
211 get 'activity', :to => 'activities#index'
212
212
213 # repositories routes
213 # repositories routes
214 get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats'
214 get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats'
215 get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph'
215 get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph'
216
216
217 get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))',
217 get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))',
218 :to => 'repositories#changes'
218 :to => 'repositories#changes'
219
219
220 get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision'
220 get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision'
221 get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision'
221 get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision'
222 post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue'
222 post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue'
223 delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
223 delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
224 get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions'
224 get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions'
225 get 'projects/:id/repository/:repository_id/revisions/:rev/:action(/*path(.:ext))',
225 get 'projects/:id/repository/:repository_id/revisions/:rev/:action(/*path(.:ext))',
226 :controller => 'repositories',
226 :controller => 'repositories',
227 :format => false,
227 :constraints => {
228 :constraints => {
228 :action => /(browse|show|entry|raw|annotate|diff)/,
229 :action => /(browse|show|entry|raw|annotate|diff)/,
229 :rev => /[a-z0-9\.\-_]+/
230 :rev => /[a-z0-9\.\-_]+/
230 }
231 }
231
232
232 get 'projects/:id/repository/statistics', :to => 'repositories#stats'
233 get 'projects/:id/repository/statistics', :to => 'repositories#stats'
233 get 'projects/:id/repository/graph', :to => 'repositories#graph'
234 get 'projects/:id/repository/graph', :to => 'repositories#graph'
234
235
235 get 'projects/:id/repository/changes(/*path(.:ext))',
236 get 'projects/:id/repository/changes(/*path(.:ext))',
236 :to => 'repositories#changes'
237 :to => 'repositories#changes'
237
238
238 get 'projects/:id/repository/revisions', :to => 'repositories#revisions'
239 get 'projects/:id/repository/revisions', :to => 'repositories#revisions'
239 get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision'
240 get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision'
240 get 'projects/:id/repository/revision', :to => 'repositories#revision'
241 get 'projects/:id/repository/revision', :to => 'repositories#revision'
241 post 'projects/:id/repository/revisions/:rev/issues', :to => 'repositories#add_related_issue'
242 post 'projects/:id/repository/revisions/:rev/issues', :to => 'repositories#add_related_issue'
242 delete 'projects/:id/repository/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
243 delete 'projects/:id/repository/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
243 get 'projects/:id/repository/revisions/:rev/:action(/*path(.:ext))',
244 get 'projects/:id/repository/revisions/:rev/:action(/*path(.:ext))',
244 :controller => 'repositories',
245 :controller => 'repositories',
246 :format => false,
245 :constraints => {
247 :constraints => {
246 :action => /(browse|show|entry|raw|annotate|diff)/,
248 :action => /(browse|show|entry|raw|annotate|diff)/,
247 :rev => /[a-z0-9\.\-_]+/
249 :rev => /[a-z0-9\.\-_]+/
248 }
250 }
249 get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))',
251 get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))',
250 :controller => 'repositories',
252 :controller => 'repositories',
251 :action => /(browse|show|entry|raw|changes|annotate|diff)/
253 :action => /(browse|show|entry|raw|changes|annotate|diff)/
252 get 'projects/:id/repository/:action(/*path(.:ext))',
254 get 'projects/:id/repository/:action(/*path(.:ext))',
253 :controller => 'repositories',
255 :controller => 'repositories',
254 :action => /(browse|show|entry|raw|changes|annotate|diff)/
256 :action => /(browse|show|entry|raw|changes|annotate|diff)/
255
257
256 get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil
258 get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil
257 get 'projects/:id/repository', :to => 'repositories#show', :path => nil
259 get 'projects/:id/repository', :to => 'repositories#show', :path => nil
258
260
259 # additional routes for having the file name at the end of url
261 # additional routes for having the file name at the end of url
260 match 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/, :via => :get
262 match 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/, :via => :get
261 match 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/, :via => :get
263 match 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/, :via => :get
262 match 'attachments/download/:id', :controller => 'attachments', :action => 'download', :id => /\d+/, :via => :get
264 match 'attachments/download/:id', :controller => 'attachments', :action => 'download', :id => /\d+/, :via => :get
263 resources :attachments, :only => [:show, :destroy]
265 resources :attachments, :only => [:show, :destroy]
264
266
265 resources :groups do
267 resources :groups do
266 member do
268 member do
267 get 'autocomplete_for_user'
269 get 'autocomplete_for_user'
268 end
270 end
269 end
271 end
270
272
271 match 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :via => :post, :as => 'group_users'
273 match 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :via => :post, :as => 'group_users'
272 match 'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :via => :delete, :as => 'group_user'
274 match 'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :via => :delete, :as => 'group_user'
273 match 'groups/destroy_membership/:id', :controller => 'groups', :action => 'destroy_membership', :id => /\d+/, :via => :post
275 match 'groups/destroy_membership/:id', :controller => 'groups', :action => 'destroy_membership', :id => /\d+/, :via => :post
274 match 'groups/edit_membership/:id', :controller => 'groups', :action => 'edit_membership', :id => /\d+/, :via => :post
276 match 'groups/edit_membership/:id', :controller => 'groups', :action => 'edit_membership', :id => /\d+/, :via => :post
275
277
276 resources :trackers, :except => :show
278 resources :trackers, :except => :show
277 resources :issue_statuses, :except => :show do
279 resources :issue_statuses, :except => :show do
278 collection do
280 collection do
279 post 'update_issue_done_ratio'
281 post 'update_issue_done_ratio'
280 end
282 end
281 end
283 end
282 resources :custom_fields, :except => :show
284 resources :custom_fields, :except => :show
283 resources :roles, :except => :show do
285 resources :roles, :except => :show do
284 collection do
286 collection do
285 match 'permissions', :via => [:get, :post]
287 match 'permissions', :via => [:get, :post]
286 end
288 end
287 end
289 end
288 resources :enumerations, :except => :show
290 resources :enumerations, :except => :show
289
291
290 get 'projects/:id/search', :controller => 'search', :action => 'index'
292 get 'projects/:id/search', :controller => 'search', :action => 'index'
291 get 'search', :controller => 'search', :action => 'index'
293 get 'search', :controller => 'search', :action => 'index'
292
294
293 match 'mail_handler', :controller => 'mail_handler', :action => 'index', :via => :post
295 match 'mail_handler', :controller => 'mail_handler', :action => 'index', :via => :post
294
296
295 match 'admin', :controller => 'admin', :action => 'index', :via => :get
297 match 'admin', :controller => 'admin', :action => 'index', :via => :get
296 match 'admin/projects', :controller => 'admin', :action => 'projects', :via => :get
298 match 'admin/projects', :controller => 'admin', :action => 'projects', :via => :get
297 match 'admin/plugins', :controller => 'admin', :action => 'plugins', :via => :get
299 match 'admin/plugins', :controller => 'admin', :action => 'plugins', :via => :get
298 match 'admin/info', :controller => 'admin', :action => 'info', :via => :get
300 match 'admin/info', :controller => 'admin', :action => 'info', :via => :get
299 match 'admin/test_email', :controller => 'admin', :action => 'test_email', :via => :get
301 match 'admin/test_email', :controller => 'admin', :action => 'test_email', :via => :get
300 match 'admin/default_configuration', :controller => 'admin', :action => 'default_configuration', :via => :post
302 match 'admin/default_configuration', :controller => 'admin', :action => 'default_configuration', :via => :post
301
303
302 resources :auth_sources do
304 resources :auth_sources do
303 member do
305 member do
304 get 'test_connection'
306 get 'test_connection'
305 end
307 end
306 end
308 end
307
309
308 match 'workflows', :controller => 'workflows', :action => 'index', :via => :get
310 match 'workflows', :controller => 'workflows', :action => 'index', :via => :get
309 match 'workflows/edit', :controller => 'workflows', :action => 'edit', :via => [:get, :post]
311 match 'workflows/edit', :controller => 'workflows', :action => 'edit', :via => [:get, :post]
310 match 'workflows/copy', :controller => 'workflows', :action => 'copy', :via => [:get, :post]
312 match 'workflows/copy', :controller => 'workflows', :action => 'copy', :via => [:get, :post]
311 match 'settings', :controller => 'settings', :action => 'index', :via => :get
313 match 'settings', :controller => 'settings', :action => 'index', :via => :get
312 match 'settings/edit', :controller => 'settings', :action => 'edit', :via => [:get, :post]
314 match 'settings/edit', :controller => 'settings', :action => 'edit', :via => [:get, :post]
313 match 'settings/plugin/:id', :controller => 'settings', :action => 'plugin', :via => [:get, :post]
315 match 'settings/plugin/:id', :controller => 'settings', :action => 'plugin', :via => [:get, :post]
314
316
315 match 'sys/projects', :to => 'sys#projects', :via => :get
317 match 'sys/projects', :to => 'sys#projects', :via => :get
316 match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post
318 match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post
317 match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => :get
319 match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => :get
318
320
319 match 'uploads', :to => 'attachments#upload', :via => :post
321 match 'uploads', :to => 'attachments#upload', :via => :post
320
322
321 get 'robots.txt', :to => 'welcome#robots'
323 get 'robots.txt', :to => 'welcome#robots'
322
324
323 Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
325 Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
324 file = File.join(plugin_dir, "config/routes.rb")
326 file = File.join(plugin_dir, "config/routes.rb")
325 if File.exists?(file)
327 if File.exists?(file)
326 begin
328 begin
327 instance_eval File.read(file)
329 instance_eval File.read(file)
328 rescue Exception => e
330 rescue Exception => e
329 puts "An error occurred while loading the routes definition of #{File.basename(plugin_dir)} plugin (#{file}): #{e.message}."
331 puts "An error occurred while loading the routes definition of #{File.basename(plugin_dir)} plugin (#{file}): #{e.message}."
330 exit 1
332 exit 1
331 end
333 end
332 end
334 end
333 end
335 end
334 end
336 end
@@ -1,411 +1,431
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../../test_helper', __FILE__)
18 require File.expand_path('../../../test_helper', __FILE__)
19
19
20 class RoutingRepositoriesTest < ActionController::IntegrationTest
20 class RoutingRepositoriesTest < ActionController::IntegrationTest
21 def setup
21 def setup
22 @path_hash = repository_path_hash(%w[path to file.c])
22 @path_hash = repository_path_hash(%w[path to file.c])
23 assert_equal "path/to/file.c", @path_hash[:path]
23 assert_equal "path/to/file.c", @path_hash[:path]
24 assert_equal "path/to/file.c", @path_hash[:param]
24 assert_equal "path/to/file.c", @path_hash[:param]
25 end
25 end
26
26
27 def test_repositories_resources
27 def test_repositories_resources
28 assert_routing(
28 assert_routing(
29 { :method => 'get',
29 { :method => 'get',
30 :path => "/projects/redmine/repositories/new" },
30 :path => "/projects/redmine/repositories/new" },
31 { :controller => 'repositories', :action => 'new', :project_id => 'redmine' }
31 { :controller => 'repositories', :action => 'new', :project_id => 'redmine' }
32 )
32 )
33 assert_routing(
33 assert_routing(
34 { :method => 'post',
34 { :method => 'post',
35 :path => "/projects/redmine/repositories" },
35 :path => "/projects/redmine/repositories" },
36 { :controller => 'repositories', :action => 'create', :project_id => 'redmine' }
36 { :controller => 'repositories', :action => 'create', :project_id => 'redmine' }
37 )
37 )
38 assert_routing(
38 assert_routing(
39 { :method => 'get',
39 { :method => 'get',
40 :path => "/repositories/1/edit" },
40 :path => "/repositories/1/edit" },
41 { :controller => 'repositories', :action => 'edit', :id => '1' }
41 { :controller => 'repositories', :action => 'edit', :id => '1' }
42 )
42 )
43 assert_routing(
43 assert_routing(
44 { :method => 'put',
44 { :method => 'put',
45 :path => "/repositories/1" },
45 :path => "/repositories/1" },
46 { :controller => 'repositories', :action => 'update', :id => '1' }
46 { :controller => 'repositories', :action => 'update', :id => '1' }
47 )
47 )
48 assert_routing(
48 assert_routing(
49 { :method => 'delete',
49 { :method => 'delete',
50 :path => "/repositories/1" },
50 :path => "/repositories/1" },
51 { :controller => 'repositories', :action => 'destroy', :id => '1' }
51 { :controller => 'repositories', :action => 'destroy', :id => '1' }
52 )
52 )
53 ["get", "post"].each do |method|
53 ["get", "post"].each do |method|
54 assert_routing(
54 assert_routing(
55 { :method => method,
55 { :method => method,
56 :path => "/repositories/1/committers" },
56 :path => "/repositories/1/committers" },
57 { :controller => 'repositories', :action => 'committers', :id => '1' }
57 { :controller => 'repositories', :action => 'committers', :id => '1' }
58 )
58 )
59 end
59 end
60 end
60 end
61
61
62 def test_repositories_show
62 def test_repositories_show
63 assert_routing(
63 assert_routing(
64 { :method => 'get',
64 { :method => 'get',
65 :path => "/projects/redmine/repository" },
65 :path => "/projects/redmine/repository" },
66 { :controller => 'repositories', :action => 'show', :id => 'redmine' }
66 { :controller => 'repositories', :action => 'show', :id => 'redmine' }
67 )
67 )
68 end
68 end
69
69
70 def test_repositories
70 def test_repositories
71 assert_routing(
71 assert_routing(
72 { :method => 'get',
72 { :method => 'get',
73 :path => "/projects/redmine/repository/statistics" },
73 :path => "/projects/redmine/repository/statistics" },
74 { :controller => 'repositories', :action => 'stats', :id => 'redmine' }
74 { :controller => 'repositories', :action => 'stats', :id => 'redmine' }
75 )
75 )
76 assert_routing(
76 assert_routing(
77 { :method => 'get',
77 { :method => 'get',
78 :path => "/projects/redmine/repository/graph" },
78 :path => "/projects/redmine/repository/graph" },
79 { :controller => 'repositories', :action => 'graph', :id => 'redmine' }
79 { :controller => 'repositories', :action => 'graph', :id => 'redmine' }
80 )
80 )
81 end
81 end
82
82
83 def test_repositories_show_with_repository_id
83 def test_repositories_show_with_repository_id
84 assert_routing(
84 assert_routing(
85 { :method => 'get',
85 { :method => 'get',
86 :path => "/projects/redmine/repository/foo" },
86 :path => "/projects/redmine/repository/foo" },
87 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo' }
87 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo' }
88 )
88 )
89 end
89 end
90
90
91 def test_repositories_with_repository_id
91 def test_repositories_with_repository_id
92 assert_routing(
92 assert_routing(
93 { :method => 'get',
93 { :method => 'get',
94 :path => "/projects/redmine/repository/foo/statistics" },
94 :path => "/projects/redmine/repository/foo/statistics" },
95 { :controller => 'repositories', :action => 'stats', :id => 'redmine', :repository_id => 'foo' }
95 { :controller => 'repositories', :action => 'stats', :id => 'redmine', :repository_id => 'foo' }
96 )
96 )
97 assert_routing(
97 assert_routing(
98 { :method => 'get',
98 { :method => 'get',
99 :path => "/projects/redmine/repository/foo/graph" },
99 :path => "/projects/redmine/repository/foo/graph" },
100 { :controller => 'repositories', :action => 'graph', :id => 'redmine', :repository_id => 'foo' }
100 { :controller => 'repositories', :action => 'graph', :id => 'redmine', :repository_id => 'foo' }
101 )
101 )
102 end
102 end
103
103
104 def test_repositories_revisions
104 def test_repositories_revisions
105 empty_path_param = []
105 empty_path_param = []
106 assert_routing(
106 assert_routing(
107 { :method => 'get',
107 { :method => 'get',
108 :path => "/projects/redmine/repository/revisions" },
108 :path => "/projects/redmine/repository/revisions" },
109 { :controller => 'repositories', :action => 'revisions', :id => 'redmine' }
109 { :controller => 'repositories', :action => 'revisions', :id => 'redmine' }
110 )
110 )
111 assert_routing(
111 assert_routing(
112 { :method => 'get',
112 { :method => 'get',
113 :path => "/projects/redmine/repository/revisions.atom" },
113 :path => "/projects/redmine/repository/revisions.atom" },
114 { :controller => 'repositories', :action => 'revisions', :id => 'redmine',
114 { :controller => 'repositories', :action => 'revisions', :id => 'redmine',
115 :format => 'atom' }
115 :format => 'atom' }
116 )
116 )
117 assert_routing(
117 assert_routing(
118 { :method => 'get',
118 { :method => 'get',
119 :path => "/projects/redmine/repository/revisions/2457" },
119 :path => "/projects/redmine/repository/revisions/2457" },
120 { :controller => 'repositories', :action => 'revision', :id => 'redmine',
120 { :controller => 'repositories', :action => 'revision', :id => 'redmine',
121 :rev => '2457' }
121 :rev => '2457' }
122 )
122 )
123 assert_routing(
123 assert_routing(
124 { :method => 'get',
124 { :method => 'get',
125 :path => "/projects/redmine/repository/revisions/2457/show" },
125 :path => "/projects/redmine/repository/revisions/2457/show" },
126 { :controller => 'repositories', :action => 'show', :id => 'redmine',
126 { :controller => 'repositories', :action => 'show', :id => 'redmine',
127 :rev => '2457' }
127 :rev => '2457' }
128 )
128 )
129 assert_routing(
129 assert_routing(
130 { :method => 'get',
130 { :method => 'get',
131 :path => "/projects/redmine/repository/revisions/2457/show/#{@path_hash[:path]}" },
131 :path => "/projects/redmine/repository/revisions/2457/show/#{@path_hash[:path]}" },
132 { :controller => 'repositories', :action => 'show', :id => 'redmine',
132 { :controller => 'repositories', :action => 'show', :id => 'redmine',
133 :path => @path_hash[:param] , :rev => '2457'}
133 :path => @path_hash[:param] , :rev => '2457'}
134 )
134 )
135 assert_routing(
135 assert_routing(
136 { :method => 'get',
136 { :method => 'get',
137 :path => "/projects/redmine/repository/revisions/2457/diff" },
137 :path => "/projects/redmine/repository/revisions/2457/diff" },
138 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
138 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
139 :rev => '2457' }
139 :rev => '2457' }
140 )
140 )
141 assert_routing(
141 assert_routing(
142 { :method => 'get',
142 { :method => 'get',
143 :path => "/projects/redmine/repository/revisions/2457/diff.diff" },
143 :path => "/projects/redmine/repository/revisions/2457/diff" },
144 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
144 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
145 :rev => '2457', :format => 'diff' }
145 :rev => '2457', :format => 'diff' },
146 {},
147 { :format => 'diff' }
146 )
148 )
147 assert_routing(
149 assert_routing(
148 { :method => 'get',
150 { :method => 'get',
149 :path => "/projects/redmine/repository/revisions/2/diff/#{@path_hash[:path]}" },
151 :path => "/projects/redmine/repository/revisions/2/diff/#{@path_hash[:path]}" },
150 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
152 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
151 :path => @path_hash[:param], :rev => '2' }
153 :path => @path_hash[:param], :rev => '2' }
152 )
154 )
153 assert_routing(
155 assert_routing(
154 { :method => 'get',
156 { :method => 'get',
157 :path => "/projects/redmine/repository/revisions/2/diff/#{@path_hash[:path]}" },
158 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
159 :path => @path_hash[:param], :rev => '2', :format => 'diff' },
160 {},
161 { :format => 'diff' }
162 )
163 assert_routing(
164 { :method => 'get',
155 :path => "/projects/redmine/repository/revisions/2/entry/#{@path_hash[:path]}" },
165 :path => "/projects/redmine/repository/revisions/2/entry/#{@path_hash[:path]}" },
156 { :controller => 'repositories', :action => 'entry', :id => 'redmine',
166 { :controller => 'repositories', :action => 'entry', :id => 'redmine',
157 :path => @path_hash[:param], :rev => '2' }
167 :path => @path_hash[:param], :rev => '2' }
158 )
168 )
159 assert_routing(
169 assert_routing(
160 { :method => 'get',
170 { :method => 'get',
161 :path => "/projects/redmine/repository/revisions/2/raw/#{@path_hash[:path]}" },
171 :path => "/projects/redmine/repository/revisions/2/raw/#{@path_hash[:path]}" },
162 { :controller => 'repositories', :action => 'raw', :id => 'redmine',
172 { :controller => 'repositories', :action => 'raw', :id => 'redmine',
163 :path => @path_hash[:param], :rev => '2' }
173 :path => @path_hash[:param], :rev => '2' }
164 )
174 )
165 assert_routing(
175 assert_routing(
166 { :method => 'get',
176 { :method => 'get',
167 :path => "/projects/redmine/repository/revisions/2/annotate/#{@path_hash[:path]}" },
177 :path => "/projects/redmine/repository/revisions/2/annotate/#{@path_hash[:path]}" },
168 { :controller => 'repositories', :action => 'annotate', :id => 'redmine',
178 { :controller => 'repositories', :action => 'annotate', :id => 'redmine',
169 :path => @path_hash[:param], :rev => '2' }
179 :path => @path_hash[:param], :rev => '2' }
170 )
180 )
171 end
181 end
172
182
173 def test_repositories_revisions_with_repository_id
183 def test_repositories_revisions_with_repository_id
174 empty_path_param = []
184 empty_path_param = []
175 assert_routing(
185 assert_routing(
176 { :method => 'get',
186 { :method => 'get',
177 :path => "/projects/redmine/repository/foo/revisions" },
187 :path => "/projects/redmine/repository/foo/revisions" },
178 { :controller => 'repositories', :action => 'revisions', :id => 'redmine', :repository_id => 'foo' }
188 { :controller => 'repositories', :action => 'revisions', :id => 'redmine', :repository_id => 'foo' }
179 )
189 )
180 assert_routing(
190 assert_routing(
181 { :method => 'get',
191 { :method => 'get',
182 :path => "/projects/redmine/repository/foo/revisions.atom" },
192 :path => "/projects/redmine/repository/foo/revisions.atom" },
183 { :controller => 'repositories', :action => 'revisions', :id => 'redmine', :repository_id => 'foo',
193 { :controller => 'repositories', :action => 'revisions', :id => 'redmine', :repository_id => 'foo',
184 :format => 'atom' }
194 :format => 'atom' }
185 )
195 )
186 assert_routing(
196 assert_routing(
187 { :method => 'get',
197 { :method => 'get',
188 :path => "/projects/redmine/repository/foo/revisions/2457" },
198 :path => "/projects/redmine/repository/foo/revisions/2457" },
189 { :controller => 'repositories', :action => 'revision', :id => 'redmine', :repository_id => 'foo',
199 { :controller => 'repositories', :action => 'revision', :id => 'redmine', :repository_id => 'foo',
190 :rev => '2457' }
200 :rev => '2457' }
191 )
201 )
192 assert_routing(
202 assert_routing(
193 { :method => 'get',
203 { :method => 'get',
194 :path => "/projects/redmine/repository/foo/revisions/2457/show" },
204 :path => "/projects/redmine/repository/foo/revisions/2457/show" },
195 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo',
205 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo',
196 :rev => '2457' }
206 :rev => '2457' }
197 )
207 )
198 assert_routing(
208 assert_routing(
199 { :method => 'get',
209 { :method => 'get',
200 :path => "/projects/redmine/repository/foo/revisions/2457/show/#{@path_hash[:path]}" },
210 :path => "/projects/redmine/repository/foo/revisions/2457/show/#{@path_hash[:path]}" },
201 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo',
211 { :controller => 'repositories', :action => 'show', :id => 'redmine', :repository_id => 'foo',
202 :path => @path_hash[:param] , :rev => '2457'}
212 :path => @path_hash[:param] , :rev => '2457'}
203 )
213 )
204 assert_routing(
214 assert_routing(
205 { :method => 'get',
215 { :method => 'get',
206 :path => "/projects/redmine/repository/foo/revisions/2457/diff" },
216 :path => "/projects/redmine/repository/foo/revisions/2457/diff" },
207 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
217 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
208 :rev => '2457' }
218 :rev => '2457' }
209 )
219 )
210 assert_routing(
220 assert_routing(
211 { :method => 'get',
221 { :method => 'get',
212 :path => "/projects/redmine/repository/foo/revisions/2457/diff.diff" },
222 :path => "/projects/redmine/repository/foo/revisions/2457/diff" },
213 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
223 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
214 :rev => '2457', :format => 'diff' }
224 :rev => '2457', :format => 'diff' },
225 {},
226 { :format => 'diff' }
215 )
227 )
216 assert_routing(
228 assert_routing(
217 { :method => 'get',
229 { :method => 'get',
218 :path => "/projects/redmine/repository/foo/revisions/2/diff/#{@path_hash[:path]}" },
230 :path => "/projects/redmine/repository/foo/revisions/2/diff/#{@path_hash[:path]}" },
219 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
231 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
220 :path => @path_hash[:param], :rev => '2' }
232 :path => @path_hash[:param], :rev => '2' }
221 )
233 )
222 assert_routing(
234 assert_routing(
223 { :method => 'get',
235 { :method => 'get',
236 :path => "/projects/redmine/repository/foo/revisions/2/diff/#{@path_hash[:path]}" },
237 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
238 :path => @path_hash[:param], :rev => '2', :format => 'diff' },
239 {},
240 { :format => 'diff' }
241 )
242 assert_routing(
243 { :method => 'get',
224 :path => "/projects/redmine/repository/foo/revisions/2/entry/#{@path_hash[:path]}" },
244 :path => "/projects/redmine/repository/foo/revisions/2/entry/#{@path_hash[:path]}" },
225 { :controller => 'repositories', :action => 'entry', :id => 'redmine', :repository_id => 'foo',
245 { :controller => 'repositories', :action => 'entry', :id => 'redmine', :repository_id => 'foo',
226 :path => @path_hash[:param], :rev => '2' }
246 :path => @path_hash[:param], :rev => '2' }
227 )
247 )
228 assert_routing(
248 assert_routing(
229 { :method => 'get',
249 { :method => 'get',
230 :path => "/projects/redmine/repository/foo/revisions/2/raw/#{@path_hash[:path]}" },
250 :path => "/projects/redmine/repository/foo/revisions/2/raw/#{@path_hash[:path]}" },
231 { :controller => 'repositories', :action => 'raw', :id => 'redmine', :repository_id => 'foo',
251 { :controller => 'repositories', :action => 'raw', :id => 'redmine', :repository_id => 'foo',
232 :path => @path_hash[:param], :rev => '2' }
252 :path => @path_hash[:param], :rev => '2' }
233 )
253 )
234 assert_routing(
254 assert_routing(
235 { :method => 'get',
255 { :method => 'get',
236 :path => "/projects/redmine/repository/foo/revisions/2/annotate/#{@path_hash[:path]}" },
256 :path => "/projects/redmine/repository/foo/revisions/2/annotate/#{@path_hash[:path]}" },
237 { :controller => 'repositories', :action => 'annotate', :id => 'redmine', :repository_id => 'foo',
257 { :controller => 'repositories', :action => 'annotate', :id => 'redmine', :repository_id => 'foo',
238 :path => @path_hash[:param], :rev => '2' }
258 :path => @path_hash[:param], :rev => '2' }
239 )
259 )
240 end
260 end
241
261
242 def test_repositories_non_revisions_path
262 def test_repositories_non_revisions_path
243 assert_routing(
263 assert_routing(
244 { :method => 'get',
264 { :method => 'get',
245 :path => "/projects/redmine/repository/changes" },
265 :path => "/projects/redmine/repository/changes" },
246 { :controller => 'repositories', :action => 'changes', :id => 'redmine' }
266 { :controller => 'repositories', :action => 'changes', :id => 'redmine' }
247 )
267 )
248 ['2457', 'master', 'slash/slash'].each do |rev|
268 ['2457', 'master', 'slash/slash'].each do |rev|
249 assert_routing(
269 assert_routing(
250 { :method => 'get',
270 { :method => 'get',
251 :path => "/projects/redmine/repository/changes" },
271 :path => "/projects/redmine/repository/changes" },
252 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
272 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
253 :rev => rev },
273 :rev => rev },
254 {},
274 {},
255 { :rev => rev }
275 { :rev => rev }
256 )
276 )
257 end
277 end
258 ['2457', 'master', 'slash/slash'].each do |rev|
278 ['2457', 'master', 'slash/slash'].each do |rev|
259 assert_routing(
279 assert_routing(
260 { :method => 'get',
280 { :method => 'get',
261 :path => "/projects/redmine/repository/changes/#{@path_hash[:path]}" },
281 :path => "/projects/redmine/repository/changes/#{@path_hash[:path]}" },
262 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
282 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
263 :path => @path_hash[:param], :rev => rev },
283 :path => @path_hash[:param], :rev => rev },
264 {},
284 {},
265 { :rev => rev }
285 { :rev => rev }
266 )
286 )
267 end
287 end
268 assert_routing(
288 assert_routing(
269 { :method => 'get',
289 { :method => 'get',
270 :path => "/projects/redmine/repository/diff/#{@path_hash[:path]}" },
290 :path => "/projects/redmine/repository/diff/#{@path_hash[:path]}" },
271 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
291 { :controller => 'repositories', :action => 'diff', :id => 'redmine',
272 :path => @path_hash[:param] }
292 :path => @path_hash[:param] }
273 )
293 )
274 assert_routing(
294 assert_routing(
275 { :method => 'get',
295 { :method => 'get',
276 :path => "/projects/redmine/repository/browse/#{@path_hash[:path]}" },
296 :path => "/projects/redmine/repository/browse/#{@path_hash[:path]}" },
277 { :controller => 'repositories', :action => 'browse', :id => 'redmine',
297 { :controller => 'repositories', :action => 'browse', :id => 'redmine',
278 :path => @path_hash[:param] }
298 :path => @path_hash[:param] }
279 )
299 )
280 assert_routing(
300 assert_routing(
281 { :method => 'get',
301 { :method => 'get',
282 :path => "/projects/redmine/repository/entry/#{@path_hash[:path]}" },
302 :path => "/projects/redmine/repository/entry/#{@path_hash[:path]}" },
283 { :controller => 'repositories', :action => 'entry', :id => 'redmine',
303 { :controller => 'repositories', :action => 'entry', :id => 'redmine',
284 :path => @path_hash[:param] }
304 :path => @path_hash[:param] }
285 )
305 )
286 assert_routing(
306 assert_routing(
287 { :method => 'get',
307 { :method => 'get',
288 :path => "/projects/redmine/repository/raw/#{@path_hash[:path]}" },
308 :path => "/projects/redmine/repository/raw/#{@path_hash[:path]}" },
289 { :controller => 'repositories', :action => 'raw', :id => 'redmine',
309 { :controller => 'repositories', :action => 'raw', :id => 'redmine',
290 :path => @path_hash[:param] }
310 :path => @path_hash[:param] }
291 )
311 )
292 assert_routing(
312 assert_routing(
293 { :method => 'get',
313 { :method => 'get',
294 :path => "/projects/redmine/repository/annotate/#{@path_hash[:path]}" },
314 :path => "/projects/redmine/repository/annotate/#{@path_hash[:path]}" },
295 { :controller => 'repositories', :action => 'annotate', :id => 'redmine',
315 { :controller => 'repositories', :action => 'annotate', :id => 'redmine',
296 :path => @path_hash[:param] }
316 :path => @path_hash[:param] }
297 )
317 )
298 assert_routing(
318 assert_routing(
299 { :method => 'get',
319 { :method => 'get',
300 :path => "/projects/redmine/repository/changes/#{@path_hash[:path]}" },
320 :path => "/projects/redmine/repository/changes/#{@path_hash[:path]}" },
301 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
321 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
302 :path => @path_hash[:param] }
322 :path => @path_hash[:param] }
303 )
323 )
304 assert_routing(
324 assert_routing(
305 { :method => 'get',
325 { :method => 'get',
306 :path => "/projects/redmine/repository/revision" },
326 :path => "/projects/redmine/repository/revision" },
307 { :controller => 'repositories', :action => 'revision', :id => 'redmine' }
327 { :controller => 'repositories', :action => 'revision', :id => 'redmine' }
308 )
328 )
309 end
329 end
310
330
311 def test_repositories_non_revisions_path_with_repository_id
331 def test_repositories_non_revisions_path_with_repository_id
312 assert_routing(
332 assert_routing(
313 { :method => 'get',
333 { :method => 'get',
314 :path => "/projects/redmine/repository/foo/changes" },
334 :path => "/projects/redmine/repository/foo/changes" },
315 { :controller => 'repositories', :action => 'changes',
335 { :controller => 'repositories', :action => 'changes',
316 :id => 'redmine', :repository_id => 'foo' }
336 :id => 'redmine', :repository_id => 'foo' }
317 )
337 )
318 ['2457', 'master', 'slash/slash'].each do |rev|
338 ['2457', 'master', 'slash/slash'].each do |rev|
319 assert_routing(
339 assert_routing(
320 { :method => 'get',
340 { :method => 'get',
321 :path => "/projects/redmine/repository/foo/changes" },
341 :path => "/projects/redmine/repository/foo/changes" },
322 { :controller => 'repositories', :action => 'changes',
342 { :controller => 'repositories', :action => 'changes',
323 :id => 'redmine',
343 :id => 'redmine',
324 :repository_id => 'foo', :rev => rev },
344 :repository_id => 'foo', :rev => rev },
325 {},
345 {},
326 { :rev => rev }
346 { :rev => rev }
327 )
347 )
328 end
348 end
329 ['2457', 'master', 'slash/slash'].each do |rev|
349 ['2457', 'master', 'slash/slash'].each do |rev|
330 assert_routing(
350 assert_routing(
331 { :method => 'get',
351 { :method => 'get',
332 :path => "/projects/redmine/repository/foo/changes/#{@path_hash[:path]}" },
352 :path => "/projects/redmine/repository/foo/changes/#{@path_hash[:path]}" },
333 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
353 { :controller => 'repositories', :action => 'changes', :id => 'redmine',
334 :repository_id => 'foo', :path => @path_hash[:param], :rev => rev },
354 :repository_id => 'foo', :path => @path_hash[:param], :rev => rev },
335 {},
355 {},
336 { :rev => rev }
356 { :rev => rev }
337 )
357 )
338 end
358 end
339 assert_routing(
359 assert_routing(
340 { :method => 'get',
360 { :method => 'get',
341 :path => "/projects/redmine/repository/foo/diff/#{@path_hash[:path]}" },
361 :path => "/projects/redmine/repository/foo/diff/#{@path_hash[:path]}" },
342 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
362 { :controller => 'repositories', :action => 'diff', :id => 'redmine', :repository_id => 'foo',
343 :path => @path_hash[:param] }
363 :path => @path_hash[:param] }
344 )
364 )
345 assert_routing(
365 assert_routing(
346 { :method => 'get',
366 { :method => 'get',
347 :path => "/projects/redmine/repository/foo/browse/#{@path_hash[:path]}" },
367 :path => "/projects/redmine/repository/foo/browse/#{@path_hash[:path]}" },
348 { :controller => 'repositories', :action => 'browse', :id => 'redmine', :repository_id => 'foo',
368 { :controller => 'repositories', :action => 'browse', :id => 'redmine', :repository_id => 'foo',
349 :path => @path_hash[:param] }
369 :path => @path_hash[:param] }
350 )
370 )
351 assert_routing(
371 assert_routing(
352 { :method => 'get',
372 { :method => 'get',
353 :path => "/projects/redmine/repository/foo/entry/#{@path_hash[:path]}" },
373 :path => "/projects/redmine/repository/foo/entry/#{@path_hash[:path]}" },
354 { :controller => 'repositories', :action => 'entry', :id => 'redmine', :repository_id => 'foo',
374 { :controller => 'repositories', :action => 'entry', :id => 'redmine', :repository_id => 'foo',
355 :path => @path_hash[:param] }
375 :path => @path_hash[:param] }
356 )
376 )
357 assert_routing(
377 assert_routing(
358 { :method => 'get',
378 { :method => 'get',
359 :path => "/projects/redmine/repository/foo/raw/#{@path_hash[:path]}" },
379 :path => "/projects/redmine/repository/foo/raw/#{@path_hash[:path]}" },
360 { :controller => 'repositories', :action => 'raw', :id => 'redmine', :repository_id => 'foo',
380 { :controller => 'repositories', :action => 'raw', :id => 'redmine', :repository_id => 'foo',
361 :path => @path_hash[:param] }
381 :path => @path_hash[:param] }
362 )
382 )
363 assert_routing(
383 assert_routing(
364 { :method => 'get',
384 { :method => 'get',
365 :path => "/projects/redmine/repository/foo/annotate/#{@path_hash[:path]}" },
385 :path => "/projects/redmine/repository/foo/annotate/#{@path_hash[:path]}" },
366 { :controller => 'repositories', :action => 'annotate', :id => 'redmine', :repository_id => 'foo',
386 { :controller => 'repositories', :action => 'annotate', :id => 'redmine', :repository_id => 'foo',
367 :path => @path_hash[:param] }
387 :path => @path_hash[:param] }
368 )
388 )
369 assert_routing(
389 assert_routing(
370 { :method => 'get',
390 { :method => 'get',
371 :path => "/projects/redmine/repository/foo/changes/#{@path_hash[:path]}" },
391 :path => "/projects/redmine/repository/foo/changes/#{@path_hash[:path]}" },
372 { :controller => 'repositories', :action => 'changes', :id => 'redmine', :repository_id => 'foo',
392 { :controller => 'repositories', :action => 'changes', :id => 'redmine', :repository_id => 'foo',
373 :path => @path_hash[:param] }
393 :path => @path_hash[:param] }
374 )
394 )
375 assert_routing(
395 assert_routing(
376 { :method => 'get',
396 { :method => 'get',
377 :path => "/projects/redmine/repository/foo/revision" },
397 :path => "/projects/redmine/repository/foo/revision" },
378 { :controller => 'repositories', :action => 'revision', :id => 'redmine', :repository_id => 'foo'}
398 { :controller => 'repositories', :action => 'revision', :id => 'redmine', :repository_id => 'foo'}
379 )
399 )
380 end
400 end
381
401
382 def test_repositories_related_issues
402 def test_repositories_related_issues
383 assert_routing(
403 assert_routing(
384 { :method => 'post',
404 { :method => 'post',
385 :path => "/projects/redmine/repository/revisions/123/issues" },
405 :path => "/projects/redmine/repository/revisions/123/issues" },
386 { :controller => 'repositories', :action => 'add_related_issue',
406 { :controller => 'repositories', :action => 'add_related_issue',
387 :id => 'redmine', :rev => '123' }
407 :id => 'redmine', :rev => '123' }
388 )
408 )
389 assert_routing(
409 assert_routing(
390 { :method => 'delete',
410 { :method => 'delete',
391 :path => "/projects/redmine/repository/revisions/123/issues/25" },
411 :path => "/projects/redmine/repository/revisions/123/issues/25" },
392 { :controller => 'repositories', :action => 'remove_related_issue',
412 { :controller => 'repositories', :action => 'remove_related_issue',
393 :id => 'redmine', :rev => '123', :issue_id => '25' }
413 :id => 'redmine', :rev => '123', :issue_id => '25' }
394 )
414 )
395 end
415 end
396
416
397 def test_repositories_related_issues_with_repository_id
417 def test_repositories_related_issues_with_repository_id
398 assert_routing(
418 assert_routing(
399 { :method => 'post',
419 { :method => 'post',
400 :path => "/projects/redmine/repository/foo/revisions/123/issues" },
420 :path => "/projects/redmine/repository/foo/revisions/123/issues" },
401 { :controller => 'repositories', :action => 'add_related_issue',
421 { :controller => 'repositories', :action => 'add_related_issue',
402 :id => 'redmine', :repository_id => 'foo', :rev => '123' }
422 :id => 'redmine', :repository_id => 'foo', :rev => '123' }
403 )
423 )
404 assert_routing(
424 assert_routing(
405 { :method => 'delete',
425 { :method => 'delete',
406 :path => "/projects/redmine/repository/foo/revisions/123/issues/25" },
426 :path => "/projects/redmine/repository/foo/revisions/123/issues/25" },
407 { :controller => 'repositories', :action => 'remove_related_issue',
427 { :controller => 'repositories', :action => 'remove_related_issue',
408 :id => 'redmine', :repository_id => 'foo', :rev => '123', :issue_id => '25' }
428 :id => 'redmine', :repository_id => 'foo', :rev => '123', :issue_id => '25' }
409 )
429 )
410 end
430 end
411 end
431 end
General Comments 0
You need to be logged in to leave comments. Login now