##// END OF EJS Templates
Fixed: unified diff link broken on specific file/revision diff (#11325)....
Jean-Philippe Lang -
r9726:1d1aef9d61be
parent child
Show More
@@ -1,336 +1,338
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 post 'close'
96 post 'close'
97 post 'reopen'
97 post 'reopen'
98 match 'copy', :via => [:get, :post]
98 match 'copy', :via => [:get, :post]
99 end
99 end
100
100
101 resources :memberships, :shallow => true, :controller => 'members', :only => [:index, :show, :create, :update, :destroy] do
101 resources :memberships, :shallow => true, :controller => 'members', :only => [:index, :show, :create, :update, :destroy] do
102 collection do
102 collection do
103 get 'autocomplete'
103 get 'autocomplete'
104 end
104 end
105 end
105 end
106
106
107 resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy]
107 resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy]
108
108
109 match 'issues/:copy_from/copy', :to => 'issues#new'
109 match 'issues/:copy_from/copy', :to => 'issues#new'
110 resources :issues, :only => [:index, :new, :create] do
110 resources :issues, :only => [:index, :new, :create] do
111 resources :time_entries, :controller => 'timelog' do
111 resources :time_entries, :controller => 'timelog' do
112 collection do
112 collection do
113 get 'report'
113 get 'report'
114 end
114 end
115 end
115 end
116 end
116 end
117 # issue form update
117 # issue form update
118 match 'issues/new', :controller => 'issues', :action => 'new', :via => [:put, :post], :as => 'issue_form'
118 match 'issues/new', :controller => 'issues', :action => 'new', :via => [:put, :post], :as => 'issue_form'
119
119
120 resources :files, :only => [:index, :new, :create]
120 resources :files, :only => [:index, :new, :create]
121
121
122 resources :versions, :except => [:index, :show, :edit, :update, :destroy] do
122 resources :versions, :except => [:index, :show, :edit, :update, :destroy] do
123 collection do
123 collection do
124 put 'close_completed'
124 put 'close_completed'
125 end
125 end
126 end
126 end
127 match 'versions.:format', :to => 'versions#index'
127 match 'versions.:format', :to => 'versions#index'
128 match 'roadmap', :to => 'versions#index', :format => false
128 match 'roadmap', :to => 'versions#index', :format => false
129 match 'versions', :to => 'versions#index'
129 match 'versions', :to => 'versions#index'
130
130
131 resources :news, :except => [:show, :edit, :update, :destroy]
131 resources :news, :except => [:show, :edit, :update, :destroy]
132 resources :time_entries, :controller => 'timelog' do
132 resources :time_entries, :controller => 'timelog' do
133 get 'report', :on => :collection
133 get 'report', :on => :collection
134 end
134 end
135 resources :queries, :only => [:new, :create]
135 resources :queries, :only => [:new, :create]
136 resources :issue_categories, :shallow => true
136 resources :issue_categories, :shallow => true
137 resources :documents, :except => [:show, :edit, :update, :destroy]
137 resources :documents, :except => [:show, :edit, :update, :destroy]
138 resources :boards
138 resources :boards
139 resources :repositories, :shallow => true, :except => [:index, :show] do
139 resources :repositories, :shallow => true, :except => [:index, :show] do
140 member do
140 member do
141 match 'committers', :via => [:get, :post]
141 match 'committers', :via => [:get, :post]
142 end
142 end
143 end
143 end
144
144
145 match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get
145 match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get
146 match 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
146 match 'wiki/:id/diff/:version/vs/:version_from', :controller => 'wiki', :action => 'diff'
147 match 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff'
147 match 'wiki/:id/diff/:version', :controller => 'wiki', :action => 'diff'
148 resources :wiki, :except => [:index, :new, :create] do
148 resources :wiki, :except => [:index, :new, :create] do
149 member do
149 member do
150 get 'rename'
150 get 'rename'
151 post 'rename'
151 post 'rename'
152 get 'history'
152 get 'history'
153 get 'diff'
153 get 'diff'
154 match 'preview', :via => [:post, :put]
154 match 'preview', :via => [:post, :put]
155 post 'protect'
155 post 'protect'
156 post 'add_attachment'
156 post 'add_attachment'
157 end
157 end
158 collection do
158 collection do
159 get 'export'
159 get 'export'
160 get 'date_index'
160 get 'date_index'
161 end
161 end
162 end
162 end
163 match 'wiki', :controller => 'wiki', :action => 'show', :via => :get
163 match 'wiki', :controller => 'wiki', :action => 'show', :via => :get
164 match 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
164 match 'wiki/:id/annotate/:version', :controller => 'wiki', :action => 'annotate'
165 end
165 end
166
166
167 resources :issues do
167 resources :issues do
168 collection do
168 collection do
169 match 'bulk_edit', :via => [:get, :post]
169 match 'bulk_edit', :via => [:get, :post]
170 post 'bulk_update'
170 post 'bulk_update'
171 end
171 end
172 resources :time_entries, :controller => 'timelog' do
172 resources :time_entries, :controller => 'timelog' do
173 collection do
173 collection do
174 get 'report'
174 get 'report'
175 end
175 end
176 end
176 end
177 resources :relations, :shallow => true, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy]
177 resources :relations, :shallow => true, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy]
178 end
178 end
179 match '/issues', :controller => 'issues', :action => 'destroy', :via => :delete
179 match '/issues', :controller => 'issues', :action => 'destroy', :via => :delete
180
180
181 resources :queries, :except => [:show]
181 resources :queries, :except => [:show]
182
182
183 resources :news, :only => [:index, :show, :edit, :update, :destroy]
183 resources :news, :only => [:index, :show, :edit, :update, :destroy]
184 match '/news/:id/comments', :to => 'comments#create', :via => :post
184 match '/news/:id/comments', :to => 'comments#create', :via => :post
185 match '/news/:id/comments/:comment_id', :to => 'comments#destroy', :via => :delete
185 match '/news/:id/comments/:comment_id', :to => 'comments#destroy', :via => :delete
186
186
187 resources :versions, :only => [:show, :edit, :update, :destroy] do
187 resources :versions, :only => [:show, :edit, :update, :destroy] do
188 post 'status_by', :on => :member
188 post 'status_by', :on => :member
189 end
189 end
190
190
191 resources :documents, :only => [:show, :edit, :update, :destroy] do
191 resources :documents, :only => [:show, :edit, :update, :destroy] do
192 post 'add_attachment', :on => :member
192 post 'add_attachment', :on => :member
193 end
193 end
194
194
195 match '/time_entries/context_menu', :to => 'context_menus#time_entries', :as => :time_entries_context_menu
195 match '/time_entries/context_menu', :to => 'context_menus#time_entries', :as => :time_entries_context_menu
196
196
197 resources :time_entries, :controller => 'timelog', :except => :destroy do
197 resources :time_entries, :controller => 'timelog', :except => :destroy do
198 collection do
198 collection do
199 get 'report'
199 get 'report'
200 get 'bulk_edit'
200 get 'bulk_edit'
201 post 'bulk_update'
201 post 'bulk_update'
202 end
202 end
203 end
203 end
204 match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/
204 match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/
205 # TODO: delete /time_entries for bulk deletion
205 # TODO: delete /time_entries for bulk deletion
206 match '/time_entries/destroy', :to => 'timelog#destroy', :via => :delete
206 match '/time_entries/destroy', :to => 'timelog#destroy', :via => :delete
207
207
208 # TODO: port to be part of the resources route(s)
208 # TODO: port to be part of the resources route(s)
209 match 'projects/:id/settings/:tab', :to => 'projects#settings', :via => :get
209 match 'projects/:id/settings/:tab', :to => 'projects#settings', :via => :get
210
210
211 get 'projects/:id/activity', :to => 'activities#index'
211 get 'projects/:id/activity', :to => 'activities#index'
212 get 'projects/:id/activity.:format', :to => 'activities#index'
212 get 'projects/:id/activity.:format', :to => 'activities#index'
213 get 'activity', :to => 'activities#index'
213 get 'activity', :to => 'activities#index'
214
214
215 # repositories routes
215 # repositories routes
216 get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats'
216 get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats'
217 get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph'
217 get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph'
218
218
219 get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))',
219 get 'projects/:id/repository/:repository_id/changes(/*path(.:ext))',
220 :to => 'repositories#changes'
220 :to => 'repositories#changes'
221
221
222 get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision'
222 get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision'
223 get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision'
223 get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision'
224 post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue'
224 post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue'
225 delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
225 delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
226 get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions'
226 get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions'
227 get 'projects/:id/repository/:repository_id/revisions/:rev/:action(/*path(.:ext))',
227 get 'projects/:id/repository/:repository_id/revisions/:rev/:action(/*path(.:ext))',
228 :controller => 'repositories',
228 :controller => 'repositories',
229 :format => false,
229 :constraints => {
230 :constraints => {
230 :action => /(browse|show|entry|raw|annotate|diff)/,
231 :action => /(browse|show|entry|raw|annotate|diff)/,
231 :rev => /[a-z0-9\.\-_]+/
232 :rev => /[a-z0-9\.\-_]+/
232 }
233 }
233
234
234 get 'projects/:id/repository/statistics', :to => 'repositories#stats'
235 get 'projects/:id/repository/statistics', :to => 'repositories#stats'
235 get 'projects/:id/repository/graph', :to => 'repositories#graph'
236 get 'projects/:id/repository/graph', :to => 'repositories#graph'
236
237
237 get 'projects/:id/repository/changes(/*path(.:ext))',
238 get 'projects/:id/repository/changes(/*path(.:ext))',
238 :to => 'repositories#changes'
239 :to => 'repositories#changes'
239
240
240 get 'projects/:id/repository/revisions', :to => 'repositories#revisions'
241 get 'projects/:id/repository/revisions', :to => 'repositories#revisions'
241 get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision'
242 get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision'
242 get 'projects/:id/repository/revision', :to => 'repositories#revision'
243 get 'projects/:id/repository/revision', :to => 'repositories#revision'
243 post 'projects/:id/repository/revisions/:rev/issues', :to => 'repositories#add_related_issue'
244 post 'projects/:id/repository/revisions/:rev/issues', :to => 'repositories#add_related_issue'
244 delete 'projects/:id/repository/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
245 delete 'projects/:id/repository/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue'
245 get 'projects/:id/repository/revisions/:rev/:action(/*path(.:ext))',
246 get 'projects/:id/repository/revisions/:rev/:action(/*path(.:ext))',
246 :controller => 'repositories',
247 :controller => 'repositories',
248 :format => false,
247 :constraints => {
249 :constraints => {
248 :action => /(browse|show|entry|raw|annotate|diff)/,
250 :action => /(browse|show|entry|raw|annotate|diff)/,
249 :rev => /[a-z0-9\.\-_]+/
251 :rev => /[a-z0-9\.\-_]+/
250 }
252 }
251 get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))',
253 get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))',
252 :controller => 'repositories',
254 :controller => 'repositories',
253 :action => /(browse|show|entry|raw|changes|annotate|diff)/
255 :action => /(browse|show|entry|raw|changes|annotate|diff)/
254 get 'projects/:id/repository/:action(/*path(.:ext))',
256 get 'projects/:id/repository/:action(/*path(.:ext))',
255 :controller => 'repositories',
257 :controller => 'repositories',
256 :action => /(browse|show|entry|raw|changes|annotate|diff)/
258 :action => /(browse|show|entry|raw|changes|annotate|diff)/
257
259
258 get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil
260 get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil
259 get 'projects/:id/repository', :to => 'repositories#show', :path => nil
261 get 'projects/:id/repository', :to => 'repositories#show', :path => nil
260
262
261 # additional routes for having the file name at the end of url
263 # additional routes for having the file name at the end of url
262 match 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/, :via => :get
264 match 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/, :via => :get
263 match 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/, :via => :get
265 match 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/, :via => :get
264 match 'attachments/download/:id', :controller => 'attachments', :action => 'download', :id => /\d+/, :via => :get
266 match 'attachments/download/:id', :controller => 'attachments', :action => 'download', :id => /\d+/, :via => :get
265 resources :attachments, :only => [:show, :destroy]
267 resources :attachments, :only => [:show, :destroy]
266
268
267 resources :groups do
269 resources :groups do
268 member do
270 member do
269 get 'autocomplete_for_user'
271 get 'autocomplete_for_user'
270 end
272 end
271 end
273 end
272
274
273 match 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :via => :post, :as => 'group_users'
275 match 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :via => :post, :as => 'group_users'
274 match 'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :via => :delete, :as => 'group_user'
276 match 'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :via => :delete, :as => 'group_user'
275 match 'groups/destroy_membership/:id', :controller => 'groups', :action => 'destroy_membership', :id => /\d+/, :via => :post
277 match 'groups/destroy_membership/:id', :controller => 'groups', :action => 'destroy_membership', :id => /\d+/, :via => :post
276 match 'groups/edit_membership/:id', :controller => 'groups', :action => 'edit_membership', :id => /\d+/, :via => :post
278 match 'groups/edit_membership/:id', :controller => 'groups', :action => 'edit_membership', :id => /\d+/, :via => :post
277
279
278 resources :trackers, :except => :show
280 resources :trackers, :except => :show
279 resources :issue_statuses, :except => :show do
281 resources :issue_statuses, :except => :show do
280 collection do
282 collection do
281 post 'update_issue_done_ratio'
283 post 'update_issue_done_ratio'
282 end
284 end
283 end
285 end
284 resources :custom_fields, :except => :show
286 resources :custom_fields, :except => :show
285 resources :roles, :except => :show do
287 resources :roles, :except => :show do
286 collection do
288 collection do
287 match 'permissions', :via => [:get, :post]
289 match 'permissions', :via => [:get, :post]
288 end
290 end
289 end
291 end
290 resources :enumerations, :except => :show
292 resources :enumerations, :except => :show
291
293
292 get 'projects/:id/search', :controller => 'search', :action => 'index'
294 get 'projects/:id/search', :controller => 'search', :action => 'index'
293 get 'search', :controller => 'search', :action => 'index'
295 get 'search', :controller => 'search', :action => 'index'
294
296
295 match 'mail_handler', :controller => 'mail_handler', :action => 'index', :via => :post
297 match 'mail_handler', :controller => 'mail_handler', :action => 'index', :via => :post
296
298
297 match 'admin', :controller => 'admin', :action => 'index', :via => :get
299 match 'admin', :controller => 'admin', :action => 'index', :via => :get
298 match 'admin/projects', :controller => 'admin', :action => 'projects', :via => :get
300 match 'admin/projects', :controller => 'admin', :action => 'projects', :via => :get
299 match 'admin/plugins', :controller => 'admin', :action => 'plugins', :via => :get
301 match 'admin/plugins', :controller => 'admin', :action => 'plugins', :via => :get
300 match 'admin/info', :controller => 'admin', :action => 'info', :via => :get
302 match 'admin/info', :controller => 'admin', :action => 'info', :via => :get
301 match 'admin/test_email', :controller => 'admin', :action => 'test_email', :via => :get
303 match 'admin/test_email', :controller => 'admin', :action => 'test_email', :via => :get
302 match 'admin/default_configuration', :controller => 'admin', :action => 'default_configuration', :via => :post
304 match 'admin/default_configuration', :controller => 'admin', :action => 'default_configuration', :via => :post
303
305
304 resources :auth_sources do
306 resources :auth_sources do
305 member do
307 member do
306 get 'test_connection'
308 get 'test_connection'
307 end
309 end
308 end
310 end
309
311
310 match 'workflows', :controller => 'workflows', :action => 'index', :via => :get
312 match 'workflows', :controller => 'workflows', :action => 'index', :via => :get
311 match 'workflows/edit', :controller => 'workflows', :action => 'edit', :via => [:get, :post]
313 match 'workflows/edit', :controller => 'workflows', :action => 'edit', :via => [:get, :post]
312 match 'workflows/copy', :controller => 'workflows', :action => 'copy', :via => [:get, :post]
314 match 'workflows/copy', :controller => 'workflows', :action => 'copy', :via => [:get, :post]
313 match 'settings', :controller => 'settings', :action => 'index', :via => :get
315 match 'settings', :controller => 'settings', :action => 'index', :via => :get
314 match 'settings/edit', :controller => 'settings', :action => 'edit', :via => [:get, :post]
316 match 'settings/edit', :controller => 'settings', :action => 'edit', :via => [:get, :post]
315 match 'settings/plugin/:id', :controller => 'settings', :action => 'plugin', :via => [:get, :post]
317 match 'settings/plugin/:id', :controller => 'settings', :action => 'plugin', :via => [:get, :post]
316
318
317 match 'sys/projects', :to => 'sys#projects', :via => :get
319 match 'sys/projects', :to => 'sys#projects', :via => :get
318 match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post
320 match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post
319 match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => :get
321 match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => :get
320
322
321 match 'uploads', :to => 'attachments#upload', :via => :post
323 match 'uploads', :to => 'attachments#upload', :via => :post
322
324
323 get 'robots.txt', :to => 'welcome#robots'
325 get 'robots.txt', :to => 'welcome#robots'
324
326
325 Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
327 Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir|
326 file = File.join(plugin_dir, "config/routes.rb")
328 file = File.join(plugin_dir, "config/routes.rb")
327 if File.exists?(file)
329 if File.exists?(file)
328 begin
330 begin
329 instance_eval File.read(file)
331 instance_eval File.read(file)
330 rescue Exception => e
332 rescue Exception => e
331 puts "An error occurred while loading the routes definition of #{File.basename(plugin_dir)} plugin (#{file}): #{e.message}."
333 puts "An error occurred while loading the routes definition of #{File.basename(plugin_dir)} plugin (#{file}): #{e.message}."
332 exit 1
334 exit 1
333 end
335 end
334 end
336 end
335 end
337 end
336 end
338 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