Mercurial > hg > soundsoftware-site
comparison test/unit/user_test.rb @ 1517:dffacf8a6908 redmine-2.5
Update to Redmine SVN revision 13367 on 2.5-stable branch
author | Chris Cannam |
---|---|
date | Tue, 09 Sep 2014 09:29:00 +0100 |
parents | e248c7af89ec |
children |
comparison
equal
deleted
inserted
replaced
1516:b450a9d58aed | 1517:dffacf8a6908 |
---|---|
32 @jsmith = User.find(2) | 32 @jsmith = User.find(2) |
33 @dlopper = User.find(3) | 33 @dlopper = User.find(3) |
34 end | 34 end |
35 | 35 |
36 def test_sorted_scope_should_sort_user_by_display_name | 36 def test_sorted_scope_should_sort_user_by_display_name |
37 assert_equal User.all.map(&:name).map(&:downcase).sort, User.sorted.all.map(&:name).map(&:downcase) | 37 assert_equal User.all.map(&:name).map(&:downcase).sort, |
38 User.sorted.map(&:name).map(&:downcase) | |
38 end | 39 end |
39 | 40 |
40 def test_generate | 41 def test_generate |
41 User.generate!(:firstname => 'Testing connection') | 42 User.generate!(:firstname => 'Testing connection') |
42 User.generate!(:firstname => 'Testing connection') | 43 User.generate!(:firstname => 'Testing connection') |
136 def test_user_login_should_be_case_insensitive | 137 def test_user_login_should_be_case_insensitive |
137 u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") | 138 u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") |
138 u.login = 'newuser' | 139 u.login = 'newuser' |
139 u.password, u.password_confirmation = "password", "password" | 140 u.password, u.password_confirmation = "password", "password" |
140 assert u.save | 141 assert u.save |
141 u = User.new(:firstname => "Similar", :lastname => "User", :mail => "similaruser@somenet.foo") | 142 u = User.new(:firstname => "Similar", :lastname => "User", |
143 :mail => "similaruser@somenet.foo") | |
142 u.login = 'NewUser' | 144 u.login = 'NewUser' |
143 u.password, u.password_confirmation = "password", "password" | 145 u.password, u.password_confirmation = "password", "password" |
144 assert !u.save | 146 assert !u.save |
145 assert_include I18n.translate('activerecord.errors.messages.taken'), u.errors[:login] | 147 assert_include I18n.translate('activerecord.errors.messages.taken'), u.errors[:login] |
146 end | 148 end |
179 user.firstname = "firstname" | 181 user.firstname = "firstname" |
180 assert user.save, "Save failed" | 182 assert user.save, "Save failed" |
181 end | 183 end |
182 | 184 |
183 def test_destroy_should_delete_members_and_roles | 185 def test_destroy_should_delete_members_and_roles |
184 members = Member.find_all_by_user_id(2) | 186 members = Member.where(:user_id => 2) |
185 ms = members.size | 187 ms = members.count |
186 rs = members.collect(&:roles).flatten.size | 188 rs = members.collect(&:roles).flatten.size |
187 | 189 assert ms > 0 |
190 assert rs > 0 | |
188 assert_difference 'Member.count', - ms do | 191 assert_difference 'Member.count', - ms do |
189 assert_difference 'MemberRole.count', - rs do | 192 assert_difference 'MemberRole.count', - rs do |
190 User.find(2).destroy | 193 User.find(2).destroy |
191 end | 194 end |
192 end | 195 end |
193 | 196 assert_nil User.find_by_id(2) |
194 assert_nil User.find_by_id(2) | 197 assert_equal 0, Member.where(:user_id => 2).count |
195 assert Member.find_all_by_user_id(2).empty? | |
196 end | 198 end |
197 | 199 |
198 def test_destroy_should_update_attachments | 200 def test_destroy_should_update_attachments |
199 attachment = Attachment.create!(:container => Project.find(1), | 201 attachment = Attachment.create!(:container => Project.find(1), |
200 :file => uploaded_test_file("testfile.txt", "text/plain"), | 202 :file => uploaded_test_file("testfile.txt", "text/plain"), |
205 assert_equal User.anonymous, attachment.reload.author | 207 assert_equal User.anonymous, attachment.reload.author |
206 end | 208 end |
207 | 209 |
208 def test_destroy_should_update_comments | 210 def test_destroy_should_update_comments |
209 comment = Comment.create!( | 211 comment = Comment.create!( |
210 :commented => News.create!(:project_id => 1, :author_id => 1, :title => 'foo', :description => 'foo'), | 212 :commented => News.create!(:project_id => 1, |
213 :author_id => 1, :title => 'foo', :description => 'foo'), | |
211 :author => User.find(2), | 214 :author => User.find(2), |
212 :comments => 'foo' | 215 :comments => 'foo' |
213 ) | 216 ) |
214 | 217 |
215 User.find(2).destroy | 218 User.find(2).destroy |
216 assert_nil User.find_by_id(2) | 219 assert_nil User.find_by_id(2) |
217 assert_equal User.anonymous, comment.reload.author | 220 assert_equal User.anonymous, comment.reload.author |
218 end | 221 end |
219 | 222 |
220 def test_destroy_should_update_issues | 223 def test_destroy_should_update_issues |
221 issue = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'foo') | 224 issue = Issue.create!(:project_id => 1, :author_id => 2, |
225 :tracker_id => 1, :subject => 'foo') | |
222 | 226 |
223 User.find(2).destroy | 227 User.find(2).destroy |
224 assert_nil User.find_by_id(2) | 228 assert_nil User.find_by_id(2) |
225 assert_equal User.anonymous, issue.reload.author | 229 assert_equal User.anonymous, issue.reload.author |
226 end | 230 end |
227 | 231 |
228 def test_destroy_should_unassign_issues | 232 def test_destroy_should_unassign_issues |
229 issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) | 233 issue = Issue.create!(:project_id => 1, :author_id => 1, |
234 :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) | |
230 | 235 |
231 User.find(2).destroy | 236 User.find(2).destroy |
232 assert_nil User.find_by_id(2) | 237 assert_nil User.find_by_id(2) |
233 assert_nil issue.reload.assigned_to | 238 assert_nil issue.reload.assigned_to |
234 end | 239 end |
235 | 240 |
236 def test_destroy_should_update_journals | 241 def test_destroy_should_update_journals |
237 issue = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'foo') | 242 issue = Issue.create!(:project_id => 1, :author_id => 2, |
243 :tracker_id => 1, :subject => 'foo') | |
238 issue.init_journal(User.find(2), "update") | 244 issue.init_journal(User.find(2), "update") |
239 issue.save! | 245 issue.save! |
240 | 246 |
241 User.find(2).destroy | 247 User.find(2).destroy |
242 assert_nil User.find_by_id(2) | 248 assert_nil User.find_by_id(2) |
243 assert_equal User.anonymous, issue.journals.first.reload.user | 249 assert_equal User.anonymous, issue.journals.first.reload.user |
244 end | 250 end |
245 | 251 |
246 def test_destroy_should_update_journal_details_old_value | 252 def test_destroy_should_update_journal_details_old_value |
247 issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) | 253 issue = Issue.create!(:project_id => 1, :author_id => 1, |
254 :tracker_id => 1, :subject => 'foo', :assigned_to_id => 2) | |
248 issue.init_journal(User.find(1), "update") | 255 issue.init_journal(User.find(1), "update") |
249 issue.assigned_to_id = nil | 256 issue.assigned_to_id = nil |
250 assert_difference 'JournalDetail.count' do | 257 assert_difference 'JournalDetail.count' do |
251 issue.save! | 258 issue.save! |
252 end | 259 end |
253 journal_detail = JournalDetail.first(:order => 'id DESC') | 260 journal_detail = JournalDetail.order('id DESC').first |
254 assert_equal '2', journal_detail.old_value | 261 assert_equal '2', journal_detail.old_value |
255 | 262 |
256 User.find(2).destroy | 263 User.find(2).destroy |
257 assert_nil User.find_by_id(2) | 264 assert_nil User.find_by_id(2) |
258 assert_equal User.anonymous.id.to_s, journal_detail.reload.old_value | 265 assert_equal User.anonymous.id.to_s, journal_detail.reload.old_value |
259 end | 266 end |
260 | 267 |
261 def test_destroy_should_update_journal_details_value | 268 def test_destroy_should_update_journal_details_value |
262 issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo') | 269 issue = Issue.create!(:project_id => 1, :author_id => 1, |
270 :tracker_id => 1, :subject => 'foo') | |
263 issue.init_journal(User.find(1), "update") | 271 issue.init_journal(User.find(1), "update") |
264 issue.assigned_to_id = 2 | 272 issue.assigned_to_id = 2 |
265 assert_difference 'JournalDetail.count' do | 273 assert_difference 'JournalDetail.count' do |
266 issue.save! | 274 issue.save! |
267 end | 275 end |
268 journal_detail = JournalDetail.first(:order => 'id DESC') | 276 journal_detail = JournalDetail.order('id DESC').first |
269 assert_equal '2', journal_detail.value | 277 assert_equal '2', journal_detail.value |
270 | 278 |
271 User.find(2).destroy | 279 User.find(2).destroy |
272 assert_nil User.find_by_id(2) | 280 assert_nil User.find_by_id(2) |
273 assert_equal User.anonymous.id.to_s, journal_detail.reload.value | 281 assert_equal User.anonymous.id.to_s, journal_detail.reload.value |
274 end | 282 end |
275 | 283 |
276 def test_destroy_should_update_messages | 284 def test_destroy_should_update_messages |
277 board = Board.create!(:project_id => 1, :name => 'Board', :description => 'Board') | 285 board = Board.create!(:project_id => 1, :name => 'Board', :description => 'Board') |
278 message = Message.create!(:board_id => board.id, :author_id => 2, :subject => 'foo', :content => 'foo') | 286 message = Message.create!(:board_id => board.id, :author_id => 2, |
279 | 287 :subject => 'foo', :content => 'foo') |
280 User.find(2).destroy | 288 User.find(2).destroy |
281 assert_nil User.find_by_id(2) | 289 assert_nil User.find_by_id(2) |
282 assert_equal User.anonymous, message.reload.author | 290 assert_equal User.anonymous, message.reload.author |
283 end | 291 end |
284 | 292 |
285 def test_destroy_should_update_news | 293 def test_destroy_should_update_news |
286 news = News.create!(:project_id => 1, :author_id => 2, :title => 'foo', :description => 'foo') | 294 news = News.create!(:project_id => 1, :author_id => 2, |
287 | 295 :title => 'foo', :description => 'foo') |
288 User.find(2).destroy | 296 User.find(2).destroy |
289 assert_nil User.find_by_id(2) | 297 assert_nil User.find_by_id(2) |
290 assert_equal User.anonymous, news.reload.author | 298 assert_equal User.anonymous, news.reload.author |
291 end | 299 end |
292 | 300 |
311 assert_nil User.find_by_id(2) | 319 assert_nil User.find_by_id(2) |
312 assert_equal User.anonymous, query.reload.user | 320 assert_equal User.anonymous, query.reload.user |
313 end | 321 end |
314 | 322 |
315 def test_destroy_should_update_time_entries | 323 def test_destroy_should_update_time_entries |
316 entry = TimeEntry.new(:hours => '2', :spent_on => Date.today, :activity => TimeEntryActivity.create!(:name => 'foo')) | 324 entry = TimeEntry.new(:hours => '2', :spent_on => Date.today, |
325 :activity => TimeEntryActivity.create!(:name => 'foo')) | |
317 entry.project_id = 1 | 326 entry.project_id = 1 |
318 entry.user_id = 2 | 327 entry.user_id = 2 |
319 entry.save! | 328 entry.save! |
320 | 329 |
321 User.find(2).destroy | 330 User.find(2).destroy |
330 assert_nil User.find_by_id(2) | 339 assert_nil User.find_by_id(2) |
331 assert_nil Token.find_by_id(token.id) | 340 assert_nil Token.find_by_id(token.id) |
332 end | 341 end |
333 | 342 |
334 def test_destroy_should_delete_watchers | 343 def test_destroy_should_delete_watchers |
335 issue = Issue.create!(:project_id => 1, :author_id => 1, :tracker_id => 1, :subject => 'foo') | 344 issue = Issue.create!(:project_id => 1, :author_id => 1, |
345 :tracker_id => 1, :subject => 'foo') | |
336 watcher = Watcher.create!(:user_id => 2, :watchable => issue) | 346 watcher = Watcher.create!(:user_id => 2, :watchable => issue) |
337 | 347 |
338 User.find(2).destroy | 348 User.find(2).destroy |
339 assert_nil User.find_by_id(2) | 349 assert_nil User.find_by_id(2) |
340 assert_nil Watcher.find_by_id(watcher.id) | 350 assert_nil Watcher.find_by_id(watcher.id) |
342 | 352 |
343 def test_destroy_should_update_wiki_contents | 353 def test_destroy_should_update_wiki_contents |
344 wiki_content = WikiContent.create!( | 354 wiki_content = WikiContent.create!( |
345 :text => 'foo', | 355 :text => 'foo', |
346 :author_id => 2, | 356 :author_id => 2, |
347 :page => WikiPage.create!(:title => 'Foo', :wiki => Wiki.create!(:project_id => 1, :start_page => 'Start')) | 357 :page => WikiPage.create!(:title => 'Foo', |
358 :wiki => Wiki.create!(:project_id => 3, | |
359 :start_page => 'Start')) | |
348 ) | 360 ) |
349 wiki_content.text = 'bar' | 361 wiki_content.text = 'bar' |
350 assert_difference 'WikiContent::Version.count' do | 362 assert_difference 'WikiContent::Version.count' do |
351 wiki_content.save! | 363 wiki_content.save! |
352 end | 364 end |
416 assert_equal "admin", user.login | 428 assert_equal "admin", user.login |
417 end | 429 end |
418 | 430 |
419 def test_validate_password_length | 431 def test_validate_password_length |
420 with_settings :password_min_length => '100' do | 432 with_settings :password_min_length => '100' do |
421 user = User.new(:firstname => "new100", :lastname => "user100", :mail => "newuser100@somenet.foo") | 433 user = User.new(:firstname => "new100", |
434 :lastname => "user100", :mail => "newuser100@somenet.foo") | |
422 user.login = "newuser100" | 435 user.login = "newuser100" |
423 user.password, user.password_confirmation = "password100", "password100" | 436 user.password, user.password_confirmation = "password100", "password100" |
424 assert !user.save | 437 assert !user.save |
425 assert_equal 1, user.errors.count | 438 assert_equal 1, user.errors.count |
426 end | 439 end |
427 end | 440 end |
428 | 441 |
429 def test_name_format | 442 def test_name_format |
430 assert_equal 'John S.', @jsmith.name(:firstname_lastinitial) | 443 assert_equal 'John S.', @jsmith.name(:firstname_lastinitial) |
431 assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname) | 444 assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname) |
445 assert_equal 'J. Smith', @jsmith.name(:firstinitial_lastname) | |
446 assert_equal 'J.-P. Lang', User.new(:firstname => 'Jean-Philippe', :lastname => 'Lang').name(:firstinitial_lastname) | |
447 end | |
448 | |
449 def test_name_should_use_setting_as_default_format | |
432 with_settings :user_format => :firstname_lastname do | 450 with_settings :user_format => :firstname_lastname do |
433 assert_equal 'John Smith', @jsmith.reload.name | 451 assert_equal 'John Smith', @jsmith.reload.name |
434 end | 452 end |
435 with_settings :user_format => :username do | 453 with_settings :user_format => :username do |
436 assert_equal 'jsmith', @jsmith.reload.name | 454 assert_equal 'jsmith', @jsmith.reload.name |
471 assert_equal '2012-05-15', User.find(1).time_to_date(time).to_s | 489 assert_equal '2012-05-15', User.find(1).time_to_date(time).to_s |
472 end | 490 end |
473 | 491 |
474 def test_fields_for_order_statement_should_return_fields_according_user_format_setting | 492 def test_fields_for_order_statement_should_return_fields_according_user_format_setting |
475 with_settings :user_format => 'lastname_coma_firstname' do | 493 with_settings :user_format => 'lastname_coma_firstname' do |
476 assert_equal ['users.lastname', 'users.firstname', 'users.id'], User.fields_for_order_statement | 494 assert_equal ['users.lastname', 'users.firstname', 'users.id'], |
495 User.fields_for_order_statement | |
477 end | 496 end |
478 end | 497 end |
479 | 498 |
480 def test_fields_for_order_statement_width_table_name_should_prepend_table_name | 499 def test_fields_for_order_statement_width_table_name_should_prepend_table_name |
481 with_settings :user_format => 'lastname_firstname' do | 500 with_settings :user_format => 'lastname_firstname' do |
482 assert_equal ['authors.lastname', 'authors.firstname', 'authors.id'], User.fields_for_order_statement('authors') | 501 assert_equal ['authors.lastname', 'authors.firstname', 'authors.id'], |
502 User.fields_for_order_statement('authors') | |
483 end | 503 end |
484 end | 504 end |
485 | 505 |
486 def test_fields_for_order_statement_with_blank_format_should_return_default | 506 def test_fields_for_order_statement_with_blank_format_should_return_default |
487 with_settings :user_format => '' do | 507 with_settings :user_format => '' do |
488 assert_equal ['users.firstname', 'users.lastname', 'users.id'], User.fields_for_order_statement | 508 assert_equal ['users.firstname', 'users.lastname', 'users.id'], |
509 User.fields_for_order_statement | |
489 end | 510 end |
490 end | 511 end |
491 | 512 |
492 def test_fields_for_order_statement_with_invalid_format_should_return_default | 513 def test_fields_for_order_statement_with_invalid_format_should_return_default |
493 with_settings :user_format => 'foo' do | 514 with_settings :user_format => 'foo' do |
494 assert_equal ['users.firstname', 'users.lastname', 'users.id'], User.fields_for_order_statement | 515 assert_equal ['users.firstname', 'users.lastname', 'users.id'], |
516 User.fields_for_order_statement | |
495 end | 517 end |
496 end | 518 end |
497 | 519 |
498 test ".try_to_login with good credentials should return the user" do | 520 test ".try_to_login with good credentials should return the user" do |
499 user = User.try_to_login("admin", "admin") | 521 user = User.try_to_login("admin", "admin") |
1096 assert user.check_password?("unsalted") | 1118 assert user.check_password?("unsalted") |
1097 assert_equal user, User.try_to_login(user.login, "unsalted") | 1119 assert_equal user, User.try_to_login(user.login, "unsalted") |
1098 end | 1120 end |
1099 | 1121 |
1100 if Object.const_defined?(:OpenID) | 1122 if Object.const_defined?(:OpenID) |
1101 | 1123 def test_setting_identity_url |
1102 def test_setting_identity_url | 1124 normalized_open_id_url = 'http://example.com/' |
1103 normalized_open_id_url = 'http://example.com/' | 1125 u = User.new( :identity_url => 'http://example.com/' ) |
1104 u = User.new( :identity_url => 'http://example.com/' ) | 1126 assert_equal normalized_open_id_url, u.identity_url |
1105 assert_equal normalized_open_id_url, u.identity_url | 1127 end |
1106 end | 1128 |
1107 | 1129 def test_setting_identity_url_without_trailing_slash |
1108 def test_setting_identity_url_without_trailing_slash | 1130 normalized_open_id_url = 'http://example.com/' |
1109 normalized_open_id_url = 'http://example.com/' | 1131 u = User.new( :identity_url => 'http://example.com' ) |
1110 u = User.new( :identity_url => 'http://example.com' ) | 1132 assert_equal normalized_open_id_url, u.identity_url |
1111 assert_equal normalized_open_id_url, u.identity_url | 1133 end |
1112 end | 1134 |
1113 | 1135 def test_setting_identity_url_without_protocol |
1114 def test_setting_identity_url_without_protocol | 1136 normalized_open_id_url = 'http://example.com/' |
1115 normalized_open_id_url = 'http://example.com/' | 1137 u = User.new( :identity_url => 'example.com' ) |
1116 u = User.new( :identity_url => 'example.com' ) | 1138 assert_equal normalized_open_id_url, u.identity_url |
1117 assert_equal normalized_open_id_url, u.identity_url | 1139 end |
1118 end | 1140 |
1119 | 1141 def test_setting_blank_identity_url |
1120 def test_setting_blank_identity_url | 1142 u = User.new( :identity_url => 'example.com' ) |
1121 u = User.new( :identity_url => 'example.com' ) | 1143 u.identity_url = '' |
1122 u.identity_url = '' | 1144 assert u.identity_url.blank? |
1123 assert u.identity_url.blank? | 1145 end |
1124 end | 1146 |
1125 | 1147 def test_setting_invalid_identity_url |
1126 def test_setting_invalid_identity_url | 1148 u = User.new( :identity_url => 'this is not an openid url' ) |
1127 u = User.new( :identity_url => 'this is not an openid url' ) | 1149 assert u.identity_url.blank? |
1128 assert u.identity_url.blank? | 1150 end |
1129 end | |
1130 | |
1131 else | 1151 else |
1132 puts "Skipping openid tests." | 1152 puts "Skipping openid tests." |
1133 end | 1153 end |
1134 | |
1135 end | 1154 end |