89 lines
3.1 KiB
Diff
89 lines
3.1 KiB
Diff
|
From c9bc471e063f2865d6423e4f1c9b81e73a45e43f Mon Sep 17 00:00:00 2001
|
||
|
From: Stanislav Levin <slev@altlinux.org>
|
||
|
Date: Wed, 4 Aug 2021 18:38:16 +0300
|
||
|
Subject: [PATCH] ipatests: Fix TestAJPSecretUpgrade tests on systems without
|
||
|
pkiuser
|
||
|
|
||
|
Tests in `test_ipaserver.test_secure_ajp_connector' assume that there
|
||
|
is pkiuser in OS, but this is not always true (for example, in systems
|
||
|
having minimum installed dependencies, in particular, without pki-server
|
||
|
RPM package). Since the tests already use the mock and pkiuser entity is
|
||
|
not the subject of testing the pwd.getpwnam has been mocked.
|
||
|
|
||
|
Fixes: https://pagure.io/freeipa/issue/8942
|
||
|
Signed-off-by: Stanislav Levin <slev@altlinux.org>
|
||
|
Reviewed-By: Rob Crittenden <rcritten@redhat.com>
|
||
|
---
|
||
|
.../test_secure_ajp_connector.py | 40 ++++++++++++++++---
|
||
|
1 file changed, 34 insertions(+), 6 deletions(-)
|
||
|
|
||
|
diff --git a/ipatests/test_ipaserver/test_secure_ajp_connector.py b/ipatests/test_ipaserver/test_secure_ajp_connector.py
|
||
|
index 2719dbc48..35ef7407a 100644
|
||
|
--- a/ipatests/test_ipaserver/test_secure_ajp_connector.py
|
||
|
+++ b/ipatests/test_ipaserver/test_secure_ajp_connector.py
|
||
|
@@ -1,5 +1,6 @@
|
||
|
# Copyright (C) 2021 FreeIPA Project Contributors - see LICENSE file
|
||
|
|
||
|
+from collections import namedtuple
|
||
|
from io import BytesIO
|
||
|
from lxml.etree import parse as myparse # pylint: disable=no-name-in-module
|
||
|
import pytest
|
||
|
@@ -32,6 +33,32 @@ def mock_etree_parse(data):
|
||
|
return myparse(f)
|
||
|
|
||
|
|
||
|
+def mock_pkiuser_entity():
|
||
|
+ """Return struct_passwd for mocked pkiuser"""
|
||
|
+ StructPasswd = namedtuple(
|
||
|
+ "StructPasswd",
|
||
|
+ [
|
||
|
+ "pw_name",
|
||
|
+ "pw_passwd",
|
||
|
+ "pw_uid",
|
||
|
+ "pw_gid",
|
||
|
+ "pw_gecos",
|
||
|
+ "pw_dir",
|
||
|
+ "pw_shell",
|
||
|
+ ]
|
||
|
+ )
|
||
|
+ pkiuser_entity = StructPasswd(
|
||
|
+ constants.PKI_USER,
|
||
|
+ pw_passwd="x",
|
||
|
+ pw_uid=-1,
|
||
|
+ pw_gid=-1,
|
||
|
+ pw_gecos="",
|
||
|
+ pw_dir="/dev/null",
|
||
|
+ pw_shell="/sbin/nologin",
|
||
|
+ )
|
||
|
+ return pkiuser_entity
|
||
|
+
|
||
|
+
|
||
|
# Format of test_data is:
|
||
|
# (
|
||
|
# is_newer_tomcat (boolean),
|
||
|
@@ -148,14 +175,15 @@ test_data = (
|
||
|
|
||
|
|
||
|
class TestAJPSecretUpgrade:
|
||
|
- @patch('os.chown')
|
||
|
- @patch('lxml.etree.parse')
|
||
|
- @pytest.mark.parametrize('is_newer, data, secret, expect, rewrite',
|
||
|
- test_data)
|
||
|
- def test_connecter(self, mock_parse, mock_chown, is_newer, data, secret,
|
||
|
- expect, rewrite):
|
||
|
+ @patch("ipaplatform.base.constants.pwd.getpwnam")
|
||
|
+ @patch("ipaplatform.base.constants.os.chown")
|
||
|
+ @patch("ipaserver.install.dogtaginstance.lxml.etree.parse")
|
||
|
+ @pytest.mark.parametrize("test_data", test_data)
|
||
|
+ def test_connecter(self, mock_parse, mock_chown, mock_getpwnam, test_data):
|
||
|
+ is_newer, data, secret, expect, rewrite = test_data
|
||
|
mock_chown.return_value = None
|
||
|
mock_parse.return_value = mock_etree_parse(data)
|
||
|
+ mock_getpwnam.return_value = mock_pkiuser_entity()
|
||
|
|
||
|
dogtag = MyDogtagInstance(is_newer)
|
||
|
with patch('ipaserver.install.dogtaginstance.open', mock_open()) \
|
||
|
--
|
||
|
2.31.1
|
||
|
|