diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..49f7e027 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,22 @@ +- repo: git://github.com/pre-commit/pre-commit-hooks + sha: 7539d8bd1a00a3c1bfd34cdb606d3a6372e83469 + hooks: + - id: check-added-large-files + - id: check-case-conflict + - id: check-merge-conflict + - id: check-symlinks + - id: check-yaml + - id: double-quote-string-fixer + - id: end-of-file-fixer + - id: name-tests-test + - id: trailing-whitespace +- repo: git://github.com/pre-commit/mirrors-yapf + sha: v0.11.1 + hooks: + - id: yapf +- repo: git://github.com/FalconSocial/pre-commit-python-sorter + sha: 1.0.4 + hooks: + - id: python-import-sorter + args: + - --silent-overwrite diff --git a/telethon_tests/crypto_tests.py b/telethon_tests/crypto_test.py similarity index 87% rename from telethon_tests/crypto_tests.py rename to telethon_tests/crypto_test.py index 3f0f0bff..5feb7661 100644 --- a/telethon_tests/crypto_tests.py +++ b/telethon_tests/crypto_test.py @@ -1,8 +1,7 @@ import unittest -from telethon.crypto import AES import telethon.helpers as utils -from telethon.crypto import Factorizator +from telethon.crypto import AES, Factorizator class CryptoTests(unittest.TestCase): @@ -38,14 +37,16 @@ class CryptoTests(unittest.TestCase): .format(value[:take], self.cipher_text[:take])) value = AES.encrypt_ige(self.plain_text_padded, self.key, self.iv) - assert value == self.cipher_text_padded, ('Ciphered text ("{}") does not equal expected ("{}")' - .format(value, self.cipher_text_padded)) + assert value == self.cipher_text_padded, ( + 'Ciphered text ("{}") does not equal expected ("{}")' + .format(value, self.cipher_text_padded)) def test_aes_decrypt(self): # The ciphered text must always be padded value = AES.decrypt_ige(self.cipher_text_padded, self.key, self.iv) - assert value == self.plain_text_padded, ('Decrypted text ("{}") does not equal expected ("{}")' - .format(value, self.plain_text_padded)) + assert value == self.plain_text_padded, ( + 'Decrypted text ("{}") does not equal expected ("{}")' + .format(value, self.plain_text_padded)) @staticmethod def test_calc_key(): @@ -69,8 +70,10 @@ class CryptoTests(unittest.TestCase): expected_key = b"\xaf\xe3\x84Qm\xe0!\x0c\xd91\xe4\x9a\xa0v_gcx\xa1\xb0\xc9\xbc\x16'v\xcf,\x9dM\xae\xc6\xa5" expected_iv = b'\xb8Q\xf3\xc5\xa3]\xc6\xdf\x9e\xe0Q\xbd"\x8d\x13\t\x0e\x9a\x9d^8\xa2\xf8\xe7\x00w\xd9\xc1\xa7\xa0\xf7\x0f' - assert key == expected_key, 'Invalid key (expected ("{}"), got ("{}"))'.format(expected_key, key) - assert iv == expected_iv, 'Invalid IV (expected ("{}"), got ("{}"))'.format(expected_iv, iv) + assert key == expected_key, 'Invalid key (expected ("{}"), got ("{}"))'.format( + expected_key, key) + assert iv == expected_iv, 'Invalid IV (expected ("{}"), got ("{}"))'.format( + expected_iv, iv) # Calculate key being the server msg_key = b'\x86m\x92i\xcf\x8b\x93\xaa\x86K\x1fi\xd04\x83]' @@ -79,14 +82,17 @@ class CryptoTests(unittest.TestCase): expected_key = b'\xdd0X\xb6\x93\x8e\xc9y\xef\x83\xf8\x8cj\xa7h\x03\xe2\xc6\xb16\xc5\xbb\xfc\xe7\xdf\xd6\xb1g\xf7u\xcfk' expected_iv = b'\xdcL\xc2\x18\x01J"X\x86lb\xb6\xb547\xfd\xe2a4\xb6\xaf}FS\xd7[\xe0N\r\x19\xfb\xbc' - assert key == expected_key, 'Invalid key (expected ("{}"), got ("{}"))'.format(expected_key, key) - assert iv == expected_iv, 'Invalid IV (expected ("{}"), got ("{}"))'.format(expected_iv, iv) + assert key == expected_key, 'Invalid key (expected ("{}"), got ("{}"))'.format( + expected_key, key) + assert iv == expected_iv, 'Invalid IV (expected ("{}"), got ("{}"))'.format( + expected_iv, iv) @staticmethod def test_calc_msg_key(): value = utils.calc_msg_key(b'Some random message') expected = b'\xdfAa\xfc\x10\xab\x89\xd2\xfe\x19C\xf1\xdd~\xbf\x81' - assert value == expected, 'Value ("{}") does not equal expected ("{}")'.format(value, expected) + assert value == expected, 'Value ("{}") does not equal expected ("{}")'.format( + value, expected) @staticmethod def test_generate_key_data_from_nonces(): @@ -97,8 +103,10 @@ class CryptoTests(unittest.TestCase): expected_key = b'?\xc4\xbd\xdf\rWU\x8a\xf5\x0f+V\xdc\x96up\x1d\xeeG\x00\x81|\x1eg\x8a\x8f{\xf0y\x80\xda\xde' expected_iv = b'Q\x9dpZ\xb7\xdd\xcb\x82_\xfa\xf4\x90\xecn\x10\x9cD\xd2\x01\x8d\x83\xa0\xa4^\xb8\x91,\x7fI am' - assert key == expected_key, 'Key ("{}") does not equal expected ("{}")'.format(key, expected_key) - assert iv == expected_iv, 'Key ("{}") does not equal expected ("{}")'.format(key, expected_iv) + assert key == expected_key, 'Key ("{}") does not equal expected ("{}")'.format( + key, expected_key) + assert iv == expected_iv, 'Key ("{}") does not equal expected ("{}")'.format( + key, expected_iv) @staticmethod def test_factorizator(): diff --git a/telethon_tests/network_tests.py b/telethon_tests/network_test.py similarity index 87% rename from telethon_tests/network_tests.py rename to telethon_tests/network_test.py index 71ed37b3..4abf3b9b 100644 --- a/telethon_tests/network_tests.py +++ b/telethon_tests/network_test.py @@ -3,8 +3,8 @@ import socket import threading import unittest -from telethon.network import TcpTransport, TcpClient import telethon.network.authenticator as authenticator +from telethon.network import TcpClient, TcpTransport def run_server_echo_thread(port): @@ -31,7 +31,8 @@ class NetworkTests(unittest.TestCase): client = TcpClient() client.connect('localhost', port) client.write(msg) - assert msg == client.read(16), 'Read message does not equal sent message' + assert msg == client.read( + 16), 'Read message does not equal sent message' client.close() @staticmethod diff --git a/telethon_tests/parser_tests.py b/telethon_tests/parser_test.py similarity index 100% rename from telethon_tests/parser_tests.py rename to telethon_tests/parser_test.py diff --git a/telethon_tests/tl_tests.py b/telethon_tests/tl_test.py similarity index 100% rename from telethon_tests/tl_tests.py rename to telethon_tests/tl_test.py diff --git a/telethon_tests/utils_tests.py b/telethon_tests/utils_test.py similarity index 79% rename from telethon_tests/utils_tests.py rename to telethon_tests/utils_test.py index 77aac3dd..3721fe56 100644 --- a/telethon_tests/utils_tests.py +++ b/telethon_tests/utils_test.py @@ -14,7 +14,7 @@ class UtilsTests(unittest.TestCase): writer.write_float(17.0) writer.write_double(25.0) writer.write(bytes([26, 27, 28, 29, 30, 31, 32])) - writer.write_large_int(2 ** 127, 128, signed=False) + writer.write_large_int(2**127, 128, signed=False) data = writer.get_bytes() expected = b'\x01\x05\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88A\x00\x00\x00\x00\x00\x00' \ @@ -24,26 +24,32 @@ class UtilsTests(unittest.TestCase): with BinaryReader(data) as reader: value = reader.read_byte() - assert value == 1, 'Example byte should be 1 but is {}'.format(value) + assert value == 1, 'Example byte should be 1 but is {}'.format( + value) value = reader.read_int() - assert value == 5, 'Example integer should be 5 but is {}'.format(value) + assert value == 5, 'Example integer should be 5 but is {}'.format( + value) value = reader.read_long() - assert value == 13, 'Example long integer should be 13 but is {}'.format(value) + assert value == 13, 'Example long integer should be 13 but is {}'.format( + value) value = reader.read_float() - assert value == 17.0, 'Example float should be 17.0 but is {}'.format(value) + assert value == 17.0, 'Example float should be 17.0 but is {}'.format( + value) value = reader.read_double() - assert value == 25.0, 'Example double should be 25.0 but is {}'.format(value) + assert value == 25.0, 'Example double should be 25.0 but is {}'.format( + value) value = reader.read(7) assert value == bytes([26, 27, 28, 29, 30, 31, 32]), 'Example bytes should be {} but is {}' \ .format(bytes([26, 27, 28, 29, 30, 31, 32]), value) value = reader.read_large_int(128, signed=False) - assert value == 2 ** 127, 'Example large integer should be {} but is {}'.format(2 ** 127, value) + assert value == 2**127, 'Example large integer should be {} but is {}'.format( + 2**127, value) # Test Telegram that types are written right with BinaryWriter() as writer: @@ -51,12 +57,14 @@ class UtilsTests(unittest.TestCase): buffer = writer.get_bytes() valid = b'\x78\x97\x46\x60' # Tested written bytes using C#'s MemoryStream - assert buffer == valid, "Written type should be {} but is {}".format(list(valid), list(buffer)) + assert buffer == valid, 'Written type should be {} but is {}'.format( + list(valid), list(buffer)) @staticmethod def test_binary_tgwriter_tgreader(): small_data = os.urandom(33) - small_data_padded = os.urandom(19) # +1 byte for length = 20 (evenly divisible by 4) + small_data_padded = os.urandom( + 19) # +1 byte for length = 20 (evenly divisible by 4) large_data = os.urandom(999) large_data_padded = os.urandom(1024) @@ -74,7 +82,9 @@ class UtilsTests(unittest.TestCase): # And then try reading it without errors (it should be unharmed!) for datum in data: value = reader.tgread_bytes() - assert value == datum, 'Example bytes should be {} but is {}'.format(datum, value) + assert value == datum, 'Example bytes should be {} but is {}'.format( + datum, value) value = reader.tgread_string() - assert value == string, 'Example string should be {} but is {}'.format(string, value) + assert value == string, 'Example string should be {} but is {}'.format( + string, value)