@@ -80,6 +80,29 @@ async def test_handshake(
80
80
assert transport ._state is TransportState .LOGIN_REQUIRED
81
81
82
82
83
+ async def test_handshake_with_keys (mocker ):
84
+ host = "127.0.0.1"
85
+ mock_aes_device = MockAesDevice (host )
86
+ mocker .patch .object (aiohttp .ClientSession , "post" , side_effect = mock_aes_device .post )
87
+
88
+ test_keys = {
89
+ "private" : "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMo/JQpXIbP2M3bLOKyfEVCURFCxHIXv4HDME8J58AL4BwGDXf0oQycgj9nV+T/MzgEd/4iVysYuYfLuIEKXADP7Lby6AfA/dbcinZZ7bLUNMNa7TaylIvVKtSfR0LV8AmG0jdQYkr4cTzLAEd+AEs/wG3nMQNEcoQRVY+svLPDjAgMBAAECgYBCsDOch0KbvrEVmMklUoY5Fcq4+M249HIDf6d8VwznTbWxsAmL8nzCKCCG6eF4QiYjhCrAdPQaCS1PF2oXywbLhngid/9W9gz4CKKDJChs1X8KvLi+TLg1jgJUXvq9yVNh1CB+lS2ho4gdDDCbVmiVOZR5TDfEf0xeJ+Zz3zlUEQJBAPkhuNdc3yRue8huFZbrWwikURQPYBxLOYfVTDsfV9mZGSkGoWS1FPDsxrqSXugTmcTRuw+lrXKDabJ72kqywA8CQQDP0oaGh5r7F12Xzcwb7X9JkTvyr+rO8YgVtKNBaNVOPabAzysNwOlvH/sNCVQcRj8rn5LNXitgLx6T+Q5uqa3tAkA7J0elUzbkhps7ju/vYri9x448zh3K+g2R9BJio2GPmCuCM0HVEK4FOqNBH4oLXsQPGKFq6LLTUuKg74l4XRL/AkBHBO6r8pNn0yhMxCtIL/UbsuIFoVBgv/F9WWmg5K5gOnlN0n4oCRC8xPUKE3IG54qW4cVNIS05hWCxuJ7R+nJRAkByt/+kX1nQxis2wIXj90fztXG3oSmoVaieYxaXPxlWvX3/Q5kslFF5UsGy9gcK0v2PXhqjTbhud3/X0Er6YP4v" ,
90
+ "public" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKPyUKVyGz9jN2yzisnxFQlERQsRyF7+BwzBPCefAC+AcBg139KEMnII/Z1fk/zM4BHf+IlcrGLmHy7iBClwAz+y28ugHwP3W3Ip2We2y1DTDWu02spSL1SrUn0dC1fAJhtI3UGJK+HE8ywBHfgBLP8Bt5zEDRHKEEVWPrLyzw4wIDAQAB" ,
91
+ }
92
+ transport = AesTransport (
93
+ config = DeviceConfig (
94
+ host , credentials = Credentials ("foo" , "bar" ), aes_keys = test_keys
95
+ )
96
+ )
97
+
98
+ assert transport ._encryption_session is None
99
+ assert transport ._state is TransportState .HANDSHAKE_REQUIRED
100
+
101
+ await transport .perform_handshake ()
102
+ assert transport ._key_pair .get_private_key () == test_keys ["private" ]
103
+ assert transport ._key_pair .get_public_key () == test_keys ["public" ]
104
+
105
+
83
106
@status_parameters
84
107
async def test_login (mocker , status_code , error_code , inner_error_code , expectation ):
85
108
host = "127.0.0.1"
@@ -97,6 +120,7 @@ async def test_login(mocker, status_code, error_code, inner_error_code, expectat
97
120
with expectation :
98
121
await transport .perform_login ()
99
122
assert mock_aes_device .token in str (transport ._token_url )
123
+ assert transport ._config .aes_keys == transport ._key_pair
100
124
101
125
102
126
@pytest .mark .parametrize (
0 commit comments