EnvelopeCodec message layer; scripts are thin business-API wrappers
This commit is contained in:
1 parent
f15ae42db7
commit
363c7cc6a2
14 files changed
+551
-900
No files matched your search
@@ -258,3 +258,35 @@ class TestLiveCaptures(unittest.TestCase):
|
||||
split_wire(b'{"cmdType":1101')
|
||||
with self.assertRaises(ValueError):
|
||||
decrypt_wire(b"not json at all")
|
||||
|
||||
|
||||
class TestEnvelopeCodec(unittest.TestCase):
|
||||
def test_for_serial_roundtrip(self):
|
||||
from franklinwh_agate_client.protocol.messages import EnvelopeCodec
|
||||
codec = EnvelopeCodec.for_serial(SN)
|
||||
self.assertEqual(codec.key, generate_secret_key(SN))
|
||||
env = direct_connect_request(CommunicationCmd.BMS, SN,
|
||||
data={"id": 1})
|
||||
wire = codec.encode(env)
|
||||
back = codec.decode(wire)
|
||||
self.assertEqual(back.to_dict(), env.to_dict())
|
||||
|
||||
def test_decode_fixtures(self):
|
||||
from franklinwh_agate_client.protocol.messages import EnvelopeCodec
|
||||
disc = open(os.path.join(FIXTURES, "discovery_req.bin"),
|
||||
"rb").read()
|
||||
info = open(os.path.join(FIXTURES, "device_info_reply.bin"),
|
||||
"rb").read()
|
||||
self.assertEqual(
|
||||
EnvelopeCodec.for_serial("").decode(disc).cmd_type, 1101)
|
||||
reply = EnvelopeCodec.for_serial(SN).decode(info)
|
||||
self.assertEqual(reply.cmd_type, 1102)
|
||||
self.assertEqual(reply.to_dict()["dataArea"]["FHP_NUM"], 2)
|
||||
|
||||
def test_try_decode_none(self):
|
||||
from franklinwh_agate_client.protocol.messages import EnvelopeCodec
|
||||
codec = EnvelopeCodec.for_serial(SN)
|
||||
self.assertIsNone(codec.try_decode(b""))
|
||||
self.assertIsNone(codec.try_decode(b"not,a wire"))
|
||||
with self.assertRaises(ValueError):
|
||||
codec.decode(b"not,a wire")
|
||||
Reference in new issue
Block a user