Feature #30820 » 0001-Remove-setting-Blind-carbon-copy-recipients-bcc.patch
| app/models/mailer.rb | ||
|---|---|---|
| 651 | 651 |
redmine_headers 'Sender' => @author.login |
| 652 | 652 |
end |
| 653 | 653 | |
| 654 |
# Blind carbon copy recipients |
|
| 655 |
if Setting.bcc_recipients? |
|
| 656 |
headers[:bcc] = [headers[:to], headers[:cc]].flatten.uniq.reject(&:blank?) |
|
| 657 |
headers[:to] = nil |
|
| 658 |
headers[:cc] = nil |
|
| 659 |
end |
|
| 660 | ||
| 661 | 654 |
if @message_id_object |
| 662 | 655 |
headers[:message_id] = "<#{self.class.message_id_for(@message_id_object)}>"
|
| 663 | 656 |
end |
| app/views/settings/_notifications.html.erb | ||
|---|---|---|
| 4 | 4 |
<div class="box tabular settings"> |
| 5 | 5 |
<p><%= setting_text_field :mail_from, :size => 60 %></p> |
| 6 | 6 | |
| 7 |
<p><%= setting_check_box :bcc_recipients %></p> |
|
| 8 | ||
| 9 | 7 |
<p><%= setting_check_box :plain_text_mail %></p> |
| 10 | 8 |
</div> |
| 11 | 9 | |
| config/settings.yml | ||
|---|---|---|
| 78 | 78 |
default: 10 |
| 79 | 79 |
mail_from: |
| 80 | 80 |
default: redmine@example.net |
| 81 |
bcc_recipients: |
|
| 82 |
default: 1 |
|
| 83 | 81 |
plain_text_mail: |
| 84 | 82 |
default: 0 |
| 85 | 83 |
text_formatting: |
| db/migrate/20190217164229_remove_bcc_recipients_setting.rb | ||
|---|---|---|
| 1 |
class RemoveBccRecipientsSetting < ActiveRecord::Migration[5.2] |
|
| 2 |
def change |
|
| 3 |
Setting.where(:name => 'bcc_recipients').delete_all |
|
| 4 |
end |
|
| 5 |
end |
|
| test/functional/account_controller_test.rb | ||
|---|---|---|
| 310 | 310 |
:firstname => 'John', |
| 311 | 311 |
:lastname => 'Doe', |
| 312 | 312 |
:mail => 'register@example.com' |
| 313 |
|
|
| 313 | ||
| 314 | 314 |
} |
| 315 | 315 |
} |
| 316 | 316 |
assert_redirected_to '/my/account' |
| ... | ... | |
| 324 | 324 |
assert user.active? |
| 325 | 325 |
end |
| 326 | 326 |
end |
| 327 |
|
|
| 327 | ||
| 328 | 328 |
def test_post_register_with_registration_off_should_redirect |
| 329 | 329 |
with_settings :self_registration => '0' do |
| 330 | 330 |
assert_no_difference 'User.count' do |
| ... | ... | |
| 336 | 336 |
:firstname => 'John', |
| 337 | 337 |
:lastname => 'Doe', |
| 338 | 338 |
:mail => 'register@example.com' |
| 339 |
|
|
| 339 | ||
| 340 | 340 |
} |
| 341 | 341 |
} |
| 342 | 342 |
assert_redirected_to '/' |
| ... | ... | |
| 355 | 355 |
:firstname => 'John', |
| 356 | 356 |
:lastname => 'Doe', |
| 357 | 357 |
:mail => 'register@example.com' |
| 358 |
|
|
| 359 |
},
|
|
| 358 | ||
| 359 |
}, |
|
| 360 | 360 |
:pref => {
|
| 361 | 361 |
:hide_mail => '1' |
| 362 |
|
|
| 362 | ||
| 363 | 363 |
} |
| 364 | 364 |
} |
| 365 | 365 |
end |
| ... | ... | |
| 406 | 406 |
end |
| 407 | 407 |
end |
| 408 | 408 |
mail = ActionMailer::Base.deliveries.last |
| 409 |
assert_equal ['jsmith@somenet.foo'], mail.bcc
|
|
| 409 |
assert_equal ['jsmith@somenet.foo'], mail.to
|
|
| 410 | 410 |
end |
| 411 | 411 | |
| 412 | 412 |
def test_lost_password_using_additional_email_address_should_send_email_to_the_address |
| ... | ... | |
| 422 | 422 |
end |
| 423 | 423 |
end |
| 424 | 424 |
mail = ActionMailer::Base.deliveries.last |
| 425 |
assert_equal ['anotherAddress@foo.bar'], mail.bcc
|
|
| 425 |
assert_equal ['anotherAddress@foo.bar'], mail.to
|
|
| 426 | 426 |
end |
| 427 | 427 | |
| 428 | 428 |
def test_lost_password_for_unknown_user_should_fail |
| test/functional/admin_controller_test.rb | ||
|---|---|---|
| 93 | 93 |
mail = ActionMailer::Base.deliveries.last |
| 94 | 94 |
assert_not_nil mail |
| 95 | 95 |
user = User.find(1) |
| 96 |
assert_equal [user.mail], mail.bcc
|
|
| 96 |
assert_equal [user.mail], mail.to
|
|
| 97 | 97 |
end |
| 98 | 98 | |
| 99 | 99 |
def test_test_email_failure_should_display_the_error |
| test/functional/email_addresses_controller_test.rb | ||
|---|---|---|
| 133 | 133 |
assert_select 'a[href^=?]', 'http://localhost:3000/my/account', :text => 'My account' |
| 134 | 134 |
end |
| 135 | 135 |
# The old email address should be notified about a new address for security purposes |
| 136 |
assert [mail.bcc, mail.cc].flatten.include?(User.find(2).mail)
|
|
| 137 |
assert [mail.bcc, mail.cc].flatten.include?('something@example.fr')
|
|
| 136 |
assert mail.to.include?(User.find(2).mail)
|
|
| 137 |
assert mail.to.include?('something@example.fr')
|
|
| 138 | 138 |
end |
| 139 | 139 | |
| 140 | 140 |
def test_update |
| ... | ... | |
| 182 | 182 |
assert_mail_body_match I18n.t(:mail_body_security_notification_notify_disabled, value: 'another@somenet.foo'), mail |
| 183 | 183 | |
| 184 | 184 |
# The changed address should be notified for security purposes |
| 185 |
assert [mail.bcc, mail.cc].flatten.include?('another@somenet.foo')
|
|
| 185 |
assert mail.to.include?('another@somenet.foo')
|
|
| 186 | 186 |
end |
| 187 | 187 | |
| 188 | 188 | |
| ... | ... | |
| 241 | 241 |
assert_mail_body_match I18n.t(:mail_body_security_notification_remove, field: I18n.t(:field_mail), value: 'another@somenet.foo'), mail |
| 242 | 242 | |
| 243 | 243 |
# The removed address should be notified for security purposes |
| 244 |
assert [mail.bcc, mail.cc].flatten.include?('another@somenet.foo')
|
|
| 244 |
assert mail.to.include?('another@somenet.foo')
|
|
| 245 | 245 |
end |
| 246 | 246 |
end |
| test/functional/issues_controller_test.rb | ||
|---|---|---|
| 3419 | 3419 |
# Watchers notified |
| 3420 | 3420 |
mail = ActionMailer::Base.deliveries.last |
| 3421 | 3421 |
assert_not_nil mail |
| 3422 |
assert [mail.bcc, mail.cc].flatten.include?(User.find(3).mail)
|
|
| 3422 |
assert mail.to.include?(User.find(3).mail)
|
|
| 3423 | 3423 |
end |
| 3424 | 3424 | |
| 3425 | 3425 |
def test_post_create_subissue |
| test/functional/issues_custom_fields_visibility_test.rb | ||
|---|---|---|
| 172 | 172 |
:id => @issue.id, |
| 173 | 173 |
:issue => {
|
| 174 | 174 |
:custom_field_values => {
|
| 175 |
@field1.id.to_s => "User#{user.id}Value0",
|
|
| 176 |
@field2.id.to_s => "User#{user.id}Value1",
|
|
| 175 |
@field1.id.to_s => "User#{user.id}Value0",
|
|
| 176 |
@field2.id.to_s => "User#{user.id}Value1",
|
|
| 177 | 177 |
@field3.id.to_s => "User#{user.id}Value2",
|
| 178 | 178 |
} |
| 179 | 179 |
} |
| ... | ... | |
| 268 | 268 | |
| 269 | 269 |
ActionMailer::Base.deliveries.clear |
| 270 | 270 |
@request.session[:user_id] = 1 |
| 271 |
with_settings :bcc_recipients => '1' do |
|
| 272 | 271 |
assert_difference 'Issue.count' do |
| 273 |
post :create, :params => {
|
|
| 274 |
:project_id => 1, |
|
| 275 |
:issue => {
|
|
| 276 |
:tracker_id => 1, |
|
| 277 |
:status_id => 1, |
|
| 278 |
:subject => 'New issue', |
|
| 279 |
:priority_id => 5, |
|
| 280 |
:custom_field_values => {
|
|
| 281 |
@field1.id.to_s => 'Value0', @field2.id.to_s => 'Value1', @field3.id.to_s => 'Value2' |
|
| 282 |
}, |
|
| 283 |
:watcher_user_ids => users_to_test.keys.map(&:id) |
|
| 284 |
|
|
| 285 |
} |
|
| 272 |
post :create, :params => {
|
|
| 273 |
:project_id => 1, |
|
| 274 |
:issue => {
|
|
| 275 |
:tracker_id => 1, |
|
| 276 |
:status_id => 1, |
|
| 277 |
:subject => 'New issue', |
|
| 278 |
:priority_id => 5, |
|
| 279 |
:custom_field_values => {
|
|
| 280 |
@field1.id.to_s => 'Value0', @field2.id.to_s => 'Value1', @field3.id.to_s => 'Value2' |
|
| 281 |
}, |
|
| 282 |
:watcher_user_ids => users_to_test.keys.map(&:id) |
|
| 283 | ||
| 286 | 284 |
} |
| 287 |
assert_response 302 |
|
| 288 |
end |
|
| 285 |
} |
|
| 286 | ||
| 287 |
assert_response 302 |
|
| 289 | 288 |
end |
| 290 | 289 | |
| 291 | 290 |
assert_equal users_to_test.keys.size, ActionMailer::Base.deliveries.size |
| 292 | 291 |
# tests that each user receives 1 email with the custom fields he is allowed to see only |
| 293 | 292 |
users_to_test.each do |user, fields| |
| 294 |
mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
|
|
| 293 |
mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
|
|
| 295 | 294 |
assert_equal 1, mails.size |
| 296 | 295 |
mail = mails.first |
| 297 | 296 |
@fields.each_with_index do |field, i| |
| ... | ... | |
| 313 | 312 |
end |
| 314 | 313 |
ActionMailer::Base.deliveries.clear |
| 315 | 314 |
@request.session[:user_id] = 1 |
| 316 |
with_settings :bcc_recipients => '1' do |
|
| 317 |
put :update, :params => {
|
|
| 318 |
:id => @issue.id, |
|
| 319 |
:issue => {
|
|
| 320 |
:custom_field_values => {
|
|
| 321 |
@field1.id.to_s => 'NewValue0', @field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2' |
|
| 322 |
} |
|
| 323 |
|
|
| 315 |
put :update, :params => {
|
|
| 316 |
:id => @issue.id, |
|
| 317 |
:issue => {
|
|
| 318 |
:custom_field_values => {
|
|
| 319 |
@field1.id.to_s => 'NewValue0', @field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2' |
|
| 324 | 320 |
} |
| 321 | ||
| 325 | 322 |
} |
| 326 |
assert_response 302 |
|
| 327 |
end |
|
| 323 |
} |
|
| 324 | ||
| 325 |
assert_response 302 |
|
| 328 | 326 |
assert_equal users_to_test.keys.size, ActionMailer::Base.deliveries.size |
| 329 | 327 |
# tests that each user receives 1 email with the custom fields he is allowed to see only |
| 330 | 328 |
users_to_test.each do |user, fields| |
| 331 |
mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
|
|
| 329 |
mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
|
|
| 332 | 330 |
assert_equal 1, mails.size |
| 333 | 331 |
mail = mails.first |
| 334 | 332 |
@fields.each_with_index do |field, i| |
| ... | ... | |
| 350 | 348 |
end |
| 351 | 349 |
ActionMailer::Base.deliveries.clear |
| 352 | 350 |
@request.session[:user_id] = 1 |
| 353 |
with_settings :bcc_recipients => '1' do |
|
| 354 |
put :update, :params => {
|
|
| 355 |
:id => @issue.id, |
|
| 356 |
:issue => {
|
|
| 357 |
:custom_field_values => {
|
|
| 358 |
@field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2' |
|
| 359 |
} |
|
| 360 |
|
|
| 351 |
put :update, :params => {
|
|
| 352 |
:id => @issue.id, |
|
| 353 |
:issue => {
|
|
| 354 |
:custom_field_values => {
|
|
| 355 |
@field2.id.to_s => 'NewValue1', @field3.id.to_s => 'NewValue2' |
|
| 361 | 356 |
} |
| 357 | ||
| 362 | 358 |
} |
| 363 |
assert_response 302 |
|
| 364 |
end |
|
| 359 |
} |
|
| 360 |
assert_response 302 |
|
| 361 | ||
| 365 | 362 |
users_to_test.each do |user, fields| |
| 366 |
mails = ActionMailer::Base.deliveries.select {|m| m.bcc.include? user.mail}
|
|
| 363 |
mails = ActionMailer::Base.deliveries.select {|m| m.to.include? user.mail}
|
|
| 367 | 364 |
if (fields & [@field2, @field3]).any? |
| 368 | 365 |
assert_equal 1, mails.size, "User #{user.id} was not notified"
|
| 369 | 366 |
else |
| test/functional/messages_controller_test.rb | ||
|---|---|---|
| 145 | 145 |
end |
| 146 | 146 | |
| 147 | 147 |
# author |
| 148 |
assert_equal ['jsmith@somenet.foo'], mails[0].bcc
|
|
| 148 |
assert_equal ['jsmith@somenet.foo'], mails[0].to
|
|
| 149 | 149 |
# project member |
| 150 |
assert_equal ['dlopper@somenet.foo'], mails[1].bcc
|
|
| 150 |
assert_equal ['dlopper@somenet.foo'], mails[1].to
|
|
| 151 | 151 |
end |
| 152 | 152 | |
| 153 | 153 |
def test_get_edit |
| test/functional/my_controller_test.rb | ||
|---|---|---|
| 391 | 391 |
assert_select 'a[href^=?]', 'http://localhost:3000/my/account', :text => 'My account' |
| 392 | 392 |
end |
| 393 | 393 |
# The old email address should be notified about the change for security purposes |
| 394 |
assert [mail.bcc, mail.cc].flatten.include?(User.find(2).mail)
|
|
| 395 |
assert [mail.bcc, mail.cc].flatten.include?('foobar@example.com')
|
|
| 394 |
assert mail.to.include?(User.find(2).mail)
|
|
| 395 |
assert mail.to.include?('foobar@example.com')
|
|
| 396 | 396 |
end |
| 397 | 397 | |
| 398 | 398 |
def test_my_account_should_show_destroy_link |
| test/functional/settings_controller_test.rb | ||
|---|---|---|
| 76 | 76 |
post :edit, :params => {
|
| 77 | 77 |
:settings => {
|
| 78 | 78 |
:mail_from => 'functional@test.foo', |
| 79 |
:bcc_recipients => '0', |
|
| 80 | 79 |
:notified_events => %w(issue_added issue_updated news_added), |
| 81 | 80 |
:emails_footer => 'Test footer' |
| 82 | 81 |
} |
| 83 | 82 |
} |
| 84 | 83 |
assert_redirected_to '/settings' |
| 85 | 84 |
assert_equal 'functional@test.foo', Setting.mail_from |
| 86 |
assert !Setting.bcc_recipients? |
|
| 87 | 85 |
assert_equal %w(issue_added issue_updated news_added), Setting.notified_events |
| 88 | 86 |
assert_equal 'Test footer', Setting.emails_footer |
| 89 | 87 |
end |
| ... | ... | |
| 168 | 166 |
assert_select 'a[href^=?]', 'http://localhost:3000/settings' |
| 169 | 167 |
end |
| 170 | 168 |
# All admins should receive this |
| 171 |
recipients = [mail.bcc, mail.cc].flatten |
|
| 172 | 169 |
User.active.where(admin: true).each do |admin| |
| 173 |
assert_include admin.mail, recipients
|
|
| 170 |
assert_include admin.mail, mail.to
|
|
| 174 | 171 |
end |
| 175 | 172 |
end |
| 176 | 173 | |
| test/functional/users_controller_test.rb | ||
|---|---|---|
| 211 | 211 |
end |
| 212 | 212 | |
| 213 | 213 |
def test_create |
| 214 |
Setting.bcc_recipients = '1' |
|
| 215 | ||
| 216 | 214 |
assert_difference 'User.count' do |
| 217 | 215 |
assert_difference 'ActionMailer::Base.deliveries.size' do |
| 218 | 216 |
post :create, :params => {
|
| ... | ... | |
| 242 | 240 | |
| 243 | 241 |
mail = ActionMailer::Base.deliveries.last |
| 244 | 242 |
assert_not_nil mail |
| 245 |
assert_equal [user.mail], mail.bcc
|
|
| 243 |
assert_equal [user.mail], mail.to
|
|
| 246 | 244 |
assert_mail_body_match 'secret', mail |
| 247 | 245 |
end |
| 248 | 246 | |
| ... | ... | |
| 369 | 367 | |
| 370 | 368 |
# All admins should receive this |
| 371 | 369 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 372 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 370 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.to].flatten.include?(admin.mail) }
|
|
| 373 | 371 |
end |
| 374 | 372 |
end |
| 375 | 373 | |
| ... | ... | |
| 451 | 449 |
u.status = User::STATUS_REGISTERED |
| 452 | 450 |
u.save! |
| 453 | 451 |
ActionMailer::Base.deliveries.clear |
| 454 |
Setting.bcc_recipients = '1' |
|
| 455 | 452 | |
| 456 | 453 |
put :update, :params => {
|
| 457 | 454 |
:id => u.id, |
| ... | ... | |
| 460 | 457 |
assert u.reload.active? |
| 461 | 458 |
mail = ActionMailer::Base.deliveries.last |
| 462 | 459 |
assert_not_nil mail |
| 463 |
assert_equal ['foo.bar@somenet.foo'], mail.bcc
|
|
| 460 |
assert_equal ['foo.bar@somenet.foo'], mail.to
|
|
| 464 | 461 |
assert_mail_body_match ll('fr', :notice_account_activated), mail
|
| 465 | 462 |
end |
| 466 | 463 | |
| 467 | 464 |
def test_update_with_password_change_should_send_a_notification |
| 468 | 465 |
ActionMailer::Base.deliveries.clear |
| 469 |
Setting.bcc_recipients = '1' |
|
| 470 | 466 | |
| 471 | 467 |
put :update, :params => {
|
| 472 | 468 |
:id => 2, |
| ... | ... | |
| 478 | 474 | |
| 479 | 475 |
mail = ActionMailer::Base.deliveries.last |
| 480 | 476 |
assert_not_nil mail |
| 481 |
assert_equal [u.mail], mail.bcc
|
|
| 477 |
assert_equal [u.mail], mail.to
|
|
| 482 | 478 |
assert_mail_body_match 'newpass123', mail |
| 483 | 479 |
end |
| 484 | 480 | |
| 485 | 481 |
def test_update_with_generate_password_should_email_the_password |
| 486 | 482 |
ActionMailer::Base.deliveries.clear |
| 487 |
Setting.bcc_recipients = '1' |
|
| 488 | 483 | |
| 489 | 484 |
put :update, :params => {
|
| 490 | 485 |
:id => 2, |
| ... | ... | |
| 582 | 577 | |
| 583 | 578 |
# All admins should receive this |
| 584 | 579 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 585 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 580 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| mail.to == [admin.mail] }
|
|
| 586 | 581 |
end |
| 587 | 582 |
end |
| 588 | 583 | |
| ... | ... | |
| 602 | 597 | |
| 603 | 598 |
# All admins should receive this |
| 604 | 599 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 605 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 600 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| mail.to == [admin.mail] }
|
|
| 606 | 601 |
end |
| 607 | 602 |
end |
| 608 | 603 | |
| ... | ... | |
| 622 | 617 | |
| 623 | 618 |
# All admins should receive this |
| 624 | 619 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 625 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 620 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| mail.to == [admin.mail] }
|
|
| 626 | 621 |
end |
| 627 | 622 | |
| 628 | 623 |
# if user is already locked, destroying should not send a second mail |
| ... | ... | |
| 648 | 643 | |
| 649 | 644 |
# All admins should receive this |
| 650 | 645 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 651 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 646 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| mail.to == [admin.mail] }
|
|
| 652 | 647 |
end |
| 653 | 648 |
end |
| 654 | 649 | |
| ... | ... | |
| 711 | 706 | |
| 712 | 707 |
# All admins should receive this |
| 713 | 708 |
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin| |
| 714 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
|
|
| 709 |
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| mail.to == [admin.mail] }
|
|
| 715 | 710 |
end |
| 716 | 711 |
end |
| 717 | 712 |
end |
| test/unit/issue_test.rb | ||
|---|---|---|
| 2570 | 2570 |
issue.assigned_to = nil |
| 2571 | 2571 |
issue.save! |
| 2572 | 2572 | |
| 2573 |
assert_include [user.mail], ActionMailer::Base.deliveries.map(&:bcc)
|
|
| 2573 |
assert_include [user.mail], ActionMailer::Base.deliveries.map(&:to)
|
|
| 2574 | 2574 |
end |
| 2575 | 2575 |
end |
| 2576 | 2576 | |
| test/unit/mailer_test.rb | ||
|---|---|---|
| 281 | 281 |
user.pref.save |
| 282 | 282 |
User.current = user |
| 283 | 283 |
Mailer.deliver_news_added(news.reload) |
| 284 |
assert_equal 1, last_email.bcc.size
|
|
| 284 |
assert_equal 1, last_email.to.size
|
|
| 285 | 285 | |
| 286 | 286 |
# nobody to notify |
| 287 | 287 |
user.pref.no_self_notified = true |
| ... | ... | |
| 365 | 365 |
issue = Issue.find(1) |
| 366 | 366 |
assert Mailer.deliver_issue_add(issue) |
| 367 | 367 | |
| 368 |
assert mail = ActionMailer::Base.deliveries.find {|m| m.bcc.include?('dlopper@somenet.foo')}
|
|
| 369 |
assert mail.bcc.include?('otheremail@somenet.foo')
|
|
| 368 |
assert mail = ActionMailer::Base.deliveries.find {|m| m.to.include?('dlopper@somenet.foo')}
|
|
| 369 |
assert mail.to.include?('otheremail@somenet.foo')
|
|
| 370 | 370 |
end |
| 371 | 371 | |
| 372 | 372 |
test "#issue_add should not notify project members that are not allow to view the issue" do |
| ... | ... | |
| 488 | 488 |
def test_version_file_added |
| 489 | 489 |
attachements = [ Attachment.find_by_container_type('Version') ]
|
| 490 | 490 |
assert Mailer.deliver_attachments_added(attachements) |
| 491 |
assert_not_nil last_email.bcc
|
|
| 492 |
assert last_email.bcc.any?
|
|
| 491 |
assert_not_nil last_email.to
|
|
| 492 |
assert last_email.to.any?
|
|
| 493 | 493 |
assert_select_email do |
| 494 | 494 |
assert_select "a[href=?]", "http://localhost:3000/projects/ecookbook/files" |
| 495 | 495 |
end |
| ... | ... | |
| 498 | 498 |
def test_project_file_added |
| 499 | 499 |
attachements = [ Attachment.find_by_container_type('Project') ]
|
| 500 | 500 |
assert Mailer.deliver_attachments_added(attachements) |
| 501 |
assert_not_nil last_email.bcc
|
|
| 502 |
assert last_email.bcc.any?
|
|
| 501 |
assert_not_nil last_email.to
|
|
| 502 |
assert last_email.to.any?
|
|
| 503 | 503 |
assert_select_email do |
| 504 | 504 |
assert_select "a[href=?]", "http://localhost:3000/projects/ecookbook/files" |
| 505 | 505 |
end |
| ... | ... | |
| 558 | 558 |
Mailer.reminders(:days => 42) |
| 559 | 559 |
assert_equal 1, ActionMailer::Base.deliveries.size |
| 560 | 560 |
mail = last_email |
| 561 |
assert mail.bcc.include?('dlopper@somenet.foo')
|
|
| 561 |
assert mail.to.include?('dlopper@somenet.foo')
|
|
| 562 | 562 |
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail |
| 563 | 563 |
assert_equal '1 issue(s) due in the next 42 days', mail.subject |
| 564 | 564 |
end |
| ... | ... | |
| 570 | 570 |
Mailer.reminders(:days => 42) |
| 571 | 571 |
assert_equal 1, ActionMailer::Base.deliveries.size |
| 572 | 572 |
mail = last_email |
| 573 |
assert mail.bcc.include?('dlopper@somenet.foo')
|
|
| 573 |
assert mail.to.include?('dlopper@somenet.foo')
|
|
| 574 | 574 |
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail |
| 575 | 575 |
assert_equal "1 demande(s) arrivent à échéance (42)", mail.subject |
| 576 | 576 |
end |
| ... | ... | |
| 587 | 587 |
Mailer.reminders(:days => 42) |
| 588 | 588 |
assert_equal 1, ActionMailer::Base.deliveries.size |
| 589 | 589 |
mail = last_email |
| 590 |
assert mail.bcc.include?('dlopper@somenet.foo')
|
|
| 590 |
assert mail.to.include?('dlopper@somenet.foo')
|
|
| 591 | 591 |
assert_mail_body_no_match 'Closed issue', mail |
| 592 | 592 |
end |
| 593 | 593 |
end |
| ... | ... | |
| 598 | 598 |
Mailer.reminders(:days => 42, :users => ['3']) |
| 599 | 599 |
assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper |
| 600 | 600 |
mail = last_email |
| 601 |
assert mail.bcc.include?('dlopper@somenet.foo')
|
|
| 601 |
assert mail.to.include?('dlopper@somenet.foo')
|
|
| 602 | 602 |
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail |
| 603 | 603 |
end |
| 604 | 604 | |
| ... | ... | |
| 895 | 895 | |
| 896 | 896 |
# Returns an array of email addresses to which emails were sent |
| 897 | 897 |
def recipients |
| 898 |
ActionMailer::Base.deliveries.map(&:bcc).flatten.sort
|
|
| 898 |
ActionMailer::Base.deliveries.map(&:to).flatten.sort
|
|
| 899 | 899 |
end |
| 900 | 900 | |
| 901 | 901 |
def last_email |