System notice: In light of the Debian OpenSSL security issue we've regenerated the server keys. See this thread for instructions and the new key fingerprints.

Commit 97d4a79a074c3cafa6f4a831ee4595aa91fb2fac

switched to ActionMailer::Base.default_url_options && UrlHelper for urls

Commit diff

app/models/mailer.rb

 
22 def signup_notification(user)
33 setup_email(user)
44 @subject += 'Please activate your new account'
5 @body[:url] = "http://#{GitoriousConfig['gitorious_host']}/users/activate/#{user.activation_code}"
6
5 @body[:url] = url_for(
6 :controller => 'users',
7 :action => 'activate',
8 :activation_code => user.activation_code
9 )
710 end
8
11
912 def activation(user)
1013 setup_email(user)
1114 @subject += 'Your account has been activated!'
1215 end
13
16
1417 def new_repository_clone(repository)
1518 setup_email(repository.project.user)
1619 @subject += %Q{#{repository.user.login} has cloned #{repository.project.slug}/#{repository.parent.name}}
2121 @body[:cloner] = repository.user
2222 @body[:project] = repository.project
2323 @body[:repository] = repository
24 @body[:url] = "http://#{GitoriousConfig['gitorious_host']}/p/#{repository.project.slug}/repos/#{repository.name}"
24 @body[:url] = project_repository_url(repository.project, repository)
2525 end
26
26
2727 def merge_request_notification(merge_request)
2828 setup_email(merge_request.target_repository.user)
2929 @subject += %Q{#{merge_request.source_repository.user.login} has requested a merge in #{merge_request.target_repository.project.title}}
3030 @body[:merge_request] = merge_request
3131 @body[:project] = merge_request.target_repository.project
32 url = "http://#{GitoriousConfig['gitorious_host']}/p/#{merge_request.target_repository.project.slug}"
33 url << "/repos/#{merge_request.target_repository.name}"
34 url << "/merge_requests/#{merge_request.id}"
35 @body[:url] = url
32 @body[:url] =
33 project_repository_merge_request_url(
34 merge_request.target_repository.project,
35 merge_request.target_repository,
36 merge_request
37 )
3638 end
37
39
3840 def forgotten_password(user, password)
3941 setup_email(user)
4042 @subject += "Your new password"
4143 @body[:password] = password
4244 end
43
45
4446 protected
4547 def setup_email(user)
4648 @recipients = "#{user.email}"
toggle raw diff

config/environments/development.rb

 
1414config.action_view.cache_template_extensions = false
1515config.action_view.debug_rjs = true
1616
17# Don't care if the mailer can't send
17# ActionMailer::Base.default_url_options[:protocol] = 'https'
18ActionMailer::Base.default_url_options[:host] =
19 YAML.load_file(File.join(RAILS_ROOT, "config/gitorious.yml"))["gitorious_host"]
1820config.action_mailer.raise_delivery_errors = false
1921config.action_mailer.delivery_method = :test
20ExceptionNotifier.exception_recipients = YAML.load_file(File.join(RAILS_ROOT,
21 "config/gitorious.yml"))["exception_notification_emails"]
22ExceptionNotifier.exception_recipients = YAML.load_file(File.join(RAILS_ROOT,
23 "config/gitorious.yml"))["exception_notification_emails"]
toggle raw diff

config/environments/production.rb

 
2323# Enable serving of images, stylesheets, and javascripts from an asset server
2424# config.action_controller.asset_host = "http://assets.example.com"
2525
26# ActionMailer::Base.default_url_options[:protocol] = 'https'
27ActionMailer::Base.default_url_options[:host] =
28 YAML.load_file(File.join(RAILS_ROOT, "config/gitorious.yml"))["gitorious_host"]
2629# Disable delivery errors, bad email addresses will be ignored
2730# config.action_mailer.raise_delivery_errors = false
28
29ExceptionNotifier.exception_recipients = YAML.load_file(File.join(RAILS_ROOT,
31ExceptionNotifier.exception_recipients = YAML.load_file(File.join(RAILS_ROOT,
3032 "config/gitorious.yml"))["exception_notification_emails"]
31ExceptionNotifier.class_eval do
32 remove_method :template_root
33 ExceptionNotifier.template_root = "#{RAILS_ROOT}/vendor/plugins/exception_notification/lib/../views"
33ExceptionNotifier.class_eval do
34 remove_method :template_root
35 ExceptionNotifier.template_root = "#{RAILS_ROOT}/vendor/plugins/exception_notification/lib/../views"
3436end
toggle raw diff

config/environments/test.rb

 
1616# Disable request forgery protection in test environment
1717config.action_controller.allow_forgery_protection = false
1818
19# ActionMailer::Base.default_url_options[:protocol] = 'https'
20ActionMailer::Base.default_url_options[:host] =
21 YAML.load_file(File.join(RAILS_ROOT, "config/gitorious.yml"))["gitorious_host"]
1922# Tell ActionMailer not to deliver emails to the real world.
2023# The :test delivery method accumulates sent emails in the
2124# ActionMailer::Base.deliveries array.
toggle raw diff

spec/models/mailer_spec.rb

 
11require File.dirname(__FILE__) + '/../spec_helper'
22
33describe Mailer do
4 URL_BASE = "#{Mailer.default_url_options[:protocol]||'http'}://#{Mailer.default_url_options[:host]}"
5
46 before(:each) do
57 Mailer.deliveries = []
68 end
7
9
810 it "send new_repository_clone" do
911 repos = repositories(:johans2)
12 url = "#{URL_BASE}/projects/#{repos.project.slug}/repos/#{repos.name}"
1013 mail = Mailer.create_new_repository_clone(repos)
11
14
1215 mail.to.should == [repos.project.user.email]
1316 mail.subject.should == %Q{[Gitorious] #{repos.user.login} has cloned #{repos.project.slug}/#{repos.parent.name}}
1417 mail.body.should match(/#{repos.user.login} recently created a clone/)
15 mail.body.should match(/\/p\/#{repos.project.slug}\/repos\/#{repos.name}/)
16
18 mail.body.should include(url)
19
1720 Mailer.deliver(mail)
1821 Mailer.deliveries.should == [mail]
1922 end
20
23
2124 it "sends signup_notification" do
2225 user = users(:johan)
2326 user.password = "fubar"
27 url = "#{URL_BASE}/users/activate/#{user.activation_code}"
2428 mail = Mailer.create_signup_notification(user)
25
29
2630 mail.to.should == [user.email]
2731 mail.subject.should == "[Gitorious] Please activate your new account"
28 mail.body.should match(/users\/activate\/#{user.activation_code}/)
2932 mail.body.should match(/username is #{user.login}$/)
30
33 mail.body.should include(url)
34
3135 Mailer.deliver(mail)
3236 Mailer.deliveries.should == [mail]
3337 end
34
38
3539 it "sends activation" do
3640 user = users(:johan)
3741 mail = Mailer.create_activation(user)
38
42
3943 mail.to.should == [user.email]
4044 mail.subject.should == "[Gitorious] Your account has been activated!"
4145 mail.body.should match(/your account has been activated/)
42
46
4347 Mailer.deliver(mail)
4448 Mailer.deliveries.should == [mail]
4549 end
46
50
4751 it "sends merge_request_notification" do
4852 merge_request = merge_requests(:moes_to_johans)
53 url = "#{URL_BASE}/projects/#{merge_request.target_repository.project.slug}/repos/#{merge_request.target_repository.name}/merge_requests/#{merge_request.id}"
4954 mail = Mailer.create_merge_request_notification(merge_request)
50
55
5156 mail.to.should == [merge_request.target_repository.user.email]
5257 mail.subject.should == "[Gitorious] moe has requested a merge in johans project"
5358 mail.body.should match(/moe has requested that you merge #{merge_request.source_repository.name} with #{merge_request.target_repository.name}/)
5459 mail.body.should match(/in the #{merge_request.target_repository.project.title} project/)
5560 mail.body.should include(merge_request.proposal)
56
61 mail.body.should include(url)
62
5763 Mailer.deliver(mail)
5864 Mailer.deliveries.should == [mail]
5965 end
toggle raw diff