def test_post_file(self): view = ProxyView() factory = APIRequestFactory() request = factory.post('some/url') request.content_type = 'multipart/form-data; boundary='\ '------------------------f8317b014f42e05a' request.query_params = '' upload_bstr = b'test binary data' upload_file = BytesIO() upload_file.write(upload_bstr) upload_file.seek(0) upload_data = InMemoryUploadedFile(upload_file, 'file', 'test_file.dat', 'application/octet-stream', len(upload_bstr), None, content_type_extra={}) request.data = QueryDict(mutable=True) request.data['file'] = upload_data view.get_request_files = lambda r: {'file': upload_data} with patch.object(requests.sessions.Session, 'request') as patched_request: with patch.object(view, 'create_response'): view.proxy(request) args, kwargs = patched_request.call_args request_data = kwargs['data'] self.assertEqual(request_data.files, {'file': upload_data}) self.assertEqual(request_data.data['file'], upload_data)
def test_passes_cookies_through_to_request(self): request = Mock() view = ProxyView() view.get_cookies = lambda r: {'test_cookie': 'value'} factory = APIRequestFactory() request = factory.post('some/url', data={}, cookies={'original_request_cookie': 'I will not get passed'}) request.content_type = 'application/json' request.query_params = '' request.data = {} with patch('rest_framework_proxy.views.requests.request') as patched_requests: with patch.object(view, 'create_response'): view.proxy(request) args, kwargs = patched_requests.call_args request_cookies = kwargs['cookies'] self.assertEqual(request_cookies, {'test_cookie': 'value'})
def test_return_raw_audio_file(self): view = ProxyView() view.return_raw = True test_content = b'ID3\x04\x00\x00\x00\x00\x00#TSSE\x00\x00\x00\x0f\x00\x00\x03Lavf57.71.100\x00\xff\xf3' factory = APIRequestFactory() request = factory.get('http://someurl') request.content_type = 'audio/mpeg' request.query_params = '' request.data = QueryDict(mutable=True) with patch.object(requests.sessions.Session, 'request') as patched_request: def side_effect(*args, **kwargs): response = requests.models.Response() response._content = test_content response._content_consumed = True response.status_code = 200 return response patched_request.side_effect = side_effect result = view.proxy(request) assert result.content == test_content