Newer
Older
ldapcherry / tests / test_Roles.py
@kakwa kakwa on 6 Jul 2015 5 KB remove trailing spaces
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import with_statement
from __future__ import unicode_literals

import pytest
import sys
from sets import Set
from ldapcherry.roles import Roles
from ldapcherry.exceptions import DumplicateRoleKey, MissingKey, DumplicateRoleContent, MissingRolesFile, MissingRole
from ldapcherry.pyyamlwrapper import DumplicatedKey, RelationError

class TestError(object):

    def testNominal(self):
        inv = Roles('./tests/cfg/roles.yml')
        print inv.roles
        return True

    def testMissingDisplayName(self):
        try:
            inv = Roles('./tests/cfg/roles_missing_diplay_name.yml')
        except MissingKey:
            return
        else:
            raise AssertionError("expected an exception")

    def testMissingBackends(self):
        try:
            inv = Roles('./tests/cfg/roles_missing_backends.yml')
        except MissingKey:
            return
        else:
            raise AssertionError("expected an exception")

    def testRoleKeyDuplication(self):
        try:
            inv = Roles('./tests/cfg/roles_key_dup.yml')
        except DumplicateRoleKey:
            return
        else:
            raise AssertionError("expected an exception")

    def testNoFile(self):
        try:
            inv = Roles('./tests/cfg/dontexist')
        except MissingRolesFile:
            return
        else:
            raise AssertionError("expected an exception")

    def testRoleContentDuplication(self):
        try:
            inv = Roles('./tests/cfg/roles_content_dup.yml')
        except DumplicateRoleContent:
            return
        else:
            raise AssertionError("expected an exception")

    def testGroupsRemove(self):
        inv = Roles('./tests/cfg/roles.yml')
        groups = inv.get_groups_to_remove(
                ['admin-lv2', 'admin-lv3', 'users'],
                ['admin-lv2']
        )
        expected = {'ad': Set(['Administrators', 'Domain Controllers']), 'ldap': Set(['cn=nagios admins,ou=group,dc=example,dc=com', 'cn=puppet admins,ou=group,dc=example,dc=com', 'cn=dns admins,ou=group,dc=example,dc=com'])}
        assert groups == expected

    def testGetGroup(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.get_groups(['users'])
        expected = {
            'ad': ['Domain Users'],
            'ldap': ['cn=users,ou=group,dc=example,dc=com']
        }
        assert res == expected

    def testNested(self):
        inv = Roles('./tests/cfg/nested.yml')
        expected = {'developpers': {'backends_groups': {'ad': ['Domain Users'], 'ldap': ['cn=developpers,ou=group,dc=example,dc=com', 'cn=users,ou=group,dc=example,dc=com']}, 'display_name': 'Developpers', 'description': 'description'}, 'admin-lv3': {'backends_groups': {'ad': ['Domain Users', 'Administrators', 'Domain Controllers'], 'ldap': ['cn=nagios admins,ou=group,dc=example,dc=com', 'cn=users,ou=group,dc=example,dc=com', 'cn=puppet admins,ou=group,dc=example,dc=com', 'cn=dns admins,ou=group,dc=example,dc=com']}, 'display_name': 'Administrators Level 3', 'description': 'description'}, 'admin-lv2': {'backends_groups': {'ad': ['Domain Users'], 'ldap': ['cn=nagios admins,ou=group,dc=example,dc=com', 'cn=users,ou=group,dc=example,dc=com']}, 'display_name': 'Administrators Level 2', 'description': 'description', 'LC_admins': True}, 'users': {'backends_groups': {'ad': ['Domain Users'], 'ldap': ['cn=users,ou=group,dc=example,dc=com']}, 'display_name': 'Simple Users', 'description': 'description'}}
        assert expected == inv.flatten

    def testGetGroupMissingRole(self):
        inv = Roles('./tests/cfg/roles.yml')
        try:
            res = inv.get_groups('notarole')
        except MissingRole:
            return
        else:
            raise AssertionError("expected an exception")

    def testGetDisplayNameMissingRole(self):
        inv = Roles('./tests/cfg/roles.yml')
        try:
            res = inv.get_display_name('notarole')
        except MissingRole:
            return
        else:
            raise AssertionError("expected an exception")

    def testGetDisplayName(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.get_display_name('users')
        expected = 'Simple Users'
        assert res == expected

    def testGetAllRoles(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.get_allroles()
        expected = ['developpers', 'admin-lv3', 'admin-lv2', 'users']
        assert res == expected

    def testGetAllRoles(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.get_backends()
        expected = Set(['ad', 'ldap'])
        assert res == expected

    def testDumpNested(self):
        inv = Roles('./tests/cfg/roles.yml')
        inv.dump_nest()

    def testAdminRoles(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.get_admin_roles()
        expected = ['admin-lv2', 'admin-lv3']
        assert res == expected

    def testIsAdmin(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.is_admin(['admin-lv3', 'users'])
        assert res == True

    def testIsNotAdmin(self):
        inv = Roles('./tests/cfg/roles.yml')
        res = inv.is_admin(['users'])
        assert res == False

    def testGetRole(self):
        inv = Roles('./tests/cfg/roles.yml')
        groups = {
        'ad' : ['Domain Users', 'Domain Users 2'],
        'ldap': ['cn=users,ou=group,dc=example,dc=com',
            'cn=nagios admins,ou=group,dc=example,dc=com',
            'cn=developpers,ou=group,dc=example,dc=com',
            ],
        'toto': ['not a group'],
        }
        expected = {'unusedgroups': {'toto': Set(['not a group']), 'ad': Set(['Domain Users 2'])}, 'roles': Set(['developpers', 'admin-lv2', 'users'])}
        assert inv.get_roles(groups) == expected