summaryrefslogtreecommitdiffstats
path: root/src/tests/multihost/basic/test_files.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/multihost/basic/test_files.py')
-rw-r--r--src/tests/multihost/basic/test_files.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/tests/multihost/basic/test_files.py b/src/tests/multihost/basic/test_files.py
new file mode 100644
index 0000000..5a1c8c2
--- /dev/null
+++ b/src/tests/multihost/basic/test_files.py
@@ -0,0 +1,78 @@
+"""Files test provider cases
+
+:requirement: IDM-SSSD-REQ :: SSSD is default for local resolution
+:casecomponent: sssd
+:subsystemteam: sst_idm_sssd
+:upstream: yes
+:status: approved
+"""
+import pytest
+
+
+def have_files_provider(multihost):
+ cmd = multihost.master[0].run_command('man sssd-files | grep files', raiseonerr=False)
+ return cmd.returncode == 0
+
+
+def get_sss_entry(multihost, db, ent_name):
+ cmd = multihost.master[0].run_command('getent %s -s sss %s' % (db, ent_name), raiseonerr=False)
+ return cmd.returncode, cmd.stdout_text
+
+
+def get_sss_user(multihost, username):
+ return get_sss_entry(multihost, 'passwd', username)
+
+
+@pytest.mark.usefixtures('enable_files_domain', 'files_domain_users_class')
+class TestImplicitFilesProvider(object):
+ """
+ Test the files provider. This test runs the implicit files provider
+ together with another domain to stick close to what users use in Fedora
+ """
+ @pytest.mark.converted('test_files.py', 'test_files__getent_does_not_handle_root')
+ def test_files_does_not_handle_root(self, multihost):
+ """
+ :title: files: files provider does not handle root
+ :id: 5aa5165d-379f-4fc6-b4ed-b32b66406d4f
+ """
+ if not have_files_provider(multihost):
+ pytest.skip("Files Provider support isn't available, skipping")
+ exit_status, _ = get_sss_user(multihost, 'root')
+ assert exit_status == 2
+
+ @pytest.mark.converted('test_files.py', 'test_files__simple_getent')
+ def test_files_sanity(self, multihost):
+ """
+ :title: files: Test that the files provider can resolve a user
+ :id: 242cd094-b04d-4857-981a-8624573dde84
+ """
+ if not have_files_provider(multihost):
+ pytest.skip("Files Provider support isn't available, skipping")
+ exit_status, _ = get_sss_user(multihost, 'lcl1')
+ assert exit_status == 0
+
+ @pytest.mark.converted('test_files.py', 'test_files__enumeration')
+ def test_files_enumeration(self, multihost):
+ """
+ :title: files: Verify files provider do not enumerate
+ :id: e6d922bf-3af2-4cea-8570-6dd9233da624
+ :description: Since nss_files enumerates and libc would
+ concatenate the results, the files provider of SSSD should
+ not enumerate
+ """
+ if not have_files_provider(multihost):
+ pytest.skip("Files Provider support isn't available, skipping")
+ cmd = multihost.master[0].run_command('getent passwd -s sss')
+ assert len(cmd.stdout_text) == 0
+
+ @pytest.mark.converted('test_files.py', 'test_files__user_modify')
+ def test_updated_homedir(self, multihost):
+ """
+ :title: files: Test that homedir is updated
+ :id: a9a0a911-1818-40d1-b897-0397ef107fd4
+ """
+ if not have_files_provider(multihost):
+ pytest.skip("Files Provider support isn't available, skipping")
+ exit_status, output = get_sss_user(multihost, 'no_home_user')
+ assert exit_status == 0
+ assert ":/tmp:" in output