def transfer_system_purpose_test(self, path_exists): """Test system purpose transfer method of the subscription token transfer task.""" # simulate syspurpose file existing path_exists.return_value = True with tempfile.TemporaryDirectory() as sysroot: task = TransferSubscriptionTokensTask( sysroot=sysroot, transfer_subscription_tokens=True) task._copy_file = Mock() task._transfer_system_purpose() sysroot_path = util.join_paths( sysroot, TransferSubscriptionTokensTask.RHSM_SYSPURPOSE_FILE_PATH) task._copy_file.assert_called_once_with( TransferSubscriptionTokensTask.RHSM_SYSPURPOSE_FILE_PATH, sysroot_path) # simulate syspurpose file not existing # - this should result in just the copy operation not being attempted path_exists.return_value = False with tempfile.TemporaryDirectory() as sysroot: task = TransferSubscriptionTokensTask( sysroot=sysroot, transfer_subscription_tokens=True) task._copy_file = Mock() task._transfer_system_purpose() task._copy_file.assert_not_called()
def test_copy_file(self): """Test copy file method of the subscription token transfer task.""" with tempfile.TemporaryDirectory() as sysroot: task = TransferSubscriptionTokensTask( sysroot=sysroot, transfer_subscription_tokens=True) # input path does not exist with tempfile.TemporaryDirectory() as tempdir: input_dir = os.path.join(tempdir, "input") output_dir = os.path.join(tempdir, "output") input_file_path = os.path.join(input_dir, "foo.bar") output_file_path = os.path.join(output_dir, "foo.bar") self.assertFalse( task._copy_file(input_file_path, output_file_path)) # input path is a directory with tempfile.TemporaryDirectory() as tempdir: input_dir = os.path.join(tempdir, "input") output_dir = os.path.join(tempdir, "output") os.mkdir(input_dir) self.assertFalse( task._copy_file(input_file_path, output_file_path)) # test file transfer with tempfile.TemporaryDirectory() as tempdir: input_dir = os.path.join(tempdir, "input") output_dir = os.path.join(tempdir, "output/nested/nested") input_file_path = os.path.join(input_dir, "foo.bar") output_file_path = os.path.join(output_dir, "foo.bar") unrelated_file_path = os.path.join(input_dir, "baz.txt") os.mkdir(input_dir) os.mknod(input_file_path) os.mknod(unrelated_file_path) # transfer should succeed self.assertTrue( task._copy_file(input_file_path, output_file_path)) # output file at expected nested path should exist output_file_path = os.path.join(output_dir, "foo.bar") self.assertTrue(os.path.isfile(output_file_path)) # otherwise the directory should be empty self.assertTrue(os.listdir(output_dir), ["foo.bar"])
def test_transfer_file(self): """Test the transfer file method of the subscription token transfer task.""" with tempfile.TemporaryDirectory() as sysroot: task = TransferSubscriptionTokensTask( sysroot=sysroot, transfer_subscription_tokens=True) task._copy_file = Mock() task._copy_file.return_value = True task._transfer_file("/etc/foo.conf", "config for FOO") sysroot_path = util.join_paths(sysroot, "/etc/foo.conf") task._copy_file.assert_called_once_with("/etc/foo.conf", sysroot_path) # simulate the file not existing # - this is a critical error and should raise an exception with tempfile.TemporaryDirectory() as sysroot: task = TransferSubscriptionTokensTask( sysroot=sysroot, transfer_subscription_tokens=True) task._copy_file = Mock() task._copy_file.return_value = False with self.assertRaises(SubscriptionTokenTransferError): task._transfer_file("/etc/foo.conf", "config for FOO")