mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.6 KiB
99 lines
3.6 KiB
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe 'Email Settings' do
|
|
let!(:account) { create(:account) }
|
|
let!(:user) { create(:user, account:) }
|
|
|
|
before do
|
|
sign_in(user)
|
|
end
|
|
|
|
context 'when SMTP settings are not set' do
|
|
it 'setup SMTP settings' do
|
|
visit settings_email_index_path
|
|
|
|
fill_in 'Host', with: 'smtp.example.com'
|
|
fill_in 'Port', with: '587'
|
|
fill_in 'Username', with: 'user@example.com'
|
|
fill_in 'Password', with: 'password'
|
|
fill_in 'Domain', with: 'example.com'
|
|
fill_in 'Send from Email', with: 'user@example.com'
|
|
select 'Plain', from: 'Authentication'
|
|
choose 'TLS'
|
|
|
|
expect do
|
|
click_button 'Save'
|
|
end.to change(EncryptedConfig, :count).by(1)
|
|
|
|
encrypted_config = EncryptedConfig.find_by(account:, key: EncryptedConfig::EMAIL_SMTP_KEY)
|
|
|
|
expect(encrypted_config.value['host']).to eq('smtp.example.com')
|
|
expect(encrypted_config.value['port']).to eq('587')
|
|
expect(encrypted_config.value['username']).to eq('user@example.com')
|
|
expect(encrypted_config.value['password']).to eq('password')
|
|
expect(encrypted_config.value['domain']).to eq('example.com')
|
|
expect(encrypted_config.value['authentication']).to eq('plain')
|
|
expect(encrypted_config.value['security']).to eq('tls')
|
|
expect(encrypted_config.value['from_email']).to eq('user@example.com')
|
|
end
|
|
end
|
|
|
|
context 'when SMTP settings are set' do
|
|
let!(:encrypted_config) do
|
|
create(:encrypted_config, account:, key: EncryptedConfig::EMAIL_SMTP_KEY, value: {
|
|
host: 'smtp.example.com',
|
|
port: '587',
|
|
username: 'user@example.co',
|
|
password: 'password',
|
|
domain: 'example.com',
|
|
authentication: 'plain',
|
|
security: 'tls',
|
|
from_email: 'user@example.co'
|
|
})
|
|
end
|
|
|
|
before do
|
|
visit settings_email_index_path
|
|
end
|
|
|
|
it 'shows pre-filled SMTP settings' do
|
|
expect(page).to have_content('Email SMTP')
|
|
expect(page).to have_field('Host', with: encrypted_config.value['host'])
|
|
expect(page).to have_field('Port', with: encrypted_config.value['port'])
|
|
expect(page).to have_field('Username', with: encrypted_config.value['username'])
|
|
expect(page).to have_field('Password', with: encrypted_config.value['password'])
|
|
expect(page).to have_field('Domain', with: encrypted_config.value['domain'])
|
|
expect(page).to have_select('Authentication', selected: 'Plain')
|
|
expect(page).to have_field('Send from Email', with: encrypted_config.value['from_email'])
|
|
end
|
|
|
|
it 'updates SMTP settings' do
|
|
fill_in 'Host', with: 'smtp.gmail.com'
|
|
fill_in 'Port', with: '465'
|
|
fill_in 'Username', with: 'user@gmail.com'
|
|
fill_in 'Password', with: 'new_password'
|
|
fill_in 'Domain', with: 'gmail.com'
|
|
fill_in 'Send from Email', with: 'user@gmail.com'
|
|
select 'Plain', from: 'Authentication'
|
|
choose 'SSL'
|
|
|
|
expect do
|
|
click_button 'Save'
|
|
end.not_to change(EncryptedConfig, :count)
|
|
|
|
encrypted_config.reload
|
|
|
|
expect(encrypted_config.value['host']).to eq('smtp.gmail.com')
|
|
expect(encrypted_config.value['port']).to eq('465')
|
|
expect(encrypted_config.value['username']).to eq('user@gmail.com')
|
|
expect(encrypted_config.value['password']).to eq('new_password')
|
|
expect(encrypted_config.value['domain']).to eq('gmail.com')
|
|
expect(encrypted_config.value['authentication']).to eq('plain')
|
|
expect(encrypted_config.value['security']).to eq('ssl')
|
|
expect(encrypted_config.value['from_email']).to eq('user@gmail.com')
|
|
end
|
|
end
|
|
end
|