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
 |