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