def test_ext4(self): # Removed some items from this output as we don't use it in its entirety anyway result = b"""FILE SYSTEM INFORMATION -------------------------------------------- File System Type: Ext4 Volume Name: Example Volume ID: 2697f5b0479b15b1b4c81994387cdba Last Written at: 2017-07-02 12:23:22 (CEST) Last Checked at: 2016-07-09 20:27:28 (CEST) Last Mounted at: 2017-07-02 12:23:23 (CEST) Unmounted properly Last mounted on: / Source OS: Linux BLOCK GROUP INFORMATION --------------------------------------------""" with mock.patch('subprocess.Popen') as mock_popen: type(mock_popen()).stdout = mock.PropertyMock(return_value=io.BytesIO(result)) volume = Volume(disk=Disk(ImageParser(), "...")) volume.get_raw_path = mock.Mock(return_value="...") volume._load_fsstat_data() self.assertEqual(volume.info['statfstype'], 'Ext4') self.assertEqual(volume.info['lastmountpoint'], '/') self.assertEqual(volume.info['label'], '/ (Example)') self.assertEqual(volume.info['version'], 'Linux') # must be called after reading BLOCK GROUP INFORMATION mock_popen().terminate.assert_called()
def test_killed_after_timeout(self): def mock_side_effect(*args, **kwargs): time.sleep(0.2) return io.BytesIO(b"") with mock.patch('subprocess.Popen') as mock_popen: type(mock_popen()).stdout = mock.PropertyMock(side_effect=mock_side_effect) volume = Volume(disk=Disk(ImageParser(), "...")) volume.get_raw_path = mock.Mock(return_value="...") volume._load_fsstat_data(timeout=0.1) mock_popen().terminate.assert_called()
def test_utf8_label(self): # Removed some items from this output as we don't use it in its entirety anyway result = b"""FILE SYSTEM INFORMATION -------------------------------------------- File System Type: Ext4 Volume Name: \xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb8 Volume ID: 2697f5b0479b15b1b4c81994387cdba""" with mock.patch('subprocess.Popen') as mock_popen: type(mock_popen()).stdout = mock.PropertyMock(return_value=io.BytesIO(result)) volume = Volume(disk=Disk(ImageParser(), "...")) volume.get_raw_path = mock.Mock(return_value="...") volume._load_fsstat_data() self.assertEqual(volume.info['statfstype'], 'Ext4') self.assertEqual(volume.info['label'], u'\u0420\u043e\u0441\u0441\u0438\u0438')
def test_ntfs(self): # Removed some items from this output as we don't use it in its entirety anyway result = b"""FILE SYSTEM INFORMATION -------------------------------------------- File System Type: NTFS Volume Serial Number: 4E8742C12A96CECD OEM Name: NTFS Version: Windows XP""" with mock.patch('subprocess.Popen') as mock_popen: type(mock_popen()).stdout = mock.PropertyMock(return_value=io.BytesIO(result)) volume = Volume(disk=Disk(ImageParser(), "...")) volume.get_raw_path = mock.Mock(return_value="...") volume._load_fsstat_data() self.assertEqual(volume.info['statfstype'], 'NTFS') self.assertNotIn("lastmountpoint", volume.info) self.assertNotIn("label", volume.info) self.assertEqual(volume.info['version'], 'Windows XP')
def test_read_bytes_crash(self, mock_open): mock_open().__enter__().read.side_effect = IOError volume = Volume(disk=Disk(ImageParser(), "...")) volume.get_raw_path = mock.Mock(return_value="...") self.assertIsNone(volume._get_magic_type())