Blob Blame History Raw
From 0727c05df8e2b9cd6977bf076e88e5da0fd573a6 Mon Sep 17 00:00:00 2001
From: Rob Crittenden <rcritten@redhat.com>
Date: Tue, 6 Aug 2019 16:04:40 -0400
Subject: [PATCH 5/8] Mock the AD trust roles

The actual values are set directly in the registry but these classes
provide just enough implementation to allow the code to initialize.
---
 src/ipahealthcheck/ipa/plugin.py |  4 +++-
 tests/base.py                    |  5 +++++
 tests/util.py                    | 27 +++++++++++++++++++++++++++
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/src/ipahealthcheck/ipa/plugin.py b/src/ipahealthcheck/ipa/plugin.py
index c4cef9b..bd95c16 100644
--- a/src/ipahealthcheck/ipa/plugin.py
+++ b/src/ipahealthcheck/ipa/plugin.py
@@ -12,7 +12,6 @@ from ipaserver.install import cainstance
 from ipaserver.install import dsinstance
 from ipaserver.install import httpinstance
 from ipaserver.install import installutils
-from ipaserver.servroles import ADtrustBasedRole, ServiceBasedRole
 
 from ipahealthcheck.core.plugin import Plugin, Registry
 
@@ -38,6 +37,9 @@ class IPARegistry(Registry):
         self.trust_controller = False
 
     def initialize(self, framework):
+        # deferred import for mock
+        from ipaserver.servroles import ADtrustBasedRole, ServiceBasedRole
+
         installutils.check_server_configuration()
 
         if not api.isdone('finalize'):
diff --git a/tests/base.py b/tests/base.py
index 8b9e37c..d1d2442 100644
--- a/tests/base.py
+++ b/tests/base.py
@@ -3,6 +3,7 @@
 #
 from unittest import mock, TestCase
 from util import no_exceptions
+from util import ADtrustBasedRole, ServiceBasedRole
 
 
 class BaseTest(TestCase):
@@ -24,6 +25,10 @@ class BaseTest(TestCase):
     default_patches = {
         'ipaserver.install.installutils.check_server_configuration':
         mock.Mock(return_value=None),
+        'ipaserver.servroles.ServiceBasedRole':
+        mock.Mock(return_value=ServiceBasedRole()),
+        'ipaserver.servroles.ADtrustBasedRole':
+        mock.Mock(return_value=ADtrustBasedRole()),
     }
     patches = {}
 
diff --git a/tests/util.py b/tests/util.py
index 603185f..5bd592e 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -76,6 +76,33 @@ class KRAInstance:
         return self.installed
 
 
+class ServiceBasedRole:
+    """A bare-bones role override
+
+       This is just enough to satisfy the initialization code so
+       the AD Trust status can be determined. It will always default
+       to false and the registry should be overridden directly in the
+       test cases.
+    """
+    def __init__(self, attr_name=None, name=None, component_services=None):
+        pass
+
+    def status(self, api_instance, server=None, attrs_list=("*",)):
+        return [dict()]
+
+
+class ADtrustBasedRole(ServiceBasedRole):
+    """A bare-bones role override
+
+       This is just enough to satisfy the initialization code so
+       the AD Trust status can be determined. It will always default
+       to false and the registry should be overridden directly in the
+       test cases.
+    """
+    def __init__(self, attr_name=None, name=None):
+        pass
+
+
 # Mock api. This file needs to be imported before anything that would
 # import ipalib.api in order for it to be replaced properly.
 
-- 
2.20.1