|
@@ -19,22 +19,25 @@ limitations under the License.
|
|
|
|
|
|
from unittest import TestCase
|
|
|
from mock.mock import patch, MagicMock
|
|
|
+from only_for_platform import get_platform, not_for_platform, PLATFORM_WINDOWS
|
|
|
+
|
|
|
import os
|
|
|
import sys
|
|
|
-import grp
|
|
|
-import pwd
|
|
|
from resource_management.core import Environment, Fail
|
|
|
from resource_management.core.resources import File
|
|
|
from resource_management.core.system import System
|
|
|
-from resource_management.core import sudo
|
|
|
-import resource_management.core.providers.system
|
|
|
import resource_management
|
|
|
|
|
|
+if get_platform() != PLATFORM_WINDOWS:
|
|
|
+ import resource_management.core.providers.system
|
|
|
+ import grp
|
|
|
+ import pwd
|
|
|
+
|
|
|
|
|
|
@patch.object(System, "os_family", new = 'redhat')
|
|
|
class TestFileResource(TestCase):
|
|
|
@patch.object(os.path, "dirname")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_create_dir_exist(self, isdir_mock, dirname_mock):
|
|
|
"""
|
|
|
Tests if 'create' action fails when path is existent directory
|
|
@@ -55,7 +58,7 @@ class TestFileResource(TestCase):
|
|
|
self.assertFalse(dirname_mock.called)
|
|
|
|
|
|
@patch.object(os.path, "dirname")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_create_parent_dir_non_exist(self, isdir_mock, dirname_mock):
|
|
|
"""
|
|
|
Tests if 'create' action fails when parent directory of path
|
|
@@ -79,10 +82,10 @@ class TestFileResource(TestCase):
|
|
|
self.assertTrue(dirname_mock.called)
|
|
|
|
|
|
@patch("resource_management.core.providers.system._ensure_metadata")
|
|
|
- @patch.object(sudo, "read_file")
|
|
|
- @patch.object(sudo, "create_file")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.read_file")
|
|
|
+ @patch("resource_management.core.sudo.create_file")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_create_non_existent_file(self, isdir_mock, exists_mock, create_file_mock, read_file_mock, ensure_mock):
|
|
|
"""
|
|
|
Tests if 'create' action create new non existent file and write proper data
|
|
@@ -103,10 +106,10 @@ class TestFileResource(TestCase):
|
|
|
|
|
|
|
|
|
@patch("resource_management.core.providers.system._ensure_metadata")
|
|
|
- @patch.object(sudo, "read_file")
|
|
|
- @patch.object(sudo, "create_file")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.read_file")
|
|
|
+ @patch("resource_management.core.sudo.create_file")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_create_replace(self, isdir_mock, exists_mock, create_file_mock, read_file_mock, ensure_mock):
|
|
|
"""
|
|
|
Tests if 'create' action rewrite existent file with new data
|
|
@@ -126,9 +129,9 @@ class TestFileResource(TestCase):
|
|
|
create_file_mock.assert_called_with('/directory/file', 'new-content', encoding=None)
|
|
|
|
|
|
|
|
|
- @patch.object(sudo, "unlink")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.unlink")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_delete_is_directory(self, isdir_mock, exist_mock, unlink_mock):
|
|
|
"""
|
|
|
Tests if 'delete' action fails when path is directory
|
|
@@ -152,9 +155,9 @@ class TestFileResource(TestCase):
|
|
|
self.assertEqual(exist_mock.call_count, 0)
|
|
|
self.assertEqual(unlink_mock.call_count, 0)
|
|
|
|
|
|
- @patch.object(sudo, "unlink")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.unlink")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_delete(self, isdir_mock, exist_mock, unlink_mock):
|
|
|
"""
|
|
|
Tests if 'delete' action removes file
|
|
@@ -175,7 +178,7 @@ class TestFileResource(TestCase):
|
|
|
self.assertEqual(unlink_mock.call_count, 1)
|
|
|
|
|
|
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_attribute_path(self, isdir_mock):
|
|
|
"""
|
|
|
Tests 'path' attribute
|
|
@@ -198,10 +201,10 @@ class TestFileResource(TestCase):
|
|
|
|
|
|
@patch.object(resource_management.core.Environment, "backup_file")
|
|
|
@patch("resource_management.core.providers.system._ensure_metadata")
|
|
|
- @patch.object(sudo, "read_file")
|
|
|
- @patch.object(sudo, "create_file")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.read_file")
|
|
|
+ @patch("resource_management.core.sudo.create_file")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_attribute_backup(self, isdir_mock, exists_mock, create_file_mock, read_file_mock, ensure_mock, backup_file_mock):
|
|
|
"""
|
|
|
Tests 'backup' attribute
|
|
@@ -235,8 +238,8 @@ class TestFileResource(TestCase):
|
|
|
|
|
|
@patch("resource_management.core.providers.system._ensure_metadata")
|
|
|
@patch("__builtin__.open")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_attribute_replace(self, isdir_mock, exists_mock, open_mock, ensure_mock):
|
|
|
"""
|
|
|
Tests 'replace' attribute
|
|
@@ -263,14 +266,14 @@ class TestFileResource(TestCase):
|
|
|
self.assertEqual(open_mock.call_count, 0)
|
|
|
|
|
|
|
|
|
- @patch.object(pwd, "getpwnam")
|
|
|
- @patch.object(grp, "getgrnam")
|
|
|
- @patch.object(sudo, "chown")
|
|
|
- @patch.object(sudo, "chmod")
|
|
|
- @patch.object(sudo, "stat")
|
|
|
- @patch.object(sudo, "create_file")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("pwd.getpwnam")
|
|
|
+ @patch("grp.getgrnam")
|
|
|
+ @patch("resource_management.core.sudo.chown")
|
|
|
+ @patch("resource_management.core.sudo.chmod")
|
|
|
+ @patch("resource_management.core.sudo.stat")
|
|
|
+ @patch("resource_management.core.sudo.create_file")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_ensure_metadata(self, isdir_mock, exists_mock, create_file_mock, stat_mock, chmod_mock, chown_mock, getgrnam_mock,
|
|
|
getpwnam_mock):
|
|
|
"""
|
|
@@ -331,10 +334,10 @@ class TestFileResource(TestCase):
|
|
|
|
|
|
@patch("resource_management.core.providers.system._ensure_metadata")
|
|
|
@patch("resource_management.core.providers.system.FileProvider._get_content")
|
|
|
- @patch.object(sudo, "read_file")
|
|
|
- @patch.object(sudo, "create_file")
|
|
|
- @patch.object(sudo, "path_exists")
|
|
|
- @patch.object(sudo, "path_isdir")
|
|
|
+ @patch("resource_management.core.sudo.read_file")
|
|
|
+ @patch("resource_management.core.sudo.create_file")
|
|
|
+ @patch("resource_management.core.sudo.path_exists")
|
|
|
+ @patch("resource_management.core.sudo.path_isdir")
|
|
|
def test_action_create_encoding(self, isdir_mock, exists_mock, create_file_mock, read_file_mock, get_content_mock ,ensure_mock):
|
|
|
|
|
|
isdir_mock.side_effect = [False, True]
|