88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
# authentic2 - versatile identity manager
|
|
# Copyright (C) 2010-2019 Entr'ouvert
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU Affero General Public License as published
|
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
from utils import login
|
|
|
|
|
|
def test_manager_role_export(app, admin, ou1, role_ou1, ou2, role_ou2):
|
|
import csv
|
|
|
|
response = login(app, admin, 'a2-manager-roles')
|
|
|
|
export_response = response.click('JSON')
|
|
export = export_response.json
|
|
|
|
assert export.keys() == ['roles']
|
|
assert len(export['roles']) == 2
|
|
assert set([role['slug'] for role in export['roles']]) == set(['role_ou1', 'role_ou2'])
|
|
|
|
export_response = response.click('CSV')
|
|
reader = csv.reader(export_response.body.split('\r\n'), delimiter=',')
|
|
rows = [row for row in reader]
|
|
|
|
assert rows[0] == ['name', 'slug', 'members']
|
|
assert len(rows)-2 == 2 # csv header and last EOL
|
|
assert set([row[1] for row in rows[1:3]]) == set(['role_ou1', 'role_ou2'])
|
|
|
|
response.form.set('search-text', 'role_ou1')
|
|
search_response = response.form.submit()
|
|
|
|
export_response = search_response.click('JSON')
|
|
export = export_response.json
|
|
|
|
assert export.keys() == ['roles']
|
|
assert len(export['roles']) == 1
|
|
assert export['roles'][0]['slug'] == 'role_ou1'
|
|
|
|
export_response = search_response.click('CSV')
|
|
reader = csv.reader(export_response.body.split('\r\n'), delimiter=',')
|
|
rows = [row for row in reader]
|
|
|
|
assert rows[0] == ['name', 'slug', 'members']
|
|
assert len(rows)-2 == 1 # csv header and last EOL
|
|
assert rows[1][1] == 'role_ou1'
|
|
|
|
|
|
def test_manager_role_name_uniqueness_single_ou(app, admin):
|
|
response = login(app, admin, 'a2-manager-roles')
|
|
|
|
response = response.click('Add')
|
|
response.form.set('name', 'Role1')
|
|
response = response.form.submit('Save').follow()
|
|
response = response.click('Roles')
|
|
assert response.pyquery('td.name').text() == 'Role1'
|
|
|
|
response = response.click('Add')
|
|
response.form.set('name', 'Role1')
|
|
response = response.form.submit('Save')
|
|
assert response.pyquery('.errorlist').eq(1).text() == 'Name already used'
|
|
|
|
|
|
def test_manager_role_name_uniqueness_multiple_ou(app, admin, ou1):
|
|
response = login(app, admin, 'a2-manager-roles')
|
|
|
|
response = response.click('Add')
|
|
response.form.set('ou', str(ou1.id))
|
|
response.form.set('name', 'Role1')
|
|
response = response.form.submit('Save').follow()
|
|
response = response.click('Roles')
|
|
assert response.pyquery('td.name').text() == 'Role1'
|
|
|
|
response = response.click('Add')
|
|
response.form.set('ou', str(ou1.id))
|
|
response.form.set('name', 'Role1')
|
|
response = response.form.submit('Save')
|
|
assert response.pyquery('.errorlist').eq(1).text() == 'Name already used'
|