kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
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.
70 lines
2.4 KiB
70 lines
2.4 KiB
require_relative '../spec_helper'
|
|
|
|
describe 'LDAP group sync administration spec', type: :feature, js: true do
|
|
let(:admin) { FactoryBot.create :admin }
|
|
|
|
before do
|
|
login_as admin
|
|
visit ldap_groups_synchronized_groups_path
|
|
end
|
|
|
|
context 'without EE' do
|
|
it 'shows upsale' do
|
|
expect(page).to have_selector('.upsale-notification')
|
|
end
|
|
end
|
|
|
|
context 'with EE', with_ee: %i[ldap_groups] do
|
|
let!(:group) { FactoryBot.create :group, lastname: 'foo' }
|
|
let!(:auth_source) { FactoryBot.create :ldap_auth_source, name: 'ldap' }
|
|
|
|
it 'allows synced group administration flow' do
|
|
expect(page).to have_no_selector('.upsale-notification')
|
|
|
|
# Create group
|
|
find('.button', text: I18n.t('ldap_groups.synchronized_groups.singular')).click
|
|
|
|
select 'ldap', from: 'synchronized_group_auth_source_id'
|
|
select 'foo', from: 'synchronized_group_group_id'
|
|
fill_in 'synchronized_group_dn', with: 'cn=foo,ou=groups,dc=example,dc=com'
|
|
|
|
click_on 'Create'
|
|
expect(page).to have_selector('.flash.notice', text: I18n.t(:notice_successful_create))
|
|
expect(page).to have_selector('td.dn', text: 'cn=foo,ou=groups,dc=example,dc=com')
|
|
expect(page).to have_selector('td.auth_source', text: 'ldap')
|
|
expect(page).to have_selector('td.group', text: 'foo')
|
|
expect(page).to have_selector('td.users', text: '0')
|
|
|
|
# Show entry
|
|
find('td.dn a').click
|
|
expect(page).to have_selector '.generic-table--empty-row'
|
|
|
|
# Check created group
|
|
sync = ::LdapGroups::SynchronizedGroup.last
|
|
expect(sync.group_id).to eq(group.id)
|
|
expect(sync.auth_source_id).to eq(auth_source.id)
|
|
expect(sync.dn).to eq 'cn=foo,ou=groups,dc=example,dc=com'
|
|
|
|
# Assume we have a membership
|
|
sync.users.create user_id: admin.id
|
|
visit ldap_groups_synchronized_group_path(sync)
|
|
expect(page).to have_selector 'td.user', text: admin.name
|
|
|
|
memberships = sync.users.pluck(:id)
|
|
|
|
visit ldap_groups_synchronized_groups_path
|
|
expect_angular_frontend_initialized
|
|
|
|
find('.buttons a', text: 'Delete').click
|
|
find('.danger-zone--verification input').set 'cn=foo,ou=groups,dc=example,dc=com'
|
|
|
|
sleep 2
|
|
click_on 'Delete'
|
|
|
|
expect(page).to have_selector('.flash.notice', text: I18n.t(:notice_successful_delete))
|
|
expect(page).to have_selector '.generic-table--empty-row'
|
|
|
|
expect(::LdapGroups::Membership.where(id: memberships)).to be_empty
|
|
end
|
|
end
|
|
end |