12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # -*- coding: utf-8 -*-
- # Import python libs
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import shutil
- import pytest
- # Import Salt Testing libs
- from tests.support.runtests import RUNTIME_VARS
- from tests.support.case import ModuleCase
- from tests.support.mixins import AdaptedConfigurationTestCaseMixin
- # Import salt libs
- import salt.utils.files
- import salt.utils.user
- # Acl package should be installed to test linux_acl module
- @pytest.mark.skip_if_binaries_missing(['getfacl'])
- # Doesn't work. Why?
- # @pytest.mark.requires_salt_modules('acl')
- # @pytest.mark.requires_salt_modules('linux_acl')
- @pytest.mark.windows_whitelisted
- class LinuxAclModuleTest(ModuleCase, AdaptedConfigurationTestCaseMixin):
- '''
- Validate the linux_acl module
- '''
- def setUp(self):
- # Blindly copied from tests.integration.modules.file; Refactoring?
- self.myfile = os.path.join(RUNTIME_VARS.TMP, 'myfile')
- with salt.utils.files.fopen(self.myfile, 'w+') as fp:
- fp.write('Hello\n')
- self.mydir = os.path.join(RUNTIME_VARS.TMP, 'mydir/isawesome')
- if not os.path.isdir(self.mydir):
- # left behind... Don't fail because of this!
- os.makedirs(self.mydir)
- self.mysymlink = os.path.join(RUNTIME_VARS.TMP, 'mysymlink')
- if os.path.islink(self.mysymlink):
- os.remove(self.mysymlink)
- os.symlink(self.myfile, self.mysymlink)
- self.mybadsymlink = os.path.join(RUNTIME_VARS.TMP, 'mybadsymlink')
- if os.path.islink(self.mybadsymlink):
- os.remove(self.mybadsymlink)
- os.symlink('/nonexistentpath', self.mybadsymlink)
- super(LinuxAclModuleTest, self).setUp()
- def tearDown(self):
- if os.path.isfile(self.myfile):
- os.remove(self.myfile)
- if os.path.islink(self.mysymlink):
- os.remove(self.mysymlink)
- if os.path.islink(self.mybadsymlink):
- os.remove(self.mybadsymlink)
- shutil.rmtree(self.mydir, ignore_errors=True)
- super(LinuxAclModuleTest, self).tearDown()
- def test_version(self):
- self.assertRegex(self.run_function('acl.version'), r'\d+\.\d+\.\d+')
- def test_getfacl_w_single_file_without_acl(self):
- ret = self.run_function('acl.getfacl', arg=[self.myfile])
- user = salt.utils.user.get_user()
- group = salt.utils.user.get_default_group(user)
- self.maxDiff = None
- self.assertEqual(
- ret,
- {self.myfile: {'other': [{'': {'octal': 4, 'permissions': {'read': True, 'write': False, 'execute': False}}}],
- 'user': [{user: {'octal': 6, 'permissions': {'read': True, 'write': True, 'execute': False}}}],
- 'group': [{group: {'octal': 4, 'permissions': {'read': True, 'write': False, 'execute': False}}}],
- 'comment': {'owner': user, 'group': group, 'file': self.myfile}}}
- )
|