1
1
import unittest
2
2
import lob
3
-
3
+ import requests_mock
4
+ import base64
4
5
5
6
class TestLob (unittest .TestCase ):
6
7
def setUp (self ):
@@ -13,5 +14,105 @@ def test_bad_auth(self):
13
14
def test_set_version (self ):
14
15
self .assertEqual (lob .api_version , 'apiVersion' )
15
16
17
+ def parse_headers (self , headers ):
18
+ auth = headers ['Authorization' ].split (" " )
19
+ return base64 .b64decode (auth [1 ])
20
+
21
+ def return_list (self , request , context ):
22
+ return {
23
+ "data" : [
24
+ {
25
+ "id" : "adr_e68217bd744d65c8" ,
26
+ "description" : "Harry - Office" ,
27
+ "name" : "HARRY ZHANG" ,
28
+ "company" : "LOB" ,
29
+ "phone" : "5555555555" ,
30
+
31
+ "address_line1" : "210 KING ST STE 6100" ,
32
+ "address_line2" : None ,
33
+ "address_city" : "SAN FRANCISCO" ,
34
+ "address_state" : "CA" ,
35
+ "address_zip" : "94107-1741" ,
36
+ "address_country" : "UNITED STATES" ,
37
+ "metadata" : {},
38
+ "date_created" : "2019-08-12T00:16:00.361Z" ,
39
+ "date_modified" : "2019-08-12T00:16:00.361Z" ,
40
+ "object" : "address"
41
+ },
42
+ {
43
+ "id" : "adr_asdi2y3riuasasoi" ,
44
+ "description" : "Harry - Office" ,
45
+ "name" : "Harry Zhang" ,
46
+ "company" : "Lob" ,
47
+ "phone" : "5555555555" ,
48
+
49
+ "metadata" : {},
50
+ "address_line1" : "370 WATER ST" ,
51
+ "address_line2" : "" ,
52
+ "address_city" : "SUMMERSIDE" ,
53
+ "address_state" : "PRINCE EDWARD ISLAND" ,
54
+ "address_zip" : "C1N 1C4" ,
55
+ "address_country" : "CANADA" ,
56
+ "date_created" : "2019-09-20T00:14:00.361Z" ,
57
+ "date_modified" : "2019-09-20T00:14:00.361Z" ,
58
+ "object" : "address"
59
+ }
60
+ ],
61
+ "object" : "list" ,
62
+ "next_url" : "https://api.lob.com/v1/addresses?limit=2&after=eyJkYXRlT2Zmc2V0IjoiMjAxOS0wOC0wN1QyMTo1OTo0Ni43NjRaIiwiaWRPZmZzZXQiOiJhZHJfODMwYmYwZWFiZGFhYTQwOSJ9" ,
63
+ "previous_url" : None ,
64
+ "count" : 2
65
+ }
66
+
67
+ def return_status (self , request , context ):
68
+ return {
69
+ "id" : "adr_123456789" ,
70
+ "deleted" : True
71
+ }
72
+
73
+ def return_single (self , request , context ):
74
+ return {
75
+ "id" : "adr_d3489cd64c791ab5" ,
76
+ "description" : "Harry - Office" ,
77
+ "name" : "HARRY ZHANG" ,
78
+ "company" : "LOB" ,
79
+ "phone" : "5555555555" ,
80
+
81
+ "address_line1" : "210 KING ST STE 6100" ,
82
+ "address_city" : "SAN FRANCISCO" ,
83
+ "address_state" : "CA" ,
84
+ "address_zip" : "94107" ,
85
+ "address_country" : "UNITED STATES" ,
86
+ "metadata" : {},
87
+ "date_created" : "2017-09-05T17:47:53.767Z" ,
88
+ "date_modified" : "2017-09-05T17:47:53.767Z" ,
89
+ "object" : "address"
90
+ }
91
+
92
+ @requests_mock .Mocker ()
93
+ def test_different_api_keys_per_call (self , adapter ):
94
+ adapter .register_uri ('GET' , 'https://api.lob.com/v1/addresses' , json = self .return_list )
95
+ adapter .register_uri ('POST' , 'https://api.lob.com/v1/addresses' , json = self .return_single )
96
+ adapter .register_uri ('GET' , 'https://api.lob.com/v1/addresses/adr_12345' , json = self .return_single )
97
+ adapter .register_uri ('DELETE' , 'https://api.lob.com/v1/addresses/adr_12345' , json = self .return_status )
98
+
99
+ lob .Address .list (api_key = 'key12345' )
100
+ self .assertEqual (bytes ('key12345:' , 'utf8' ), self .parse_headers (adapter .last_request .headers ))
101
+ lob .Address .create (
102
+ name = 'Lob' ,
103
+ address_line1 = '185 Berry Street' ,
104
+ address_line2 = 'Suite 1510' ,
105
+ address_city = 'San Francisco' ,
106
+ address_zip = '94017' ,
107
+ address_state = 'CA' ,
108
+ address_country = 'US' ,
109
+ api_key = 'key98765'
110
+ )
111
+ self .assertEqual (bytes ('key98765:' , 'utf8' ), self .parse_headers (adapter .last_request .headers ))
112
+ lob .Address .retrieve (id = 'adr_12345' , api_key = 'key9999' )
113
+ self .assertEqual (bytes ('key9999:' , 'utf8' ), self .parse_headers (adapter .last_request .headers ))
114
+ lob .Address .delete (id = 'adr_12345' , api_key = 'key8080' )
115
+ self .assertEqual (bytes ('key8080:' , 'utf8' ), self .parse_headers (adapter .last_request .headers ))
116
+
16
117
def tearDown (self ):
17
118
del lob .api_version
0 commit comments