diff --git a/src/api-umbrella/web-app/app/mailers/api_user_mailer.rb b/src/api-umbrella/web-app/app/mailers/api_user_mailer.rb
index 996a2f2ca..8feb13c77 100644
--- a/src/api-umbrella/web-app/app/mailers/api_user_mailer.rb
+++ b/src/api-umbrella/web-app/app/mailers/api_user_mailer.rb
@@ -23,4 +23,16 @@ def signup_email(user, options)
:from => MailSanitizer.sanitize_address(from),
:to => MailSanitizer.sanitize_address(user.email)
end
+
+ def notify_api_admin(user)
+ @user = user
+
+ to = ApiUmbrellaConfig[:admin_notify_email].presence || ApiUmbrellaConfig[:web][:contact_form_email]
+
+ full_name = "#{@user.first_name} #{@user.last_name}"
+
+ mail :subject => "#{full_name} just subscribed",
+ :from => MailSanitizer.sanitize_address(user.email),
+ :to => MailSanitizer.sanitize_address(to)
+ end
end
diff --git a/src/api-umbrella/web-app/app/views/api_user_mailer/notify_api_admin.erb b/src/api-umbrella/web-app/app/views/api_user_mailer/notify_api_admin.erb
new file mode 100644
index 000000000..3a45d2276
--- /dev/null
+++ b/src/api-umbrella/web-app/app/views/api_user_mailer/notify_api_admin.erb
@@ -0,0 +1,39 @@
+
<%= @user.first_name %> <%= @user.last_name %> just subscribed
+Description
+
+
+ <%= @user.use_description %>
+
+
+Extra-informations
+
+
+
+ Email |
+ <%= @user.email %> |
+
+ <% unless @user.registration_source.blank? -%>
+
+ Source |
+ <%= @user.registration_source %> |
+
+ <% end -%>
+ <% unless @user.website.blank? -%>
+
+ Website |
+ <%= @user.website %> |
+
+ <% end -%>
+
+ IP Adress |
+ <%= @user.registration_ip %> |
+
+
+ Referer |
+ <%= @user.registration_referer %> |
+
+
+ Origin |
+ <%= @user.registration_origin %> |
+
+
diff --git a/src/api-umbrella/web-app/spec/mailers/api_user_mailer_spec.rb b/src/api-umbrella/web-app/spec/mailers/api_user_mailer_spec.rb
index c4280e873..436b19fc8 100644
--- a/src/api-umbrella/web-app/spec/mailers/api_user_mailer_spec.rb
+++ b/src/api-umbrella/web-app/spec/mailers/api_user_mailer_spec.rb
@@ -1,88 +1,129 @@
require "spec_helper"
describe ApiUserMailer do
- describe "OSVDB-131677 security" do
- it "accepts recipients without newlines" do
- expect do
- api_user = FactoryGirl.create(:api_user, :email => "foo@example.com")
- ApiUserMailer.signup_email(api_user, {}).deliver
- end.to change { ActionMailer::Base.deliveries.count }.by(1)
- end
-
- it "rejects recipients with newlines" do
- expect do
+ describe "signup_email" do
+ describe "OSVDB-131677 security" do
+ it "accepts recipients without newlines" do
expect do
- api_user = FactoryGirl.create(:api_user, :email => "foo@example.com\nfoo")
+ api_user = FactoryGirl.create(:api_user, :email => "foo@example.com")
ApiUserMailer.signup_email(api_user, {}).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
- end
+ end.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
- it "rejects recipients with carriage returns" do
- expect do
+ it "rejects recipients with newlines" do
expect do
- api_user = FactoryGirl.create(:api_user, :email => "foo@example.com\rfoo")
- ApiUserMailer.signup_email(api_user, {}).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
- end
+ expect do
+ api_user = FactoryGirl.create(:api_user, :email => "foo@example.com\nfoo")
+ ApiUserMailer.signup_email(api_user, {}).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
- it "accepts recipients 500 chars or less" do
- expect do
- api_user = FactoryGirl.create(:api_user, :email => "#{"o" * 488}@example.com")
- ApiUserMailer.signup_email(api_user, {}).deliver
- end.to change { ActionMailer::Base.deliveries.count }.by(1)
- end
+ it "rejects recipients with carriage returns" do
+ expect do
+ expect do
+ api_user = FactoryGirl.create(:api_user, :email => "foo@example.com\rfoo")
+ ApiUserMailer.signup_email(api_user, {}).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
- it "rejects recipients greater than 500 chars" do
- expect do
+ it "accepts recipients 500 chars or less" do
expect do
- api_user = FactoryGirl.create(:api_user, :email => "#{"o" * 489}@example.com")
+ api_user = FactoryGirl.create(:api_user, :email => "#{"o" * 488}@example.com")
ApiUserMailer.signup_email(api_user, {}).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
- end
+ end.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
- it "accepts from addresses without newlines" do
- expect do
- api_user = FactoryGirl.create(:api_user)
- ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com" }).deliver
- end.to change { ActionMailer::Base.deliveries.count }.by(1)
- end
+ it "rejects recipients greater than 500 chars" do
+ expect do
+ expect do
+ api_user = FactoryGirl.create(:api_user, :email => "#{"o" * 489}@example.com")
+ ApiUserMailer.signup_email(api_user, {}).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
- it "rejects from addresses with newlines" do
- expect do
+ it "accepts from addresses without newlines" do
expect do
api_user = FactoryGirl.create(:api_user)
- ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com\nfoo" }).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
- end
+ ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com" }).deliver
+ end.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
+
+ it "rejects from addresses with newlines" do
+ expect do
+ expect do
+ api_user = FactoryGirl.create(:api_user)
+ ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com\nfoo" }).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
+
+ it "rejects from addresses with carriage returns" do
+ expect do
+ expect do
+ api_user = FactoryGirl.create(:api_user)
+ ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com\rfoo" }).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
- it "rejects from addresses with carriage returns" do
- expect do
+ it "accepts from addresses 500 chars or less" do
expect do
api_user = FactoryGirl.create(:api_user)
- ApiUserMailer.signup_email(api_user, { :email_from_address => "foo@example.com\rfoo" }).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ ApiUserMailer.signup_email(api_user, { :email_from_address => "#{"o" * 488}@example.com" }).deliver
+ end.to change { ActionMailer::Base.deliveries.count }.by(1)
+ end
+
+ it "rejects from addresses greater than 500 chars" do
+ expect do
+ expect do
+ api_user = FactoryGirl.create(:api_user)
+ ApiUserMailer.signup_email(api_user, { :email_from_address => "#{"o" * 489}@example.com" }).deliver
+ end.to raise_error(MailSanitizer::InvalidAddress)
+ end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ end
+
end
+ end
- it "accepts from addresses 500 chars or less" do
- expect do
- api_user = FactoryGirl.create(:api_user)
- ApiUserMailer.signup_email(api_user, { :email_from_address => "#{"o" * 488}@example.com" }).deliver
- end.to change { ActionMailer::Base.deliveries.count }.by(1)
+ describe "signup_email" do
+ before(:each) do
+ ApiUmbrellaConfig[:web][:contact_form_email] = "aaa@bbb.com"
end
- it "rejects from addresses greater than 500 chars" do
- expect do
- expect do
- api_user = FactoryGirl.create(:api_user)
- ApiUserMailer.signup_email(api_user, { :email_from_address => "#{"o" * 489}@example.com" }).deliver
- end.to raise_error(MailSanitizer::InvalidAddress)
- end.to change { ActionMailer::Base.deliveries.count }.by(0)
+ let(:api_user) { FactoryGirl.create(:api_user,
+ :first_name => "aaa",
+ :last_name => "bbb",
+ :use_description => "I WANNA DO EVERYTHING",
+ :email => "foo@example.com") }
+
+ subject { ApiUserMailer.notify_api_admin(api_user).deliver }
+
+ it "send an email " do
+ expect { subject }.to change { ActionMailer::Base.deliveries.count }.by(1)
end
+ it "send an email to the contact email" do
+ subject
+ expect(ActionMailer::Base.deliveries.first.to).to eq ["aaa@bbb.com"]
+ end
+
+ it "the receiver can be overwrited by the admin " do
+ ApiUmbrellaConfig[:admin_notify_email] = "ccc@ddd.com"
+ subject
+ expect(ActionMailer::Base.deliveries.first.to).to eq ["ccc@ddd.com"]
+ end
+
+ it "send an email with the name of the person in the subject" do
+ subject
+ expect(ActionMailer::Base.deliveries.first.subject).to eq "aaa bbb just subscribed"
+ end
+
+ it "send an email with usage in the body" do
+ subject
+ expect(ActionMailer::Base.deliveries.first.encoded).to include "I WANNA DO EVERYTHING"
+ end
end
end