Files
astuto/spec/system/site_settings/site_settings_authentication_spec.rb
2023-04-12 18:35:39 +02:00

115 lines
3.2 KiB
Ruby

require 'rails_helper'
feature 'site settings: authentication', type: :system, js: true do
let(:admin) { FactoryBot.create(:admin) }
let(:o_auth) { FactoryBot.create(:o_auth) }
let(:o_auths_list_selector) { '.oAuthsList' }
let(:o_auth_list_item_selector) { '.oAuthListItem' }
let(:o_auth_form_selector) { '.authenticationFormPage' }
before(:each) do
o_auth
admin.confirm
sign_in admin
visit site_settings_authentication_path
end
it 'lets view existing oauths' do
within o_auths_list_selector do
expect(page).to have_css(o_auth_list_item_selector, count: OAuth.count)
expect(page).to have_content(/#{o_auth.name}/i)
end
end
it 'lets create new oauths' do
n_of_o_auths = OAuth.count
new_o_auth_name = 'My new oauth'
within o_auths_list_selector do
expect(page).to have_css(o_auth_list_item_selector, count: n_of_o_auths)
expect(page).not_to have_content(/#{new_o_auth_name}/i)
end
click_button 'New'
within o_auth_form_selector do
fill_in 'Name', with: new_o_auth_name
fill_in 'Logo', with: o_auth.logo
fill_in 'Client ID', with: '1234567890'
fill_in 'Client secret', with: '1234567890'
fill_in 'Authorize URL', with: 'https://example.com/authorize'
fill_in 'Token URL', with: 'https://example.com/token'
fill_in 'Scope', with: 'email'
fill_in 'Profile URL', with: 'https://example.com/profile'
fill_in 'JSON path to user email', with: 'email'
fill_in 'JSON path to user name', with: 'name'
click_button 'Create'
end
within '.siteSettingsInfo' do
expect(page).to have_content('All changes saved')
end
within o_auths_list_selector do
expect(page).to have_css(o_auth_list_item_selector, count: n_of_o_auths + 1)
expect(page).to have_content(/#{new_o_auth_name}/i)
end
expect(OAuth.count).to eq(n_of_o_auths + 1)
end
it 'lets edit existing oauths' do
o_auth_to_edit = OAuth.last
new_o_auth_name = 'My new oauth'
expect(page).not_to have_content(/#{new_o_auth_name}/i)
expect(o_auth_to_edit.name).not_to eq(new_o_auth_name)
within o_auths_list_selector do
within find(o_auth_list_item_selector, text: /#{o_auth_to_edit.name}/i) do
find('.editAction').click
end
end
within o_auth_form_selector do
fill_in 'Name', with: new_o_auth_name
click_button 'Save'
end
within '.siteSettingsInfo' do
expect(page).to have_content('All changes saved')
end
expect(page).to have_content(/#{new_o_auth_name}/i)
expect(o_auth_to_edit.reload.name).to eq(new_o_auth_name)
end
it 'lets delete existing oauths' do
n_of_oauths = OAuth.count
o_auth_to_delete = OAuth.last
within o_auths_list_selector do
within find(o_auth_list_item_selector, text: /#{o_auth_to_delete.name}/i) do
find('.deleteAction').click
page.driver.browser.switch_to.alert.accept
end
end
within '.siteSettingsInfo' do
expect(page).to have_content('All changes saved')
end
expect(page).not_to have_content(/#{o_auth_to_delete.name}/i)
expect(OAuth.find_by(id: o_auth_to_delete.id)).to be_nil
expect(OAuth.count).to eq(n_of_oauths - 1)
end
end