diff --git a/.travis.yml b/.travis.yml index f87320c..26e0c65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: python python: - "2.7" - - "3.3" - "3.4" - "3.5" env: diff --git a/pyramid_urireferencer/views.py b/pyramid_urireferencer/views.py index c2cfe0f..b7f5670 100644 --- a/pyramid_urireferencer/views.py +++ b/pyramid_urireferencer/views.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- - +from pyramid.httpexceptions import HTTPBadRequest from pyramid.view import view_config from pyramid_urireferencer import get_referencer @@ -20,4 +20,6 @@ class RestView(ApplicatieView): class ReferencesPluginView(RestView): @view_config(route_name='references', renderer='json_item', accept='application/json') def get_references(self): + if not self.request.params.get('uri'): + raise HTTPBadRequest('Uri is required.') return get_referencer(self.request.registry).references(self.request.params.get('uri'), self.request) diff --git a/requirements-dev.txt b/requirements-dev.txt index a563594..fce690d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,6 +2,7 @@ --requirement requirements.txt #testing +attrs==19.1.0 pytest==3.4.2 pytest-cov==2.5.1 webtest==2.0.29 diff --git a/tests/test_views.py b/tests/test_views.py index 33a0005..0025ef8 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -2,11 +2,22 @@ import json import unittest + +try: + from unittest.mock import Mock, patch +except ImportError: + from mock import Mock, patch + import httpretty from pyramid import testing -from pyramid_urireferencer import IReferencer, Referencer, _add_referencer, get_referencer -from pyramid_urireferencer.views import ReferencesPluginView +from pyramid.httpexceptions import HTTPBadRequest + +from pyramid_urireferencer import IReferencer +from pyramid_urireferencer import Referencer +from pyramid_urireferencer import _add_referencer +from pyramid_urireferencer import get_referencer from pyramid_urireferencer.models import RegistryResponse +from pyramid_urireferencer.views import ReferencesPluginView try: from urllib import urlencode @@ -64,6 +75,18 @@ def test_is_referenced(self): httpretty.disable() # disable afterwards, so that you will have no problems in code that uses that socket module httpretty.reset() + def test_no_uri(self): + request = Mock(params={'uri': ''}) + view = ReferencesPluginView(request) + with self.assertRaises(HTTPBadRequest): + view.get_references() + + def test_uri_none(self): + request = Mock(params={'uri': None}) + view = ReferencesPluginView(request) + with self.assertRaises(HTTPBadRequest): + view.get_references() + class TestReferencer(Referencer): def references(self, uri, request): @@ -71,5 +94,3 @@ def references(self, uri, request): def get_uri(self, request): return 'https://id.erfgoed.net/resources/1' - -