48 lines
1.5 KiB
Ruby
48 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
module Maintenance
|
|
RSpec.describe PhishingAlertTask do
|
|
describe "#process" do
|
|
subject(:process) { described_class.process(element) }
|
|
let(:element) { { 'Identity' => '"' + email + '"' } }
|
|
|
|
describe "when the user does not exist" do
|
|
let(:email) { "not@existing.com" }
|
|
|
|
it { expect { process }.not_to raise_error }
|
|
end
|
|
|
|
describe "when the user exist" do
|
|
let(:user) { create(:user, updated_at: 1.day.ago) }
|
|
let(:email) { user.email }
|
|
|
|
before { allow(PhishingAlertMailer).to receive(:notify).and_return(double(deliver_later: true)) }
|
|
|
|
it "resets its password and send a mail" do
|
|
previous_password = user.encrypted_password
|
|
|
|
process
|
|
|
|
expect(user.reload.encrypted_password).not_to eq(previous_password)
|
|
expect(PhishingAlertMailer).to have_received(:notify).with(user)
|
|
end
|
|
end
|
|
|
|
describe "when the emails is present several times" do
|
|
let(:user) { create(:user, updated_at: 1.day.ago) }
|
|
let(:email) { user.email }
|
|
|
|
before { allow(PhishingAlertMailer).to receive(:notify).and_return(double(deliver_later: true)) }
|
|
|
|
it "resets its password and send a mail" do
|
|
described_class.process(element)
|
|
described_class.process(element)
|
|
|
|
expect(PhishingAlertMailer).to have_received(:notify).with(user).once
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|