diff --git a/monkey/tests/unit_tests/monkey_island/cc/conftest.py b/monkey/tests/unit_tests/monkey_island/cc/conftest.py index 4a40765a5..370e0cc4d 100644 --- a/monkey/tests/unit_tests/monkey_island/cc/conftest.py +++ b/monkey/tests/unit_tests/monkey_island/cc/conftest.py @@ -1,3 +1,20 @@ # Without these imports pytests can't use fixtures, # because they are not found +import json +import os + +import pytest from tests.unit_tests.monkey_island.cc.mongomock_fixtures import * # noqa: F401,F403,E402 +from tests.unit_tests.monkey_island.cc.services.utils.test_config_encryption import ( + MONKEY_CONFIGS_DIR_PATH, + STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME, +) + + +@pytest.fixture +def monkey_config(data_for_tests_dir): + plaintext_monkey_config_standard_path = os.path.join( + data_for_tests_dir, MONKEY_CONFIGS_DIR_PATH, STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME + ) + plaintext_config = json.loads(open(plaintext_monkey_config_standard_path, "r").read()) + return plaintext_config diff --git a/monkey/tests/unit_tests/monkey_island/cc/resources/test_configuration_import.py b/monkey/tests/unit_tests/monkey_island/cc/resources/test_configuration_import.py new file mode 100644 index 000000000..1a41b0a51 --- /dev/null +++ b/monkey/tests/unit_tests/monkey_island/cc/resources/test_configuration_import.py @@ -0,0 +1,31 @@ +import json + +import pytest +from tests.unit_tests.monkey_island.cc.services.utils.cyphertexts_for_encryption_test import ( + MALFORMED_CYPHER_TEXT_CORRUPTED, +) +from tests.unit_tests.monkey_island.cc.services.utils.test_config_encryption import PASSWORD + +from common.utils.exceptions import InvalidConfigurationError +from monkey_island.cc.resources.configuration_import import ConfigurationImport +from monkey_island.cc.services.utils.config_encryption import encrypt_config + + +def test_is_config_encrypted__json(monkey_config): + monkey_config = json.dumps(monkey_config) + assert not ConfigurationImport.is_config_encrypted(monkey_config) + + +def test_is_config_encrypted__ciphertext(monkey_config): + encrypted_config = encrypt_config(monkey_config, PASSWORD) + assert ConfigurationImport.is_config_encrypted(encrypted_config) + + +def test_is_config_encrypted__corrupt_ciphertext(): + with pytest.raises(InvalidConfigurationError): + assert ConfigurationImport.is_config_encrypted(MALFORMED_CYPHER_TEXT_CORRUPTED) + + +def test_is_config_encrypted__unknown_format(): + with pytest.raises(InvalidConfigurationError): + assert ConfigurationImport.is_config_encrypted("ABC") diff --git a/monkey/tests/unit_tests/monkey_island/cc/services/utils/cyphertexts_for_encryption_test.py b/monkey/tests/unit_tests/monkey_island/cc/services/utils/cyphertexts_for_encryption_test.py index 532d152bb..e4aa11b06 100644 --- a/monkey/tests/unit_tests/monkey_island/cc/services/utils/cyphertexts_for_encryption_test.py +++ b/monkey/tests/unit_tests/monkey_island/cc/services/utils/cyphertexts_for_encryption_test.py @@ -1,206 +1,74 @@ -MALFORMED_CYPHER_TEXT_TOO_SHORT = ( - b"AES\x02\x00\x00\x1bCREATED_BY\x00pyAesCrypt " - b"6.0.0\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" -) - MALFORMED_CYPHER_TEXT_CORRUPTED = ( - b"AES\x02\x00\x00\x1bCREATED_BY\x00pyAesCrypt " - b"6.0.0\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - b"\x00\x00\x00\x00\x00\xc2\xc3w0\xe5\x06\xd2\xb9\x05b\xce\xb2\xc7" - b"\x18f\x87j|y\xcd\xbd\\(" - b"V\xfa!%\xcc@\x11\x98>\x9c^\x11\xa1\x82\xe9@\x89\xde\xe9\xb2)h\xb2" - b"`\x07y\x01\xa8zr\xd0\xe2\xb9m\xb1&\xb5f\x95\x80\x98\xac\xa6\x04.8" - b"\xf0\xbf\xee\x18!\xf5T\x04a\xb5\xb2Q\xb0|\xff\xe7\xdd)F\xd5E\xa6" - b"\xbf\xf6\xb0D\x02\x92\xb9Z\x01 " - b"F\x9f.9\x92zc\x9bI\xaf\rB6\xcb\r\x1b\xbf\xb8m\xbdBBt5\x9d\xc9\xeb" - b"\x9b\xe0u\xe8'H5\x96\x11\xbf>\xa7\xaa\xb4\x06\x1e\xb7\x99\xf1\x86" - b"\xd1\x81\x8e.\xf5\xdf\xc7Z\x18\xc5\xe9\xfc\\\x135B\xd6!-\x0c\xad" - b"\xc4!\xa5-\x02\x19V\x80\xe1\x98\xe3\x9a\xeb\xb5\xb1^\x94/F\x1c" - b"\x92f\x011\x05\x86\xdb\xdaQ\xa7\xff\x15&\x83\xca\x0b\xbf|k\x0em" - b'"\xf4\xb67\xc0\x8f\xe1\xa0s\x1e\xf0\xec\x98\xd0Zk2\xa4\x85v{' - b"P\xaa\x96\xb3\xa4N\xd0," - b"\xf9\xcbiq\xa7IP\xd9\x1d\x8a\x0fW\xf4\x8fnGc\x9e22!\xf24\xa3:\xbd" - b"\x83\x93\xc5Hq\xcc\xc9\xbd\xef\x9b\xa6f!\xd4p\x8c\x9cN\x0f\xc9d" - b"\xf5o\xa6\x1c\xf8\xed\\/r\x8c\x8d\xa9\x85\xe5\x19]J\x02S\x10\xef" - b"\x1ffg\xaf\x1f\x077}\x81\x9d\xe6\xaa\x99k\xec\x19\xe90\xef\x0b\x93" - b"\x0eZ\x96hq\x1be\\_\\d\x1c\xc9\xcb\xd1\x87E?$\x0f\x93\xf9\xa8Z\x10" - b"\xd4)\xb4j\xa4\x16\xaa'\xda\xd0]Fz\xd7\xff\xff9\xe8\xfd\xa0H\xe3" - b"\x814\xc6t[\x0e\x81\xf4\x12N\xbc\xb9(" - b"SU\xd9^%\xaeQc\xc7\xf8\xcayo9\xb3\xef\x194\xa3\xe2\xfcZ\xf6[" - b'\xd4]2\x1a\xe8u\x92\x19*~\x93b\x13\xed"\xd2\xcaV\x05R.&D\xb0m' - b"\x93rb\x15\xe2=\xfb\xb9\xcc+\x0f\x9c\x1c\xff\xe4\x18a\x85\xe4\xd0s" - b"\xed\xc3H\x88\x07P\xbed\x0c\xf7\x97j\x1d\xf2'\xce&\xbe1A\xca\x0e" - b"\xb3H\x08\x01\xc5\x87F#\xf6TB\xc5\x9f\\\x9ex\x06\xd3\x85&\xdf\x9a" - b"\\X\x1d\x9bm\xe60\xf3;\x06\xa9o7\x99\xa3:\xce\xbb\xba\xe3\xc4\xe5" - b"\xa9\x01\xfbJ\x11tJ\xd4\xc7\xc7\xf1s=8k\xc29c\x8c\xdfdA\xf76\xdd" - b"\xdd\xf8\x16\xf3\x8d\x96gP\xad\xd4\r1\xd3\x1d@\xbb#o\x98\x13\x9d" - b"'\xb2\xb5\x1dl\xe5\x01\xce\x0f\x80\x7f5\x80\x1dp>\xee_\xc2OK\x95" - b"\xd5\x16E\xea\x82\xf5\xa8\x88A\xa2\x1e\x0c\xc8\x05\x81\xda\xfe\xb6" - b"\xe5\x8f\xd8W\xb4\xbeS\xcd\x130\x0c\xa4\xd9\x1d\xf6\x96\xa3\xee" - b"\xb30\xbd " - b"\t\\\xd6\xa1\x8b\x85\x16\xf6dJ4\xd7\x85\x96|3\xae\xab\xb7>\xf8\xf9" - b"\xf7h\x8f\xcc\x9b=B]G\xd5L3g\xbd%\x84\xbe\xf4\x8a\x07\xb3\x863" - b"\xc2uz\x84-\xe436\x14\xbd\xda\xc74.\xdan\x8e\x04VJq\xcdo\x8a\x05" - b"\xe6\xec\x84\xdc\xa9\x84\xb3\xa5T\xa7M\x05\xfc\xc3\x04\xd6p\xb0y" - b"\x83\xc2\xc7i\x9at.\x1dh\x99\xfe}(\x98\xa7){" - b"\xa9\xa6\xa63\xcc'0A\xd9Q\x99-\xd0$)\xbda\xa0\xbf#\x9e\x19\xe5" - b"\xb7q\x89\xda\xbaj\x1b\xe3\x8aW\xb6\xd0\xc5\x819\xfa\x8d\x9a\x14" - b"\xaf\xb1\x08\x97>*\x7f(" - b"\x9c\xd3\x99o3\xbew'/\x14\x9e\x9f#_\xaaDgg\xa6\xc7\xa6}8J\x14\xa8" - b"\xcb\xbf\xdeQ," - b"zHze\xbfe\xdfr|\xbd\x9dd\xfb\xccq\x18\x9dw\x01\xe5JY\x1b\xca\x12" - b"\xaed]\xadi\x7f\x0c`6\xb6X\xbe0\x83b\xc6\xc5>\x1e\xab\xfa\xb7\x0c" - b"\x08\xf6\xa9\xed\x14\xc9(\xf1m\xc6\x90w\xe9\x85\x9d{" - b"\xba\x93x\x00\xf7\x8d\x0f\xa2\xef\xc5\xfexp\xb2\xa9\xf4\xbb\x80" - b"\x13\x8e2bm\xf0U2\x1a\xa7\xa4PK\x11\xc7\xab3\n\xe5(" - b"y\x05\x1a\x07\x0e\x8cO\xee\xc9\x83\x84L\xae\x19\xc1\xab\xbf\xc9" - b'\xae\x8a\xe3\xbb\x19c\x0f0\xa9\xe8\x1e\xfe\xcb\xa3T"p\r\xe8b}Y\x86' - b"\xc0s\x9d\x1bc\xd6\xec\xab6\xd5\xcf\xfaw\x7f\xa8K\xe4Z4Sj\xe8\xda" - b"`\xe9\x8e\xf0M\xee5G\xc6\xb6\xef\x97\r&C\xa60\xcc\xf4\xb8\xd0a\x16" - b"!\xda=\xd4\xb4\x84\xc6\x99\xf4\x9c[" - b"\xda'R\x80\xf1\xa2m\xe0\x14\x1b\xe2\xee\xd6\x81\xf2\x19\xe6\x9aC" - b"\xac6\xb8\xe9\x89\xe9\xb4UM\x027\xc4(" - b"\n\xe3\x8a\x85a\xad7~\xa71\xd1w065a\x87T\xbc\x89v\xca\xe4\x80\x9f" - b"\xe1\x10p\x1c\x14\xc2\x0c-\xd4q\x0e'\xcf[" - b"\xe0\x163Jj\xd1\x03u%B:\xda\xc9\x08*\xf1\x1d,\x80,," - b"I\xcc\x8c\xe9\xb8U{" - b"\xcb\xde\x8b\x1dB\xd9\xa1\xf1\xcfY\x14\x16\x86\xd9\xe4\x8d\xc0\xc5" - b'<^\xce"\n\xdd\xdf\x1cb\xf1M\xb8\x10$\xcf\x04\x1bU*\xe9\x19\x8c\xf7' - b"\xff\xfdl\xaf\x92\x11\xdb{" - b"\x1c\\\r" - b"\x90\x0fva," - b"\xcc\x18j\xab\"4'\xd3\xcfo|yE\xb8\xa1\xc0\x927\xa7\x1dh\xba\xab" - b"|\x8b\xeb\xf2G\xcc\xd2a2al\xa55\xb6\xd5\xc5\xc1\xa6q\t\xca\xf4\xdc" - b"\x9b\x00\x9b\xe2\xa3\xd7\xd4\x19\x88\x05\xb2\x0e\xc8\xf3\x0b>\x18" - b"\xcfd\x05m\x85\nB*\xa2$\xf6I'\xe4\xa2_w1*\xe2z4#\n\xcf\xd9J\xa3" - b'\xf9q\xc4\xc1"\xf9\xbd\xb3J,' - b"J\xd4v+U\x8c\xafG\x86\xae\xce/w\xee\x94x\xb1h7z\xbd\x02\x12\xc6" - b"\x16\xcb\x14\x80(\xab\xfb\x16{" - b"\xb2\xd1\xe9\xd9\xd7\xd9\x9bq`\xdfRB5\x04t\x8d\nq\x1a\r@k\xec\x04" - b"\xb2\x8c\x00\x00\xe4\x86;\xae\xbe\x9b\x0ccp\xdd\xb8~\xb6\x9b1\xf1" - b"'\x12\x99\xab\xcah\xd1i\xa9r\x18\xfc\x93" - b"\x86W{{\x92\xa9(" - b'\xee"C\xa3uG\xc3s\xb8\xc6\xb7\xb9\x17\xf3\xe3n;\x16\x08\x9e,' - b"\xbd\x0f\xbe.\xd9\xc3F\xa0\xfe\x84\x1f\x8a\x97\xc9T\xea\x08_\xc5I" - b"\xf9v\tI\xf0\x0e\xbex\xd9\x9f\xe7Z\xd6\x1a]\xc1\xbb\x97 " - b"\x8a\x8f\x00\x1f\x92.\xc1WC\xd8\xe3\x86\x98PV\xfbWV\xbd\xdf\xd5" - b">1yo\xf1\xabV\xb2\xdf\x97\x82$0\xc8#\xbe\xbb\xe1\xed\x08\x8c@7\xab" - b"~\xdf\x8c\xf9\xbb\x9e\xc6\xa0Q\x85}\xe7\x00|\xe7'\x00{" - b"\xd9v1\xd5\x8a-C," - b"\xa7S\xfc\xc3\x83\xef\xadV\x1b\n\x1b\xb3\x0bK\xa0\xc6\x02i\xf6\x80" - b"\x06F>\x01\x01\xef\xe3\x19\xbf\xb1\xe0S~9\x88\xc5\x9a{" - b"K\x9e8rFp\xa3\xcclX," - b"\xe5\xf1o\x90\xa3\x13\x9c\xf0\xcd\xf3l@\xb60\xde\x19\xcen\x19\x80w" - b"\x0b\xfd\xa8\xafuP\xef-/\x92*\xdd\x93\xdc=9\x90\x0f-\xc4wxa\xc1" - b"\xb7SSe\x0fY\xc3!\xee\x16\xdc\xf8\x93\x03<\x1d?\xec\xce\xcf\xd5" - b"|)\xabu;Y!\xd6M\xcc\xbd\xcc\xec\xa6J\xb7\xbci\x91)\x14h\xec\xc3R" - b"\xb6/\xfcA\xab\x9f\xb8.W\x92\xc4\x8b\xa3D\x91\x8a\xb1\xbc\tJ\xd5" - b"\xb98\xe6c\xcc\xa6'\xb7NK\xf8\xdal\xabd\xc4\xde\xea\xd4~\t\xd9" - b"\xd3\x7f\xb8\xe1J\x8e\xf9X\xe4\xcd\x04\xa0\xc0vp\xe9\xe7\x8e\xd0[" - b"m\xe2\x8dY\x8c\xcd\x81Ny\xac\xbb`\x10ky\x1c\xe3\x9a\x1b\x88G\x1d" - b"\xdc\xc8\xa6\xf7\x1f\xbf\x87\xe9\xac\xfc5/\x8c\xf7k\x85\xb8\xc7d" - b"\x11\xe2\xd8T\x0c\x1a\x85\xc5\x93-\xfe\x85\x87\x03\xb4\x97\x97" - b"~\xb5\xcf|\x05\xf4SE1\xddf?\xae\xe5\xfd\x8c\xf0qu\x92sPz`\xa2\xb6" - b")\xa1\x08A\x18\xb0>\xc4\t\x17|\xac\xccH\x7f\x85\xd2zCK\xf7\xf5" - b'\x12{\x7f_\xc2"\xd6XQ>\x12W1\x06\xbe\xa1\x0f\xf0K\xd9\xaa\x1a\x90' - b"\xee\x90U\xf0\xec$\x1a\xc4\xe07\x92\x1f\xc4\xb5g\xebz\x900\x04\xb6" - b"\xec\xdd\x19iG\xfc=\xef\x0f\xaap\xb4h\xda\xcak\xf9\xc2\xdf%]\xad" - b"\xf5|\x19\xd2\xe46\xb6\x11k#\xf6\xa7t\xc1\xf4\x13B\x08\xeej\xe89" - b"\xbe\xfc\xbds\x19\xcf\xe5'\x84P\xf5\xd5\x88\x18\x1d`k\t%\xb9{" - b'\xa1\xec&\x9f\xee$R"\x81(\xe25V8m\x84\xa3Qb=CZ\x1d\xc6\xc7{' - b'\xc9"\xfcSW\xdb\xce\xd5\x0f%\xff\x85\xbb\xcbS\x83+\x9aA\x1e\xe6uf' - b"\xf9\xa8K\xc3(\xaa/\xe8[" - b"\xa9U|M\x0f\xdb\xea\\\xf5\x06\xbeK\xb67>~\x8a-\x8b\x08\xbc\rV\xbe" - b"\xa4=+|\xc6\xc1A\x02Jv\x8e\x99\x89E\xae\xe8\xac1\xb7a\xd9\xdeN" - b"\x934\xae\r\x91\xe3\x05M\x04\xb0\xb0-S\xdf\xe3A\x99h\x7fJ\xbf\xcfl" - b"\r(s4sj\xe0\x8eD\xc2\xb4\xa3\xb6\x8a\x9f\x0f," - b"\xbeU\xf3\xa0h\xb4\x9b\xf9O\xf20\xdc2\xcf\xd9(" - b">n'dc\xd9\xce3!z_\x16\xe6\xac\x8cg\x80][" - b"n\xe8\xf6\xdb\x92FJ\x19\xd0\xb5\xc4LM\xfb\xaa&\xd9\xfb1\x11l\xb1" - b'\x82\xc0\xe0\xf7\x91\xf8c"\xac\xe0\x11\xcd\x11\xd7\xa5\x82M\xf9' - b"\x13V\x8b\n\xde7\x87\xbd\xb6\xe4\\z\x15#\xbb\xec\xe3\xe9c{" - b"\xd5\xa3\x98\xf5\x0f)\x86W\xf1H\x92DU|I\x0f\x83I\xa9\xe4\x1c\x7f" - b"&>\x84\x08>S+H\xf5\xbc\x1c\xfd8\xb8\x19\xda\x08\xb4\x9a\xf9\xc9" - b"\x16\x0f\xda\x10\x07\xbd\xb7\x14\x92`\\\xbd=\xe2\xec^\xca\x14Q\x9a" - b"\xc4\xdd\xcf\xf8{" - b"D\x03\xb3\xb0\xf9\x8c7\x19\xf1\xe2\x07I\xa8/\xc6\x9b\r\x1f\xb87" - b"\xe8\x99\xff\xaf\xd7\xe2\x91\xbb\x88\xc2\xaem|\xeb0T}\x83\x80\xe9" - b"*D\xb1\xe4\xa5p\xa14\xda\x9d\xeaR\x9f\x0c\xe0\xc5\xb6b\x82\xff\x80" - b"\x86J\xa0\xa6Eg\xd3b\x99X\xc3\xb98\xa2\x18\xb8\xe6\xc3\x01T\x8d" - b"\xf2b\\\xa5\xa2\xc5\x89\x85\x9c\x1a\r.\xcc\xe1x\x9f\xc3\x10\x7fc" - b"\x00'\x10h\x1f\x82\x1e\xcel\xc1\xe3\xe5Rq\x10\xa2=\xe2\x1f\x93\xff\x04\xd8\xd3\x1eL\x8e8W" - b"\xef!\x8e\xdb\x14\x1c\xa1tz\xee\xca\x89dA\xe1\xa9K\x96/\x96\xc9YS" - b"\xcc\x07vM\xaeCi\xfc\xfdA\x01," - b"\xb0\x06J\xb7\xf5\x84\xf7\x1e\xc6\x05\xc5\tw\x9e\xf4\x0bH~.ah\x04" - b"\xce%\xbdK\xc4\xbbM\x82\x0c\xcd\xf4\x99\x9c\xa5^\x97\xfcj\xbe" - b'"_\x01\xec(' - b"\xd4\xb8\xddmF\xe9S\xaa\x92\xdc\xa4a\xee\x02\x84N\xe6\xb1\xc8\x1b" - b"\xb0\xb6\x90#>\xaeKk:\xf6\xef\x10\xe8\x03q\xac\\\x19\x1f\x17r\xc7" - b"\xdf\xce\x8fC\xd8\xb3C\xf8\x99\xb5\x15\x8a\x9b\xdc\xc0\xd1U\xa7.B" - b"\x9c\xb3\xe0G\x90Qf|\x9d\x97v\xfbD\x95B\xf3\xa1\xa6=\x08\xea\xee" - b"\xfd\xa9\xaa:\x80\xeb\x992\xcf\x9ed\x16\xd2\x92\xdaW\xd1\xb4P" - b'\\\x9e\x9d"\xcb\xc3\xf0Q\xeb\x96\x90*\xaf\xe2{' - b"\xf6y\xf6\xc6\x87jM'G\xcb," - b"\x9c\xbb\xcc\xf3\xab\xf4\xd0\xd7\x0c\x98H\n\xbb\xf0\xc2\x16\xe6" - b"\xcd\xd8\xa0\x02@6\xcbg\x1a\xc7\x16\xd4r\x0f\xbb\x04\xad\x1dY\xa0" - b":\x086d\x10V\xd5\x1cbKA\xb0\xbcjd\x9d8\xfc\xbc~\xeb!\xf8\xf0\xf4" - b"\xd2\x06\x9c<\xdcK\xda\xdbi\x1b\xf3\x9d\xdb\x97\xfe\xdfq(" - b"'\xb8\x8b(\x06o\x06\xba\x9a\x1d\xc6U_<9\x820,~\x92Z^\xf1 " - b"\xa0\xa5\xd1\xd4h\xae\x90u\xf5\xe8\x87&\xe9\x94\xec\xa9\xaa\xc7" - b"\x7fW\xd5\x99\x86\xa3\xf5rWa\x9f\xbb]D(" - b"zF\xa9\x04\xa2PZ\\\xe5\xff\xac\xa0\x93xV\x93\x9d\x0e\xe8?\x9d\xa1w" - b":m~\x92a\x98I\xdf\xe8\xf3\xae\xed\xf5\xfd(" - b"rj\xb2\x86\n7@\xe6=\xed\x1b\x91\xe3No\xdf:c\\_\xb4z\xdej\x98\xf4G" - b"\xaeES)\xcb\xbeu\xb7\xec\x00t1W(" - b"J\x85L\xa7\xf8B\x14\xc4w\x99\xbe~\xef\xabp\xf3\x02\xbf!\xd4\xca" - b"\xc1U\x13\xf2\xc0k&\xb3V\xc1Bu:\x1f\x910k&*\x84\\r\x1f0\xdc\xd8" - b"\x05Kg\xc1e\x125[" - b"q\x9b\xe9;Hb\x19S\xfcP\xb3\xa7\x88\xcb)P\x1c\xe1\x06F\xc3\xeb\x08" - b"\xbd" + "QUVTAgAAGM0NKEYTESTURfQlkAcHlBZXNDcnlwdCA2LjAuMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEWlHUF5GTDFdrlGaUbFqGOBHE" + "/zlrkug3ee3t1iMe2ByaoBdb9O8X5bFEBUuiPSFUNe3f4YvgwCMx4Txh3Mzx" + "/LxxNioWSwon9gDw8JckpuMLJtmtdwDybpDtedF33XWBHgEpMlfyF" + "/phin3sVMWGApptTnGbzmP9o0c6toxwmZV5YcHAtoMsWh3WqpsdcmX5PwwrKt0vdYNwpX+bDOxdB7YJizWqYt" + "+505168UPbDFHhJ7lCXJ3lr56" + "/7ZwNF4NasjqehafV01KtuNhNT47wdyavI8EYGZmBhqVCTq79XzwY1OmqEgpaesaiyeJmeZwkf5/8OVYNEhA+ybixHF" + "/RCeBSUnjiTHRF+RyIX8OfY" + "/LTPNmpjbLcZ1fyP5F1VVwlNLeY1MBg3q0tzFy4NsgsvHdWAzeb1wCqAnKZrhCQ36DAaWrzH96tG4ARIFLqg1" + "+99b3Gk27UBGjYSfcTRTUU+tmj+ByfHk3DCVeX35MOFBWu7BCrw99PdlHdhIyGVE4pKgTj" + "+sKvQI60cUNznxk484dkbpKG7gQH7PHaf7xTYd543ByAs9LSIHjV3UBG" + "/h9DzlLlNl8sZgwwnQxE69yoPy4Nr9unbav4dGqXNWFkyTlqZfJ0GzzvhPL2DRRX0V18CuerYEdIv" + "/a7dh8cuy7CVVZ7BEG59INVkpo8XwJIFHJjQzvD+gUWQ4zXB+C15AogGCx" + "/7jWLAdpi36VjA03Avl6rxui55akq3d3gtsn0bSxmrhCgDteNB+x1" + "+r0WzN1gz4qsY8EejbGmgzJMC8l6TZFudU9FCpTy7XSQJlJ70Peg" + "/huVdayRYrzeuHb7j8XMXnyBiab19CUQ5q5u6kiRTl3X1umCK1Wkqk3CItpsbuPlXs7" + "+f3qNhf2ilVtsYKtNEnbY7HGo1e8nziV3ifa1YYNxOTD23A/UGpXHVm0aaXE8ywMFOqXIgjs30oYv5GFQ7L1DT" + "/ktL0a2u4ZFtFZq+6TS52+COU9bkwX+zVvKehiMf+xBINpW0+I1yEUTSr9vvpYmxi1ZY2DLzXm75vWXu5uQA" + "/pciFJiuAhfCn+DJFUHsT0LcMjHcnbtYrX8iqIPZpJMXAzhNNKBiq5pZMCfBvxLr5cOQLADj30TyrEpT+h" + "+YCDx1hVgDnoEeihpQotc3P5gQf50fJ5K236JSszgXPhZVTCc2GO7y9cVmE9OYUEgD3hDOODNN/3t8xXImVDHG" + "+h6TVhi7rKUdap767GQ1b4TUnolx3" + "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" + "+KMo2IbesHjbswZfUpvw" ) diff --git a/monkey/tests/unit_tests/monkey_island/cc/services/utils/test_config_encryption.py b/monkey/tests/unit_tests/monkey_island/cc/services/utils/test_config_encryption.py index de80db203..59d189ffa 100644 --- a/monkey/tests/unit_tests/monkey_island/cc/services/utils/test_config_encryption.py +++ b/monkey/tests/unit_tests/monkey_island/cc/services/utils/test_config_encryption.py @@ -1,14 +1,13 @@ -import json -import os - import pytest from tests.unit_tests.monkey_island.cc.services.utils.cyphertexts_for_encryption_test import ( MALFORMED_CYPHER_TEXT_CORRUPTED, - MALFORMED_CYPHER_TEXT_TOO_SHORT, ) -from common.utils.exceptions import InvalidCredentialsError, NoCredentialsError -from monkey_island.cc.services.utils.config_encryption import decrypt_config, encrypt_config +from monkey_island.cc.services.utils.config_encryption import ( + InvalidCredentialsError, + decrypt_config, + encrypt_config, +) MONKEY_CONFIGS_DIR_PATH = "monkey_configs" STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME = "monkey_config_standard.json" @@ -16,37 +15,23 @@ PASSWORD = "hello123" INCORRECT_PASSWORD = "goodbye321" -@pytest.fixture -def plaintext_config(data_for_tests_dir): - plaintext_monkey_config_standard_path = os.path.join( - data_for_tests_dir, MONKEY_CONFIGS_DIR_PATH, STANDARD_PLAINTEXT_MONKEY_CONFIG_FILENAME - ) - plaintext_config = json.loads(open(plaintext_monkey_config_standard_path, "r").read()) - return plaintext_config +def test_encrypt_decrypt_config(monkey_config): + encrypted_config = encrypt_config(monkey_config, PASSWORD) + assert decrypt_config(encrypted_config, PASSWORD) == monkey_config -def test_encrypt_decrypt_config(plaintext_config): - encrypted_config = encrypt_config(plaintext_config, PASSWORD) - assert decrypt_config(encrypted_config, PASSWORD) == plaintext_config - - -def test_encrypt_decrypt_config__wrong_password(plaintext_config): - encrypted_config = encrypt_config(plaintext_config, PASSWORD) +def test_encrypt_decrypt_config__wrong_password(monkey_config): + encrypted_config = encrypt_config(monkey_config, PASSWORD) with pytest.raises(InvalidCredentialsError): decrypt_config(encrypted_config, INCORRECT_PASSWORD) -def test_encrypt_decrypt_config__malformed_too_short(): - with pytest.raises(ValueError): - decrypt_config(MALFORMED_CYPHER_TEXT_TOO_SHORT, PASSWORD) - - def test_encrypt_decrypt_config__malformed_corrupted(): with pytest.raises(ValueError): decrypt_config(MALFORMED_CYPHER_TEXT_CORRUPTED, PASSWORD) -def test_encrypt_decrypt_config__decrypt_no_password(plaintext_config): - encrypted_config = encrypt_config(plaintext_config, PASSWORD) - with pytest.raises(NoCredentialsError): +def test_encrypt_decrypt_config__decrypt_no_password(monkey_config): + encrypted_config = encrypt_config(monkey_config, PASSWORD) + with pytest.raises(InvalidCredentialsError): decrypt_config(encrypted_config, "")