1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tests for the encrypted stream file entry implementation."""
from __future__ import unicode_literals
import unittest
from dfvfs.lib import definitions
from dfvfs.path import encrypted_stream_path_spec
from dfvfs.path import os_path_spec
from dfvfs.resolver import context
from dfvfs.resolver import resolver
from dfvfs.vfs import encrypted_stream_file_entry
from dfvfs.vfs import encrypted_stream_file_system
from tests import test_lib as shared_test_lib
@shared_test_lib.skipUnlessHasTestFile(['syslog.rc4'])
class EncryptedStreamFileEntryTest(shared_test_lib.BaseTestCase):
"""Tests for the encrypted stream file entry."""
_RC4_KEY = b'rc4test'
def setUp(self):
"""Sets up the needed objects used throughout the test."""
self._resolver_context = context.Context()
test_file = self._GetTestFilePath(['syslog.rc4'])
path_spec = os_path_spec.OSPathSpec(location=test_file)
self._encrypted_stream_path_spec = (
encrypted_stream_path_spec.EncryptedStreamPathSpec(
encryption_method=definitions.ENCRYPTION_METHOD_RC4,
parent=path_spec))
resolver.Resolver.key_chain.SetCredential(
self._encrypted_stream_path_spec, 'key', self._RC4_KEY)
self._file_system = (
encrypted_stream_file_system.EncryptedStreamFileSystem(
self._resolver_context))
self._file_system.Open(self._encrypted_stream_path_spec)
def tearDown(self):
"""Cleans up the needed objects used throughout the test."""
self._file_system.Close()
def testInitialize(self):
"""Test the __init__ function."""
file_entry = encrypted_stream_file_entry.EncryptedStreamFileEntry(
self._resolver_context, self._file_system,
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
def testGetFileEntryByPathSpec(self):
"""Test the get a file entry by path specification functionality."""
file_entry = self._file_system.GetFileEntryByPathSpec(
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
def testGetParentFileEntry(self):
"""Tests the GetParentFileEntry function."""
file_entry = self._file_system.GetFileEntryByPathSpec(
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
parent_file_entry = file_entry.GetParentFileEntry()
self.assertIsNone(parent_file_entry)
def testGetStat(self):
"""Tests the GetStat function."""
file_entry = self._file_system.GetFileEntryByPathSpec(
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
stat_object = file_entry.GetStat()
self.assertIsNotNone(stat_object)
self.assertEqual(stat_object.type, stat_object.TYPE_FILE)
self.assertEqual(stat_object.size, 1247)
def testIsFunctions(self):
"""Test the Is? functions."""
file_entry = self._file_system.GetFileEntryByPathSpec(
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
self.assertTrue(file_entry.IsRoot())
self.assertTrue(file_entry.IsVirtual())
self.assertTrue(file_entry.IsAllocated())
self.assertFalse(file_entry.IsDevice())
self.assertFalse(file_entry.IsDirectory())
self.assertTrue(file_entry.IsFile())
self.assertFalse(file_entry.IsLink())
self.assertFalse(file_entry.IsPipe())
self.assertFalse(file_entry.IsSocket())
def testSubFileEntries(self):
"""Test the sub file entries iteration functionality."""
file_entry = self._file_system.GetFileEntryByPathSpec(
self._encrypted_stream_path_spec)
self.assertIsNotNone(file_entry)
self.assertEqual(file_entry.number_of_sub_file_entries, 0)
expected_sub_file_entry_names = []
sub_file_entry_names = []
for sub_file_entry in file_entry.sub_file_entries:
sub_file_entry_names.append(sub_file_entry.name)
self.assertEqual(
len(sub_file_entry_names), len(expected_sub_file_entry_names))
self.assertEqual(
sorted(sub_file_entry_names), expected_sub_file_entry_names)
if __name__ == '__main__':
unittest.main()
|