1+ #!/usr/bin/env python
2+ # -*- coding: utf-8 -*-
3+
4+ """Tests for OSDP Replies"""
5+
6+ import os
7+ import sys
8+ import unittest
9+ import datetime
10+ from uuid import UUID , uuid4
11+
12+ sys .path .insert (0 , os .path .abspath ('..' ))
13+ from osdp import *
14+
15+
16+ class CommandTestCase (unittest .TestCase ):
17+
18+ """Test commands for OSDP Python Module."""
19+
20+ def setUp (self ):
21+ """Setup."""
22+
23+ def tearDown (self ):
24+ """Teardown."""
25+
26+ def test_poll_reply_no_data_checksum (self ):
27+ bus_id = uuid4 ()
28+ device = Device (address = 0x7F , use_crc = False , use_secure_channel = False )
29+
30+ device .message_control .increment_sequence (device .message_control .sequence )
31+ self .assertEqual (device .message_control .sequence , 1 )
32+
33+ command = PollCommand (address = 0x7F )
34+ data = bytes .fromhex ('53 FF 07 00 01 40 66' )
35+ reply = Reply .parse (data , bus_id , command , device )
36+ self .assertEqual (reply .type , ReplyType .Ack )
37+ self .assertEqual (reply .extract_reply_data , b'' )
38+
39+ message = reply .build_reply (address = 0x7F , control = device .message_control ).hex ().upper ()
40+ self .assertEqual (message , data .hex ().upper ())
41+
42+ device .message_control .increment_sequence (device .message_control .sequence )
43+ self .assertEqual (device .message_control .sequence , 2 )
44+
45+ device .message_control .increment_sequence (device .message_control .sequence )
46+ self .assertEqual (device .message_control .sequence , 3 )
47+
48+ def test_poll_reply_card_data_checksum (self ):
49+ bus_id = uuid4 ()
50+ device = Device (address = 0x7F , use_crc = False , use_secure_channel = False )
51+
52+ device .message_control .increment_sequence (device .message_control .sequence )
53+ self .assertEqual (device .message_control .sequence , 1 )
54+
55+ device .message_control .increment_sequence (device .message_control .sequence )
56+ self .assertEqual (device .message_control .sequence , 2 )
57+
58+ command = PollCommand (address = 0x7F )
59+ data = bytes .fromhex ('53 FF 0F 00 02 50 FF 01 1A 00 CD 22 C7 16 67' )
60+ reply = Reply .parse (data , bus_id , command , device )
61+ self .assertEqual (reply .type , ReplyType .RawReaderData )
62+ self .assertEqual (reply .extract_reply_data .hex ().upper (), 'FF011A00CD22C716' )
63+
64+ card_data = RawCardData .parse_data (reply )
65+ self .assertEqual (card_data .data .hex ().upper (), 'CD22C716' )
66+
67+ message = reply .build_reply (address = 0x7F , control = device .message_control ).hex ().upper ()
68+ self .assertEqual (message , data .hex ().upper ())
69+
70+ device .message_control .increment_sequence (device .message_control .sequence )
71+ self .assertEqual (device .message_control .sequence , 3 )
72+
73+ def test_poll_reply_key_data_checksum (self ):
74+ bus_id = uuid4 ()
75+ device = Device (address = 0x7F , use_crc = False , use_secure_channel = False )
76+
77+ device .message_control .increment_sequence (device .message_control .sequence )
78+ self .assertEqual (device .message_control .sequence , 1 )
79+
80+ device .message_control .increment_sequence (device .message_control .sequence )
81+ self .assertEqual (device .message_control .sequence , 2 )
82+
83+ command = PollCommand (address = 0x7F )
84+ data = bytes .fromhex ('53 FF 0D 00 02 53 FF 04 31 32 33 34 7F' )
85+ reply = Reply .parse (data , bus_id , command , device )
86+ self .assertEqual (reply .type , ReplyType .KeypadData )
87+ self .assertEqual (reply .extract_reply_data .hex ().upper (), 'FF0431323334' )
88+
89+ keypad_data = KeypadData .parse_data (reply )
90+ self .assertEqual (keypad_data .data .hex ().upper (), '31323334' )
91+
92+ message = reply .build_reply (address = 0x7F , control = device .message_control ).hex ().upper ()
93+ self .assertEqual (message , data .hex ().upper ())
94+
95+ device .message_control .increment_sequence (device .message_control .sequence )
96+ self .assertEqual (device .message_control .sequence , 3 )
97+
98+
99+ if __name__ == '__main__' :
100+ unittest .main ()
0 commit comments