From 05aace0e9da4535a8c0822c552fe5ae1a0e15424 Mon Sep 17 00:00:00 2001 From: kakwa Date: Sat, 9 Feb 2019 17:36:01 +0100 Subject: [PATCH] force the groups in flatten roles to be sorted * sorting the groups helps debuggability and also permits testing that doesn't rely on python ordering (which is different between 2 and 3). --- ldapcherry/roles.py | 1 + tests/test_Roles.py | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/ldapcherry/roles.py b/ldapcherry/roles.py index 9fc6a92..a12fd70 100644 --- a/ldapcherry/roles.py +++ b/ldapcherry/roles.py @@ -58,6 +58,7 @@ class Roles: ret[b].add(group) for b in ret: ret[b] = list(ret[b]) + ret[b].sort() return ret def _flatten(self, roles=None, groups=None): diff --git a/tests/test_Roles.py b/tests/test_Roles.py index 72bddc1..84e9994 100644 --- a/tests/test_Roles.py +++ b/tests/test_Roles.py @@ -79,7 +79,50 @@ class TestError(object): 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'}} + expected = { + 'admin-lv2': { + 'LC_admins': True, + 'backends_groups': { + 'ad': ['Domain Users'], + 'ldap': ['cn=nagios ' + 'admins,ou=group,dc=example,dc=com', + 'cn=users,ou=group,dc=example,dc=com'] + }, + 'description': 'description', + 'display_name': 'Administrators Level 2' + }, + 'admin-lv3': { + 'backends_groups': { + 'ad': ['Administrators', + 'Domain Controllers', + 'Domain Users'], + 'ldap': ['cn=dns ' + 'admins,ou=group,dc=example,dc=com', + 'cn=nagios ' + 'admins,ou=group,dc=example,dc=com', + 'cn=puppet ' + 'admins,ou=group,dc=example,dc=com', + 'cn=users,ou=group,dc=example,dc=com'] + }, + 'description': 'description', + 'display_name': 'Administrators Level 3' + }, + 'developpers': { + 'backends_groups': { + 'ad': ['Domain Users'], + 'ldap': ['cn=developpers,ou=group,dc=example,dc=com', + 'cn=users,ou=group,dc=example,dc=com']}, + 'description': 'description', + 'display_name': 'Developpers' + }, + 'users': { + 'backends_groups': { + 'ad': ['Domain Users'], + 'ldap': ['cn=users,ou=group,dc=example,dc=com']}, + 'description': 'description', + 'display_name': 'Simple Users' + } + } assert expected == inv.flatten def testGetGroupMissingRole(self):