63 lines
2.3 KiB
Ruby
63 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe 'E-Mail settings', type: :feature do
|
|
let(:user) { create :user }
|
|
|
|
feature "Reset email password" do
|
|
before do
|
|
login_as user, :scope => :user
|
|
|
|
allow_any_instance_of(User).to receive(:valid_ldap_authentication?)
|
|
.with("invalid password").and_return(false)
|
|
allow_any_instance_of(User).to receive(:valid_ldap_authentication?)
|
|
.with("valid password").and_return(true)
|
|
end
|
|
|
|
scenario 'fails with invalid password' do
|
|
expect(LdapManager::UpdateEmailPassword).not_to receive(:call)
|
|
expect(LdapManager::UpdateEmailMaildrop).not_to receive(:call)
|
|
|
|
visit setting_path(:email)
|
|
fill_in 'Current account password', with: "invalid password"
|
|
click_button "Create new email password"
|
|
|
|
within ".error-msg" do
|
|
expect(page).to have_content("Wrong password")
|
|
end
|
|
end
|
|
|
|
scenario 'works with valid password' do
|
|
allow_any_instance_of(User).to receive(:dn)
|
|
.and_return("cn=#{user.cn},ou=kosmos.org,cn=users,dc=kosmos,dc=org")
|
|
allow_any_instance_of(User).to receive(:ldap_entry)
|
|
.and_return({ uid: user.cn, ou: user.ou, email_maildrop: user.address })
|
|
|
|
expect(LdapManager::UpdateEmailPassword).to receive(:call).and_return(true)
|
|
expect(LdapManager::UpdateEmailMaildrop).not_to receive(:call)
|
|
|
|
visit setting_path(:email)
|
|
fill_in 'Current account password', with: "valid password"
|
|
click_button "Create new email password"
|
|
|
|
expect(current_url).to eq(new_password_services_email_url)
|
|
end
|
|
|
|
scenario 'updates the maildrop attribute if necessary' do
|
|
allow_any_instance_of(User).to receive(:dn)
|
|
.and_return("cn=#{user.cn},ou=kosmos.org,cn=users,dc=kosmos,dc=org")
|
|
allow_any_instance_of(User).to receive(:ldap_entry)
|
|
.and_return({ uid: user.cn, ou: user.ou, email_maildrop: "mahafaly@example.com" })
|
|
|
|
expect(LdapManager::UpdateEmailPassword).to receive(:call).and_return(true)
|
|
expect(LdapManager::UpdateEmailMaildrop).to receive(:call)
|
|
.with(dn: user.dn, address: user.address).and_return(true)
|
|
|
|
visit setting_path(:email)
|
|
fill_in 'Current account password', with: "valid password"
|
|
click_button "Create new email password"
|
|
|
|
expect(current_url).to eq(new_password_services_email_url)
|
|
end
|
|
end
|
|
end
|