From 8f012082f1b8b4fa65ba4f013b06fc3824e1ff0d Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Sun, 8 Apr 2018 14:28:17 +0200
Subject: [PATCH] Add working __repr__ to all backends

eval(repr(backend)) should be equivalent to backend
---
 auth.py | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/auth.py b/auth.py
index 277af47..f1063f5 100644
--- a/auth.py
+++ b/auth.py
@@ -97,6 +97,13 @@ class StaticUserManager:
             for (username, password, groups) in users
         }
 
+    def __repr__(self):
+        users = [
+            (username, self.passwords[username], self.groups[username])
+            for username in self.passwords
+        ]
+        return "StaticUserManager({})".format(users)
+
     def authenticate(self, username, password):
         return (username in self.passwords
                 and self.passwords[username] == password)
@@ -118,6 +125,17 @@ try:
             self.user_dn = user_dn
             self.group_dn = group_dn
 
+        def __repr__(self):
+            return (
+                "LdapManager(host='{host}', user_dn='{user_dn}', "
+                "group_dn='{group_dn}', port={port}, use_ssl={use_ssl})"
+                .format(
+                    host=self.server.host,
+                    user_dn=self.user_dn,
+                    group_dn=self.group_dn,
+                    port=self.server.port,
+                    use_ssl=self.server.ssl))
+
         def authenticate(self, username, password):
             try:
                 connection = ldap3.Connection(
@@ -163,6 +181,24 @@ try:
             self.domain = domain
             self.user_dn = user_dn
             self.group_dn = group_dn
+            self.ca_cert = ca_cert
+            self.host = host
+            self.port = port
+            self.use_ssl = use_ssl
+
+        def __repr__(self):
+            return (
+                "ADManager(host='{host}', domain='{domain}', "
+                "user_dn='{user_dn}', group_dn='{group_dn}', "
+                "port={port}, use_ssl={use_ssl}, ca_cert='{ca_cert}')"
+                .format(
+                    host=self.host,
+                    domain=self.domain,
+                    user_dn=self.user_dn,
+                    group_dn=self.group_dn,
+                    port=self.port,
+                    use_ssl=self.use_ssl,
+                    ca_cert=self.ca_cert))
 
         def prepare_connection(self, username=None, password=None):
             if username is not None and password is not None:
@@ -229,6 +265,9 @@ try:
         def __init__(self):
             self.pam = pam.pam()
 
+        def __repr__(self):
+            return "PAMManager()"
+
         def authenticate(self, username, password):
             return self.pam.authenticate(username, password)
 
@@ -241,5 +280,6 @@ try:
         def all_groups(self, username, password):
             for group in grp.getgrall():
                 yield group.gr_name
+
 except ImportError:
     pass
-- 
GitLab