1010
1111from unittest import TestCase
1212
13+ from requests_toolbelt .multipart .encoder import MultipartEncoder
14+
1315from archivist .errors import (
1416 parse_response ,
1517 Archivist4xxError ,
@@ -37,6 +39,7 @@ def test_errors_200(self):
3739 """
3840 response = MockResponse (200 )
3941 error = parse_response (response )
42+
4043 self .assertEqual (
4144 error ,
4245 None ,
@@ -49,6 +52,7 @@ def test_errors_300(self):
4952 """
5053 response = MockResponse (300 )
5154 error = parse_response (response )
55+
5256 self .assertEqual (
5357 error ,
5458 None ,
@@ -61,12 +65,14 @@ def test_errors_400(self):
6165 """
6266 response = MockResponse (400 , error = "some error" )
6367 error = parse_response (response )
68+
6469 self .assertIsNotNone (
6570 error ,
6671 msg = "error should not be None" ,
6772 )
6873 with self .assertRaises (ArchivistBadRequestError ) as ex :
6974 raise error
75+
7076 self .assertEqual (
7177 str (ex .exception ),
7278 '{"error": "some error"} (400)' ,
@@ -79,12 +85,14 @@ def test_errors_401(self):
7985 """
8086 response = MockResponse (401 , error = "some error" )
8187 error = parse_response (response )
88+
8289 self .assertIsNotNone (
8390 error ,
8491 msg = "error should not be None" ,
8592 )
8693 with self .assertRaises (ArchivistUnauthenticatedError ) as ex :
8794 raise error
95+
8896 self .assertEqual (
8997 str (ex .exception ),
9098 '{"error": "some error"} (401)' ,
@@ -97,12 +105,46 @@ def test_errors_403(self):
97105 """
98106 response = MockResponse (403 , error = "some error" )
99107 error = parse_response (response )
108+
100109 self .assertIsNotNone (
101110 error ,
102111 msg = "error should not be None" ,
103112 )
104113 with self .assertRaises (ArchivistForbiddenError ) as ex :
105114 raise error
115+
116+ self .assertEqual (
117+ str (ex .exception ),
118+ '{"error": "some error"} (403)' ,
119+ )
120+
121+ def test_errors_403_multipartencoder (self ):
122+ """
123+ Test errors
124+ """
125+
126+ class Object :
127+ pass
128+
129+ request = Object ()
130+ request .body = MultipartEncoder (
131+ fields = {
132+ "file" : ("filename" , "filecontents" , "image/jpg" ),
133+ }
134+ )
135+ response = MockResponse (
136+ 403 ,
137+ request = request ,
138+ error = "some error" ,
139+ )
140+ error = parse_response (response )
141+ self .assertIsNotNone (
142+ error ,
143+ msg = "error should not be None" ,
144+ )
145+ with self .assertRaises (ArchivistForbiddenError ) as ex :
146+ raise error
147+
106148 self .assertEqual (
107149 str (ex .exception ),
108150 '{"error": "some error"} (403)' ,
0 commit comments