[Kimchi-devel] [PATCH 1/5] Override only the updated "User" methods in "patch_auth"

Aline Manera alinefm at linux.vnet.ibm.com
Fri Apr 11 20:57:57 UTC 2014


From: Crístian Viana <vianac at linux.vnet.ibm.com>

The function "patch_auth" creates a fake class to override the existing
kimchi.auth.User with a few updated methods. That attribution overrides
the entire User class along with all its methods.

In order to avoid side effects, override only the methods we need to
change in the "User" class. Other methods not related to "patch_auth"
will not be affected now.
---
 tests/utils.py |   24 ++++++------------------
 1 file changed, 6 insertions(+), 18 deletions(-)

diff --git a/tests/utils.py b/tests/utils.py
index 0a1a967..b373f34 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -149,25 +149,12 @@ def patch_auth(sudo=True):
     Override the authenticate function with a simple test against an
     internal dict of users and passwords.
     """
-    USER_ID = 'userid'
-    USER_GROUPS = 'groups'
-    USER_SUDO = 'sudo'
 
-    class _User(object):
-        def __init__(self, userid):
-            self.user = {}
-            self.user[USER_ID] = userid
-            self.user[USER_GROUPS] = None
-            self.user[USER_SUDO] = sudo
+    def _get_groups(self):
+        return None
 
-        def get_groups(self):
-            return self.user[USER_GROUPS]
-
-        def has_sudo(self):
-            return self.user[USER_SUDO]
-
-        def get_user(self):
-            return self.user
+    def _has_sudo(self):
+        return sudo
 
     def _authenticate(username, password, service="passwd"):
         try:
@@ -178,7 +165,8 @@ def patch_auth(sudo=True):
 
     import kimchi.auth
     kimchi.auth.authenticate = _authenticate
-    kimchi.auth.User = _User
+    kimchi.auth.User.get_groups = _get_groups
+    kimchi.auth.User.has_sudo = _has_sudo
 
 
 def normalize_xml(xml_str):
-- 
1.7.10.4




More information about the Kimchi-devel mailing list