2016-05-30 17:11:17 +02:00
require " rails_helper "
describe WebhooksController do
2016-06-06 19:47:45 +02:00
before { $redis . flushall }
2016-05-30 17:11:17 +02:00
2016-06-01 21:48:06 +02:00
let ( :email ) { " em@il.com " }
2016-06-09 00:33:13 +02:00
let ( :message_id ) { " 12345@il.com " }
2016-06-01 21:48:06 +02:00
context " mailgun " do
2016-05-30 17:11:17 +02:00
it " works " do
2016-06-06 16:55:24 -07:00
SiteSetting . mailgun_api_key = " key-8221462f0c915af3f6f2e2df7aa5a493 "
2016-05-30 17:11:17 +02:00
2016-06-01 21:48:06 +02:00
user = Fabricate ( :user , email : email )
2016-06-08 22:38:38 +02:00
email_log = Fabricate ( :email_log , user : user , message_id : message_id )
2016-05-30 17:11:17 +02:00
WebhooksController . any_instance . expects ( :mailgun_verify ) . returns ( true )
2016-06-08 22:38:38 +02:00
post :mailgun , " token " = > " 705a8ccd2ce932be8e98c221fe701c1b4a0afcb8bbd57726de " ,
2016-05-30 17:11:17 +02:00
" timestamp " = > Time . now . to_i ,
" event " = > " dropped " ,
2016-06-09 00:33:13 +02:00
" Message-Id " = > " <12345@il.com> "
2016-05-30 17:11:17 +02:00
expect ( response ) . to be_success
email_log . reload
expect ( email_log . bounced ) . to eq ( true )
expect ( email_log . user . user_stat . bounce_score ) . to eq ( 2 )
end
end
2016-06-01 21:48:06 +02:00
context " sendgrid " do
it " works " do
user = Fabricate ( :user , email : email )
2016-06-09 00:33:13 +02:00
email_log = Fabricate ( :email_log , user : user , message_id : message_id )
2016-06-01 21:48:06 +02:00
post :sendgrid , " _json " = > [
{
2016-06-06 19:47:45 +02:00
" email " = > email ,
" smtp-id " = > " <12345@il.com> " ,
" event " = > " bounce " ,
" status " = > " 5.0.0 "
2016-06-01 21:48:06 +02:00
}
]
expect ( response ) . to be_success
email_log . reload
expect ( email_log . bounced ) . to eq ( true )
expect ( email_log . user . user_stat . bounce_score ) . to eq ( 2 )
end
end
2016-06-06 19:47:45 +02:00
context " mailjet " do
it " works " do
user = Fabricate ( :user , email : email )
email_log = Fabricate ( :email_log , user : user , message_id : message_id )
post :mailjet , {
" event " = > " bounce " ,
" hard_bounce " = > true ,
" CustomID " = > message_id
}
expect ( response ) . to be_success
email_log . reload
expect ( email_log . bounced ) . to eq ( true )
expect ( email_log . user . user_stat . bounce_score ) . to eq ( 2 )
end
end
2016-06-13 12:31:01 +02:00
context " mandrill " do
it " works " do
user = Fabricate ( :user , email : email )
email_log = Fabricate ( :email_log , user : user , message_id : message_id )
post :mandrill , mandrill_events : [ {
" event " = > " hard_bounce " ,
" msg " = > {
" metadata " = > {
" message_id " = > message_id
}
}
} ]
expect ( response ) . to be_success
email_log . reload
expect ( email_log . bounced ) . to eq ( true )
expect ( email_log . user . user_stat . bounce_score ) . to eq ( 2 )
end
end
2016-05-30 17:11:17 +02:00
end