Fabiano Fidêncio 9c95519
From bb1455ce8d45d026f173f402bce29bf97af8c44d Mon Sep 17 00:00:00 2001
Fabiano Fidêncio 9c95519
From: Jakub Hrozek <jhrozek@redhat.com>
Fabiano Fidêncio 9c95519
Date: Mon, 26 Mar 2018 17:30:14 +0200
Fabiano Fidêncio 9c95519
Subject: [PATCH] TESTS: Add a test for the multiple files feature
Fabiano Fidêncio 9c95519
MIME-Version: 1.0
Fabiano Fidêncio 9c95519
Content-Type: text/plain; charset=UTF-8
Fabiano Fidêncio 9c95519
Content-Transfer-Encoding: 8bit
Fabiano Fidêncio 9c95519
Fabiano Fidêncio 9c95519
Adds an integration test for the new feature.
Fabiano Fidêncio 9c95519
Fabiano Fidêncio 9c95519
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Fabiano Fidêncio 9c95519
(cherry picked from commit 4a9100a588ade253cecb2224b95bd8caa8136109)
Fabiano Fidêncio 9c95519
---
Fabiano Fidêncio 9c95519
 src/tests/intg/test_files_provider.py | 61 ++++++++++++++++++++++++++++++++++-
Fabiano Fidêncio 9c95519
 1 file changed, 60 insertions(+), 1 deletion(-)
Fabiano Fidêncio 9c95519
Fabiano Fidêncio 9c95519
diff --git a/src/tests/intg/test_files_provider.py b/src/tests/intg/test_files_provider.py
Fabiano Fidêncio 9c95519
index 41bfd8844..ce5c7b774 100644
Fabiano Fidêncio 9c95519
--- a/src/tests/intg/test_files_provider.py
Fabiano Fidêncio 9c95519
+++ b/src/tests/intg/test_files_provider.py
Fabiano Fidêncio 9c95519
@@ -25,6 +25,7 @@ import subprocess
Fabiano Fidêncio 9c95519
 import pwd
Fabiano Fidêncio 9c95519
 import grp
Fabiano Fidêncio 9c95519
 import pytest
Fabiano Fidêncio 9c95519
+import tempfile
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
 import ent
Fabiano Fidêncio 9c95519
 import sssd_id
Fabiano Fidêncio 9c95519
@@ -33,7 +34,7 @@ from sssd_passwd import (call_sssd_getpwnam,
Fabiano Fidêncio 9c95519
                          call_sssd_enumeration,
Fabiano Fidêncio 9c95519
                          call_sssd_getpwuid)
Fabiano Fidêncio 9c95519
 from sssd_group import call_sssd_getgrnam, call_sssd_getgrgid
Fabiano Fidêncio 9c95519
-from files_ops import passwd_ops_setup, group_ops_setup
Fabiano Fidêncio 9c95519
+from files_ops import passwd_ops_setup, group_ops_setup, PasswdOps, GroupOps
Fabiano Fidêncio 9c95519
 from util import unindent
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
 # Sync this with files_ops.c
Fabiano Fidêncio 9c95519
@@ -59,6 +60,11 @@ OV_USER1 = dict(name='ov_user1', passwd='x', uid=10010, gid=20010,
Fabiano Fidêncio 9c95519
                 dir='/home/ov/user1',
Fabiano Fidêncio 9c95519
                 shell='/bin/ov_user1_shell')
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
+ALT_USER1 = dict(name='altuser1', passwd='x', uid=60001, gid=70001,
Fabiano Fidêncio 9c95519
+                 gecos='User for tests from alt files',
Fabiano Fidêncio 9c95519
+                 dir='/home/altuser1',
Fabiano Fidêncio 9c95519
+                 shell='/bin/bash')
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
 CANARY_GR = dict(name='canary',
Fabiano Fidêncio 9c95519
                  gid=300001,
Fabiano Fidêncio 9c95519
                  mem=[])
Fabiano Fidêncio 9c95519
@@ -79,6 +85,10 @@ GROUP_NOMEM = dict(name='group_nomem',
Fabiano Fidêncio 9c95519
                    gid=40000,
Fabiano Fidêncio 9c95519
                    mem=[])
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
+ALT_GROUP1 = dict(name='alt_group1',
Fabiano Fidêncio 9c95519
+                  gid=80001,
Fabiano Fidêncio 9c95519
+                  mem=['alt_user1'])
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
 def start_sssd():
Fabiano Fidêncio 9c95519
     """Start sssd and add teardown for stopping it and removing state"""
Fabiano Fidêncio 9c95519
@@ -145,6 +155,38 @@ def files_domain_only(request):
Fabiano Fidêncio 9c95519
     return None
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
 
Fabiano Fidêncio 9c95519
+@pytest.fixture
Fabiano Fidêncio 9c95519
+def files_multiple_sources(request):
Fabiano Fidêncio 9c95519
+    _, alt_passwd_path = tempfile.mkstemp(prefix='altpasswd')
Fabiano Fidêncio 9c95519
+    request.addfinalizer(lambda: os.unlink(alt_passwd_path))
Fabiano Fidêncio 9c95519
+    alt_pwops = PasswdOps(alt_passwd_path)
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+    _, alt_group_path = tempfile.mkstemp(prefix='altgroup')
Fabiano Fidêncio 9c95519
+    request.addfinalizer(lambda: os.unlink(alt_group_path))
Fabiano Fidêncio 9c95519
+    alt_grops = GroupOps(alt_group_path)
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+    passwd_list = ",".join([os.environ["NSS_WRAPPER_PASSWD"], alt_passwd_path])
Fabiano Fidêncio 9c95519
+    group_list = ",".join([os.environ["NSS_WRAPPER_GROUP"], alt_group_path])
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+    conf = unindent("""\
Fabiano Fidêncio 9c95519
+        [sssd]
Fabiano Fidêncio 9c95519
+        domains             = files
Fabiano Fidêncio 9c95519
+        services            = nss
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+        [nss]
Fabiano Fidêncio 9c95519
+        debug_level = 10
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+        [domain/files]
Fabiano Fidêncio 9c95519
+        id_provider = files
Fabiano Fidêncio 9c95519
+        passwd_files = {passwd_list}
Fabiano Fidêncio 9c95519
+        group_files = {group_list}
Fabiano Fidêncio 9c95519
+        debug_level = 10
Fabiano Fidêncio 9c95519
+    """).format(**locals())
Fabiano Fidêncio 9c95519
+    create_conf_fixture(request, conf)
Fabiano Fidêncio 9c95519
+    create_sssd_fixture(request)
Fabiano Fidêncio 9c95519
+    return alt_pwops, alt_grops
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
 @pytest.fixture
Fabiano Fidêncio 9c95519
 def proxy_to_files_domain_only(request):
Fabiano Fidêncio 9c95519
     conf = unindent("""\
Fabiano Fidêncio 9c95519
@@ -1054,3 +1096,20 @@ def test_no_sssd_conf(add_user_with_canary, no_sssd_conf):
Fabiano Fidêncio 9c95519
     res, user = sssd_getpwnam_sync(USER1["name"])
Fabiano Fidêncio 9c95519
     assert res == NssReturnCode.SUCCESS
Fabiano Fidêncio 9c95519
     assert user == USER1
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+def test_multiple_passwd_group_files(add_user_with_canary,
Fabiano Fidêncio 9c95519
+                                     add_group_with_canary,
Fabiano Fidêncio 9c95519
+                                     files_multiple_sources):
Fabiano Fidêncio 9c95519
+    """
Fabiano Fidêncio 9c95519
+    Test that users and groups can be mirrored from multiple files
Fabiano Fidêncio 9c95519
+    """
Fabiano Fidêncio 9c95519
+    alt_pwops, alt_grops = files_multiple_sources
Fabiano Fidêncio 9c95519
+    alt_pwops.useradd(**ALT_USER1)
Fabiano Fidêncio 9c95519
+    alt_grops.groupadd(**ALT_GROUP1)
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+    check_user(USER1)
Fabiano Fidêncio 9c95519
+    check_user(ALT_USER1)
Fabiano Fidêncio 9c95519
+
Fabiano Fidêncio 9c95519
+    check_group(GROUP1)
Fabiano Fidêncio 9c95519
+    check_group(ALT_GROUP1)
Fabiano Fidêncio 9c95519
-- 
Fabiano Fidêncio 9c95519
2.14.3
Fabiano Fidêncio 9c95519