summaryrefslogtreecommitdiff
path: root/tests/img_info.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/img_info.py')
-rw-r--r--tests/img_info.py191
1 files changed, 191 insertions, 0 deletions
diff --git a/tests/img_info.py b/tests/img_info.py
new file mode 100644
index 0000000..7eee699
--- /dev/null
+++ b/tests/img_info.py
@@ -0,0 +1,191 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""Tests for Img_Info."""
+
+import os
+import unittest
+
+import pytsk3
+
+import test_lib
+
+
+class TSKImgInfoTestCase(unittest.TestCase):
+ """Img_Info test case."""
+
+ def _testInitialize(self, img_info):
+ """Test the initialize functionality.
+
+ Args:
+ img_info: the Img_Info object.
+ """
+ self.assertNotEquals(img_info, None)
+
+ def _testGetSize(self, img_info):
+ """Test the get size functionality.
+
+ Args:
+ img_info: the Img_Info object.
+ """
+ self.assertNotEquals(img_info, None)
+
+ self.assertEquals(img_info.get_size(), self._file_size)
+
+ def _testRead(self, img_info):
+ """Test the read functionality.
+
+ Args:
+ img_info: the Img_Info object.
+ """
+ self.assertNotEquals(img_info, None)
+
+ self.assertEquals(img_info.read(0x5800, 16), b'place,user,passw')
+ self.assertEquals(img_info.read(0x7c00, 16), b'This is another ')
+
+ # Conforming to the POSIX seek the offset can exceed the file size
+ # but reading will result in no data being returned.
+ self.assertEquals(img_info.read(0x19000, 16), b'')
+
+ with self.assertRaises(IOError):
+ img_info.read(-1, 16)
+
+
+class TSKImgInfoTest(TSKImgInfoTestCase):
+ """The unit test for the Img_Info object."""
+
+ def setUp(self):
+ """Sets up the needed objects used throughout the test."""
+ self._test_file = os.path.join('test_data', 'image.raw')
+ self._file_size = 102400
+
+ def testInitialize(self):
+ """Test the initialize functionality."""
+ img_info = pytsk3.Img_Info(url=self._test_file)
+ self._testInitialize(img_info)
+ img_info.close()
+
+ def testGetSize(self):
+ """Test the get size functionality."""
+ img_info = pytsk3.Img_Info(url=self._test_file)
+ self._testGetSize(img_info)
+ img_info.close()
+
+ def testRead(self):
+ """Test the read functionality."""
+ img_info = pytsk3.Img_Info(url=self._test_file)
+
+ self.assertNotEquals(img_info, None)
+
+ self.assertEquals(img_info.read(0x5800, 16), b'place,user,passw')
+ self.assertEquals(img_info.read(0x7c00, 16), b'This is another ')
+
+ # Conforming to the POSIX seek the offset can exceed the file size
+ # but reading will result in no data being returned. Note that the SleuthKit
+ # does not conform to the posix standard and will raise and IO error.
+ with self.assertRaises(IOError):
+ img_info.read(0x19000, 16)
+
+ with self.assertRaises(IOError):
+ img_info.read(-1, 16)
+
+ img_info.close()
+
+
+class TSKImgInfoFileObjectTest(TSKImgInfoTestCase):
+ """The unit test for the Img_Info object using a file-like object."""
+
+ def setUp(self):
+ """Sets up the needed objects used throughout the test."""
+ test_file = os.path.join('test_data', 'image.raw')
+ self._file_object = open(test_file, 'rb')
+
+ stat_info = os.stat(test_file)
+ self._file_size = stat_info.st_size
+
+ def testInitialize(self):
+ """Test the initialize functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testInitialize(img_info)
+ img_info.close()
+
+ def testGetSize(self):
+ """Test the get size functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testGetSize(img_info)
+ img_info.close()
+
+ def testRead(self):
+ """Test the read functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testRead(img_info)
+ img_info.close()
+
+
+class TSKImgInfoFileObjectWithDetectTest(TSKImgInfoTestCase):
+ """The unit test for the Img_Info object using a file-like object
+ with image type: pytsk3.TSK_IMG_TYPE_DETECT."""
+
+ def setUp(self):
+ """Sets up the needed objects used throughout the test."""
+ test_file = os.path.join('test_data', 'image.raw')
+ self._file_object = open(test_file, 'rb')
+
+ stat_info = os.stat(test_file)
+ self._file_size = stat_info.st_size
+
+ def testInitialize(self):
+ """Test the initialize functionality."""
+ img_info = test_lib.FileObjectImageInfo(
+ self._file_object, self._file_size,
+ image_type=pytsk3.TSK_IMG_TYPE_DETECT)
+ self._testInitialize(img_info)
+ img_info.close()
+
+ def testGetSize(self):
+ """Test the get size functionality."""
+ img_info = test_lib.FileObjectImageInfo(
+ self._file_object, self._file_size,
+ image_type=pytsk3.TSK_IMG_TYPE_DETECT)
+ self._testGetSize(img_info)
+ img_info.close()
+
+ def testRead(self):
+ """Test the read functionality."""
+ img_info = test_lib.FileObjectImageInfo(
+ self._file_object, self._file_size,
+ image_type=pytsk3.TSK_IMG_TYPE_DETECT)
+ self._testRead(img_info)
+ img_info.close()
+
+
+class TSKImgInfoFileObjectLargeSizeTest(TSKImgInfoTestCase):
+ """The unit test for the Img_Info object using a file-like object
+ with a large size."""
+
+ def setUp(self):
+ """Sets up the needed objects used throughout the test."""
+ test_file = os.path.join('test_data', 'image.raw')
+ self._file_object = open(test_file, 'rb')
+ self._file_size = 1024 * 1024 * 1024 * 1024
+
+ def testInitialize(self):
+ """Test the initialize functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testInitialize(img_info)
+ img_info.close()
+
+ def testGetSize(self):
+ """Test the get size functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testGetSize(img_info)
+ img_info.close()
+
+ def testRead(self):
+ """Test the read functionality."""
+ img_info = test_lib.FileObjectImageInfo(self._file_object, self._file_size)
+ self._testRead(img_info)
+ img_info.close()
+
+
+if __name__ == '__main__':
+ unittest.main()