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)
Beispiel #2
0
    def test_400_error_default_with_proxied_text(self):
        view = ProxyView()
        view = self.get_view({'RETURN_RAW_ERROR': True})

        responses.add(responses.GET,
                      'http://sample',
                      body="error response text",
                      status=400)

        resp = requests.get('http://sample')
        proxy_resp = view.create_response(resp)

        self.assertEqual(proxy_resp.__class__.__name__, 'HttpResponse')
        self.assertEqual(proxy_resp.content, b'error response text')
        self.assertEqual(proxy_resp.status_code, 400)
        self.assertEqual(proxy_resp._headers['content-type'][1], 'text/plain')
    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_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'})
Beispiel #5
0
    def test_400_error_default_with_proxied_json(self):
        view = ProxyView()
        view = self.get_view({'RETURN_RAW_ERROR': True})

        responses.add(responses.GET,
                      'http://sample',
                      json={'error': 'error response'},
                      status=400)

        resp = requests.get('http://sample')
        proxy_resp = view.create_response(resp)

        self.assertEqual(proxy_resp.__class__.__name__, 'HttpResponse')
        self.assertEqual(proxy_resp.content, b'{"error": "error response"}')
        self.assertEqual(proxy_resp.status_code, 400)
        self.assertEqual(proxy_resp._headers['content-type'][1],
                         'application/json')
    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
Beispiel #7
0
    def test_postitional_and_keyword_arguments_passed_through_to_proxy_method(
            self):
        proxied_http_methods = ['get', 'put', 'post', 'patch', 'delete']
        request = Mock()
        view = ProxyView()

        for http_method in proxied_http_methods:
            with patch.object(ProxyView, 'proxy') as patched_proxy_method:
                handler = getattr(view, http_method)
                handler(request, 42, foo='bar')

            patched_proxy_method.assert_called_once_with(request,
                                                         42,
                                                         foo='bar')
 def get_view(self, custom_settings=None):
     view = ProxyView()
     view.proxy_settings = settings.APISettings(
         custom_settings, settings.DEFAULTS)
     return view
Beispiel #9
0
 def get_view(self, custom_settings=None):
     view = ProxyView()
     view.proxy_settings = settings.APISettings(custom_settings,
                                                settings.DEFAULTS)
     return view
Beispiel #10
0
    CategoryViewSet,
    CollectionViewSet,
    GameTypeViewSet,
    GameViewSet,
    MechanicViewSet,
    PersonViewSet,
    RankingViewSet,
    UserViewSet,
    redirect_view,
)

ROUTER = DefaultRouter()
ROUTER.register("categories", CategoryViewSet)
ROUTER.register("collections", CollectionViewSet)
ROUTER.register("games", GameViewSet)
ROUTER.register("mechanics", MechanicViewSet)
ROUTER.register("persons", PersonViewSet)
ROUTER.register("rankings", RankingViewSet)
ROUTER.register("types", GameTypeViewSet)
ROUTER.register("users", UserViewSet)

# pylint: disable=invalid-name
urlpatterns = [
    path("", include(ROUTER.urls)),
    path("redirect", redirect_view),
    path("redirect/", redirect_view),
    re_path(r"^news/(?P<path>.+)$",
            ProxyView.as_view(source="%(path)s"),
            name="news-list"),
]
Beispiel #11
0
from django.conf.urls import patterns, url, include
from rest_framework_proxy.views import ProxyView

urlpatterns = [
    url(r'^get_sensor_readings',
        ProxyView.as_view(source='get_sensor_readings'),
        name='sensor-readings'),
    url(r'^get_target_temp',
        ProxyView.as_view(source='get_target_temp'),
        name='get-target-temperature'),
    url(r'^set_target_temp',
        ProxyView.as_view(source='set_target_temp'),
        name='set-target-temperature'),
]
Beispiel #12
0
        name='password-reset-confirm'),
    url(r'^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        TemplateView.as_view(template_name="password_reset_confirm.html"),
        name='password_reset_confirm'),

    # permit downloads of uploaded files
    url(r'^api/v1/documents/(?P<pk>[0-9]+)/file/$',
        api.FileDownloadView.as_view(model=models.Document, file_field='file')),
    url(r'^api/v1/documentversions/(?P<pk>[0-9]+)/file/$',
        api.FileDownloadView.as_view(model=models.DocumentVersion, file_field='file')),

    # jwt authentication endpoint
    url(r'^auth/', 'rest_framework_jwt.views.obtain_jwt_token'),
    url(r'^auth-refresh/', 'rest_framework_jwt.views.refresh_jwt_token'),

    # angular app endpoint
    url(r'^$', 'sbirez.views.home', name='home'),
    url(r'^search/', 'sbirez.views.home', name='home'),
    url(r'^topic/', 'sbirez.views.home', name='home'),
    url(r'^~/', 'sbirez.views.home', name='home'),
    url(r'^signin', 'sbirez.views.home', name='home'),
    url(r'^signup', 'sbirez.views.home', name='home'),
    url(r'^reset/', 'sbirez.views.home', name='home'),

    # proxy company info searches to SAM API
    url(r'^api/v1/firms/search/(?P<searchterms>.*)$',
        ProxyView.as_view(source='registrations?qterms=%(searchterms)s&api_key='
                          + settings.REST_PROXY['API_KEY']),
        name='firm-search'),
)
Beispiel #13
0
from django.conf.urls import url
from rest_framework_proxy.views import ProxyView

from .views import index

urlpatterns = [
    url(r'^$', index, name="index"),
    url(r'^trivia/(?P<path>.*)$', ProxyView.as_view(), name="proxies"),
]
Beispiel #14
0
router.register(r'contacts', views.ContactInvoiceARViewSet)
router.register(r'companies', views.CompanyInvoiceARViewSet)
router.register(r'webservicesessions', views.WebServiceSessionViewSet)
router.register(r'pointsofsalear', views.PointOfSaleARViewSet)
router.register(r'concepttypes', views.ConceptTypeViewSet)
router.register(r'invoices', views.InvoiceARViewSet)
router.register(
    r'invoiceshavevatsubtotals',
    views.InvoiceARHasVATSubtotalViewSet
)

app_name = 'invoice_ar'
urlpatterns = [
    url(
        r'^afipws/cuit/(?P<cuit>[0-9]+)/$',
        ProxyView.as_view(source='sr-padron/v2/persona/%(cuit)s'),
        name='afipws-cuit'
    ),
    url(
        r'^afipws/dni/(?P<dni>[0-9]+)/$',
        ProxyView.as_view(source='sr-padron/v2/personas/%(dni)s'),
        name='afipws-dni'
    ),
    url(
        r'^concepttypes/(?P<pk>\d+)/invoices/$',
        views.InvoicesByConceptTypeList.as_view(),
        name='concepttype-invoices'
    ),
    url(
        r'^invoices/(?P<pk>\d+)/relatedinvoices/$',
        views.InvoicesByRelatedInvoiceList.as_view(),
Beispiel #15
0
from django.conf.urls import patterns, url, include
from rest_framework_proxy.views import ProxyView

from .views import *


urlpatterns = [
    url(r'^get_sensor_readings', ProxyView.as_view(source='get_sensor_readings'), name='sensor-readings'),
    url(r'^get_target_temp', ProxyView.as_view(source='get_target_temp'), name='get-target-temperature'),
    url(r'^set_target_temp', ProxyView.as_view(source='set_target_temp'), name='set-target-temperature'),
    url(r'^$', ferment, name='ferment'),
]