1+ import unittest
2+ import time
3+ from messagebird .signed_request import SignedRequest
4+
5+ try :
6+ from unittest .mock import Mock
7+ except ImportError :
8+ # mock was added to unittest in Python 3.3, but was an external library
9+ # before.
10+ from mock import Mock
11+
12+
13+ SIGNING_KEY = 'PlLrKaqvZNRR5zAjm42ZT6q1SQxgbbGd'
14+
15+
16+ class TestMessage (unittest .TestCase ):
17+
18+ def test_signed_request_withou_body (self ):
19+ query = {
20+ 'recipient' : '31612345678' ,
21+ 'reference' : 'FOO' ,
22+ 'statusDatetime' : '2019-01-11T09:17:11+00:00' ,
23+ 'id' : 'eef0ab57a9e049be946f3821568c2b2e' ,
24+ 'status' : 'delivered' ,
25+ 'mccmnc' : '20408' ,
26+ 'ported' : '1' ,
27+ }
28+
29+ signature = 'KVBdcVdz2lYMwcBLZCRITgxUfA/WkwSi+T3Wxl2HL6w='
30+ timestamp = 1547198231
31+ body = ''
32+
33+ signed_request = SignedRequest (signature , timestamp , body , query )
34+ self .assertTrue (signed_request .verify (SIGNING_KEY ))
35+
36+ def test_signed_request_with_body (self ):
37+ query = {
38+ 'recipient' : '31612345678' ,
39+ 'reference' : 'FOO' ,
40+ 'statusDatetime' : '2019-01-11T09:17:11+00:00' ,
41+ 'id' : 'eef0ab57a9e049be946f3821568c2b2e' ,
42+ 'status' : 'delivered' ,
43+ 'mccmnc' : '20408' ,
44+ 'ported' : '1' ,
45+ }
46+
47+ signature = '2bl+38H4oHVg03pC3bk2LvCB0IHFgfC4cL5HPQ0LdmI='
48+ timestamp = 1547198231
49+ body = '{"foo":"bar"}'
50+
51+ signed_request = SignedRequest (signature , timestamp , body , query )
52+ self .assertTrue (signed_request .verify (SIGNING_KEY ))
53+
54+ def test_incorrectly_signed_request (self ):
55+ query = {
56+ 'recipient' : '31612345678' ,
57+ 'reference' : 'BAR' ,
58+ 'statusDatetime' : '2019-01-11T09:17:11+00:00' ,
59+ 'id' : 'eef0ab57a9e049be946f3821568c2b2e' ,
60+ 'status' : 'delivered' ,
61+ 'mccmnc' : '20408' ,
62+ 'ported' : '1' ,
63+ }
64+
65+ signature = 'KVBdcVdz2lYMwcBLZCRITgxUfA/WkwSi+T3Wxl2HL6w='
66+ timestamp = 1547198231
67+ body = ''
68+
69+ signed_request = SignedRequest (signature , timestamp , body , query )
70+ self .assertFalse (signed_request .verify (SIGNING_KEY ))
71+
72+ def test_recent_signed_request (self ):
73+ query = {}
74+ signature = 'KVBdcVdz2lYMwcBLZCRITgxUfA/WkwSi+T3Wxl2HL6w='
75+ timestamp = int (time .time ()) - 1
76+ body = ''
77+
78+ signed_request = SignedRequest (signature , timestamp , body , query )
79+ self .assertTrue (signed_request .isRecent ())
80+
81+ def test_not_recent_signed_request (self ):
82+ query = {}
83+ signature = 'KVBdcVdz2lYMwcBLZCRITgxUfA/WkwSi+T3Wxl2HL6w='
84+ timestamp = int (time .time ()) - 100
85+ body = ''
86+
87+ signed_request = SignedRequest (signature , timestamp , body , query )
88+ self .assertFalse (signed_request .isRecent ())
0 commit comments