mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-17 00:07:37 +02:00
197 lines
6.0 KiB
Python
197 lines
6.0 KiB
Python
![]() |
import json
|
||
|
import re
|
||
|
import unittest
|
||
|
|
||
|
from jc.parsers.veracrypt import (
|
||
|
_volume_line_pattern,
|
||
|
_volume_verbose_pattern,
|
||
|
_parse_volume,
|
||
|
Volume,
|
||
|
parse,
|
||
|
)
|
||
|
|
||
|
|
||
|
class VeracryptTests(unittest.TestCase):
|
||
|
def test_veracrypt_nodata(self):
|
||
|
"""
|
||
|
Test 'veracrypt' with no data
|
||
|
"""
|
||
|
|
||
|
output=''
|
||
|
self.assertEqual(parse(output, quiet=True), [])
|
||
|
|
||
|
def test_veracrypt_invalid_call(self):
|
||
|
"""
|
||
|
Test 'veracrypt' with output from invalid call
|
||
|
"""
|
||
|
|
||
|
output='Invalid command: foo'
|
||
|
self.assertEqual(parse(output, quiet=True), [])
|
||
|
|
||
|
def test_veracrypt_no_mounted_volumes(self):
|
||
|
"""
|
||
|
Test 'veracrypt' with no mounted volumes
|
||
|
"""
|
||
|
|
||
|
output='Error: No volumes mounted.'
|
||
|
self.assertEqual(parse(output, quiet=True), [])
|
||
|
|
||
|
def test_veracrypt_list_volumes(self):
|
||
|
"""
|
||
|
Test 'veracrypt' list volumes
|
||
|
"""
|
||
|
|
||
|
output = "1: /dev/sdb1 /dev/mapper/veracrypt1 /home/bob/mount/encrypt/sdb1\n"
|
||
|
output += "2: /dev/sdb2 /dev/mapper/veracrypt2 /home/bob/mount/encrypt/sdb2"
|
||
|
|
||
|
actual = parse(output, quiet=True)
|
||
|
|
||
|
self.assertIsNotNone(actual)
|
||
|
self.assertIsNotNone(actual[0])
|
||
|
self.assertIsNotNone(actual[1])
|
||
|
|
||
|
expected = [
|
||
|
{
|
||
|
"slot": 1,
|
||
|
"path": "/dev/sdb1",
|
||
|
"device": "/dev/mapper/veracrypt1",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb1"
|
||
|
},
|
||
|
{
|
||
|
"slot": 2,
|
||
|
"path": "/dev/sdb2",
|
||
|
"device": "/dev/mapper/veracrypt2",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb2"
|
||
|
}
|
||
|
]
|
||
|
|
||
|
if actual:
|
||
|
for k, v in expected[0].items():
|
||
|
self.assertEqual(v, actual[0][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
for k, v in expected[1].items():
|
||
|
self.assertEqual(v, actual[1][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
def test_veracrypt_verbose_list_volumes(self):
|
||
|
"""
|
||
|
Test 'veracrypt' list volumes in verbose mode
|
||
|
"""
|
||
|
|
||
|
with open("tests/fixtures/generic/veracrypt_verbose_list_volumes.out", "r") as f:
|
||
|
output = f.read()
|
||
|
|
||
|
actual = parse(output, quiet=True)
|
||
|
|
||
|
self.assertIsNotNone(actual)
|
||
|
self.assertIsNotNone(actual[0])
|
||
|
self.assertIsNotNone(actual[1])
|
||
|
|
||
|
expected = [
|
||
|
{
|
||
|
"slot": 1,
|
||
|
"path": "/dev/sdb1",
|
||
|
"device": "/dev/mapper/veracrypt1",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb1",
|
||
|
"size": "498 MiB",
|
||
|
"type": "Normal",
|
||
|
"readonly": "No",
|
||
|
"hidden_protected": "No",
|
||
|
"encryption_algo": "AES",
|
||
|
"pk_size": "256 bits",
|
||
|
"sk_size": "256 bits",
|
||
|
"block_size": "128 bits",
|
||
|
"mode": "XTS",
|
||
|
"prf": "HMAC-SHA-512",
|
||
|
"format_version": 2,
|
||
|
"backup_header": "Yes"
|
||
|
},
|
||
|
{
|
||
|
"slot": 2,
|
||
|
"path": "/dev/sdb2",
|
||
|
"device": "/dev/mapper/veracrypt2",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb2",
|
||
|
"size": "522 MiB",
|
||
|
"type": "Normal",
|
||
|
"readonly": "No",
|
||
|
"hidden_protected": "No",
|
||
|
"encryption_algo": "AES",
|
||
|
"pk_size": "256 bits",
|
||
|
"sk_size": "256 bits",
|
||
|
"block_size": "128 bits",
|
||
|
"mode": "XTS",
|
||
|
"prf": "HMAC-SHA-512",
|
||
|
"format_version": 2,
|
||
|
"backup_header": "Yes"
|
||
|
}
|
||
|
]
|
||
|
|
||
|
if actual:
|
||
|
for k, v in expected[0].items():
|
||
|
self.assertEqual(v, actual[0][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
for k, v in expected[1].items():
|
||
|
self.assertEqual(v, actual[1][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
def test_veracrypt_verbose_list_volumes_unknown_fields(self):
|
||
|
"""
|
||
|
Test 'veracrypt' list volumes with unknown fields in verbose mode
|
||
|
"""
|
||
|
|
||
|
with open("tests/fixtures/generic/veracrypt_verbose_list_volumes_unknown_fields.out", "r") as f:
|
||
|
output = f.read()
|
||
|
|
||
|
actual = parse(output, quiet=True)
|
||
|
|
||
|
self.assertIsNotNone(actual)
|
||
|
self.assertIsNotNone(actual[0])
|
||
|
self.assertIsNotNone(actual[1])
|
||
|
|
||
|
expected = [
|
||
|
{
|
||
|
"slot": 1,
|
||
|
"path": "/dev/sdb1",
|
||
|
"device": "/dev/mapper/veracrypt1",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb1",
|
||
|
"size": "498 MiB",
|
||
|
"type": "Normal",
|
||
|
"readonly": "No",
|
||
|
"hidden_protected": "No",
|
||
|
"encryption_algo": "AES",
|
||
|
"pk_size": "256 bits",
|
||
|
"sk_size": "256 bits",
|
||
|
"block_size": "128 bits",
|
||
|
"mode": "XTS",
|
||
|
"prf": "HMAC-SHA-512",
|
||
|
"format_version": 2,
|
||
|
"backup_header": "Yes"
|
||
|
},
|
||
|
{
|
||
|
"slot": 2,
|
||
|
"path": "/dev/sdb2",
|
||
|
"device": "/dev/mapper/veracrypt2",
|
||
|
"mountpoint": "/home/bob/mount/encrypt/sdb2",
|
||
|
"size": "522 MiB",
|
||
|
"type": "Normal",
|
||
|
"readonly": "No",
|
||
|
"hidden_protected": "No",
|
||
|
"encryption_algo": "AES",
|
||
|
"pk_size": "256 bits",
|
||
|
"sk_size": "256 bits",
|
||
|
"block_size": "128 bits",
|
||
|
"mode": "XTS",
|
||
|
"prf": "HMAC-SHA-512",
|
||
|
"format_version": 2,
|
||
|
"backup_header": "Yes"
|
||
|
}
|
||
|
]
|
||
|
|
||
|
if actual:
|
||
|
for k, v in expected[0].items():
|
||
|
self.assertEqual(v, actual[0][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
for k, v in expected[1].items():
|
||
|
self.assertEqual(v, actual[1][k], f"Volume regex failed on {k}")
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|