Skip to content

Commit cbe9bf8

Browse files
committed
notify the admin from the controller
1 parent b73f5ca commit cbe9bf8

File tree

3 files changed

+75
-9
lines changed

3 files changed

+75
-9
lines changed

src/api-umbrella/web-app/app/controllers/api/v1/users_controller.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,25 @@ def create
4949

5050
respond_to do |format|
5151
if(@api_user.save)
52-
send_email = (params[:options] && params[:options][:send_welcome_email].to_s == "true")
52+
send_welcome_email = (params[:options] && params[:options][:send_welcome_email].to_s == "true")
53+
send_notify_email = (params[:options] && params[:options][:send_notify_email].to_s == "true")
5354

5455
# For the admin tool, it's easier to have this attribute on the user
5556
# model, rather than options, so check there for whether we should send
5657
# e-mail. Also note that for backwards compatibility, we only check for
5758
# the presence of this attribute, and not it's actual value.
58-
if(!send_email && params[:user] && params[:user][:send_welcome_email])
59-
send_email = true
59+
if(!send_welcome_email && params[:user] && params[:user][:send_welcome_email])
60+
send_welcome_email = true
6061
end
6162

62-
if(send_email)
63+
if(send_welcome_email)
6364
ApiUserMailer.delay(:queue => "mailers").signup_email(@api_user, params[:options] || {})
6465
end
6566

67+
if(send_notify_email)
68+
ApiUserMailer.delay(:queue => "mailers").notify_api_admin(@api_user)
69+
end
70+
6671
format.json { render("show", :status => :created, :location => api_v1_user_url(@api_user)) }
6772
else
6873
format.json { render(:json => errors_response(@api_user), :status => :unprocessable_entity) }

src/api-umbrella/web-app/spec/controllers/api/v1/users_controller_spec.rb

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,64 @@
980980
end
981981
end
982982
end
983+
984+
describe "notify e-mail" do
985+
before(:each) do
986+
Delayed::Worker.delay_jobs = false
987+
ActionMailer::Base.deliveries.clear
988+
ApiUmbrellaConfig[:web][:contact_form_email] = "[email protected]"
989+
end
990+
991+
after(:each) do
992+
Delayed::Worker.delay_jobs = true
993+
end
994+
995+
it "sends a notify e-mail to be sent when requested" do
996+
admin_token_auth(@admin)
997+
expect do
998+
p = params
999+
p[:options] = { :send_notify_email => true }
1000+
post :create, p
1001+
end.to change { ActionMailer::Base.deliveries.count }.by(1)
1002+
end
1003+
1004+
it "does not send notify e-mails when explicitly disabled" do
1005+
admin_token_auth(@admin)
1006+
expect do
1007+
p = params
1008+
p[:options] = { :send_notify_email => false }
1009+
post :create, p
1010+
end.to change { ActionMailer::Base.deliveries.count }.by(0)
1011+
end
1012+
1013+
it "does not send a notify e-mail when the option is an unknown value" do
1014+
admin_token_auth(@admin)
1015+
expect do
1016+
p = params
1017+
p[:options] = { :send_notify_email => 1 }
1018+
post :create, p
1019+
end.to change { ActionMailer::Base.deliveries.count }.by(0)
1020+
end
1021+
1022+
it "does not send notify e-mails by default" do
1023+
admin_token_auth(@admin)
1024+
expect do
1025+
post :create, params
1026+
end.to change { ActionMailer::Base.deliveries.count }.by(0)
1027+
end
1028+
1029+
it "queues a welcome e-mail to when delayed job is enabled" do
1030+
Delayed::Worker.delay_jobs = true
1031+
admin_token_auth(@admin)
1032+
expect do
1033+
expect do
1034+
p = params
1035+
p[:options] = { :send_notify_email => true }
1036+
post :create, p
1037+
end.to change { Delayed::Job.count }.by(1)
1038+
end.to change { ActionMailer::Base.deliveries.count }.by(0)
1039+
end
1040+
end
9831041
end
9841042

9851043
describe "PUT update" do

src/api-umbrella/web-app/spec/mailers/api_user_mailer_spec.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,14 @@
9393
ApiUmbrellaConfig[:web][:contact_form_email] = "[email protected]"
9494
end
9595

96-
let(:api_user) { FactoryGirl.create(:api_user,
97-
:first_name => "aaa",
98-
:last_name => "bbb",
99-
:use_description => "I WANNA DO EVERYTHING",
100-
:email => "[email protected]") }
96+
let(:api_user) do
97+
FactoryGirl.create(
98+
:api_user,
99+
:first_name => "aaa",
100+
:last_name => "bbb",
101+
:use_description => "I WANNA DO EVERYTHING",
102+
:email => "[email protected]")
103+
end
101104

102105
subject { ApiUserMailer.notify_api_admin(api_user).deliver }
103106

0 commit comments

Comments
 (0)