Ejemplo n.º 1
0
    def test_add_registry_by_url_raises_exception_if_bad_sets_data(
            self, mock_registry, mock_identify, mock_set, mock_transform):
        """

        Args:
            mock_registry:
            mock_identify:
            mock_set:
            mock_transform:

        Returns:

        """
        # Arrange
        mock_user = create_mock_user("1", is_superuser=True)
        mock_request = create_mock_request(user=mock_user)
        mock_registry.return_value = False
        mock_identify.return_value = OaiPmhMock.mock_oai_identify(
        ), status.HTTP_200_OK
        mock_set.return_value = [], status.HTTP_200_OK
        exception_message = "Bad sets"
        mock_transform.side_effect = Exception(exception_message)

        # Act + Assert
        with self.assertRaises(
                oai_pmh_exceptions.OAIAPILabelledException) as ex:
            oai_registry_api.add_registry_by_url(self.url,
                                                 self.harvest_rate,
                                                 self.harvest,
                                                 request=mock_request)

        self.assertTrue(exception_message in ex.exception.message)
        self.assertEqual(ex.exception.status_code, status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
def add_registry(request):
    """ Add a registry.
    Args:
        request:

    Returns:

    """
    try:
        if request.method == 'POST':
            form = AddRegistryForm(request.POST)
            if form.is_valid():
                url = form.cleaned_data.get('url')
                harvest_rate = form.cleaned_data.get('harvest_rate')
                harvest = form.cleaned_data.get('harvest')
                oai_registry_api.add_registry_by_url(url, harvest_rate,
                                                     harvest)
                messages.add_message(request, messages.SUCCESS,
                                     'Data provider added with success.')
            else:
                return HttpResponseBadRequest('Please enter a valid URL.')
    except Exception as e:
        return HttpResponseBadRequest(e.message,
                                      content_type='application/javascript')

    return HttpResponse(json.dumps({}), content_type='application/javascript')
    def test_add_registry_by_url_raises_exception_if_bad_identify_data(
            self, mock_registry, mock_identify, mock_transform):
        """

        Args:
            mock_registry:
            mock_identify:
            mock_transform:

        Returns:

        """
        # Arrange
        mock_registry.return_value = False
        mock_identify.return_value = [], status.HTTP_200_OK
        exception_message = "Bad identify"
        mock_transform.side_effect = Exception(exception_message)

        # Act + Assert
        with self.assertRaises(
                oai_pmh_exceptions.OAIAPILabelledException) as ex:
            oai_registry_api.add_registry_by_url(self.url, self.harvest_rate,
                                                 self.harvest)

        self.assertTrue(exception_message in ex.exception.message)
        self.assertEqual(ex.exception.status_code, status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 4
0
    def test_add_registry_by_url_raises_exception_if_bad_sets(
            self, mock_registry, mock_sets, mock_identify):
        """

        Args:
            mock_registry:
            mock_sets:
            mock_identify:

        Returns:

        """
        # Arrange
        mock_user = create_mock_user("1", is_superuser=True)
        mock_request = create_mock_request(user=mock_user)
        mock_identify.return_value = [], status.HTTP_200_OK
        mock_registry.return_value = False
        mock_sets.return_value = (
            OaiPmhMessage.get_message_labelled(self.error_message % "sets"),
            status.HTTP_500_INTERNAL_SERVER_ERROR,
        )

        # Act + Assert
        with self.assertRaises(
                oai_pmh_exceptions.OAIAPILabelledException) as ex:
            oai_registry_api.add_registry_by_url(self.url,
                                                 self.harvest_rate,
                                                 self.harvest,
                                                 request=mock_request)

        self.assertEqual(ex.exception.message, self.error_message % "sets")
        self.assertEqual(ex.exception.status_code,
                         status.HTTP_500_INTERNAL_SERVER_ERROR)
    def test_add_registry_by_url_raises_exception_if_bad_metadata_formats(
            self, mock_registry, mock_metadata_formats, mock_identify,
            mock_sets):
        """

        Args:
            mock_registry:
            mock_metadata_formats:
            mock_identify:
            mock_sets:

        Returns:

        """
        # Arrange
        mock_sets.return_value = [], status.HTTP_200_OK
        mock_identify.return_value = [], status.HTTP_200_OK
        mock_registry.return_value = False
        mock_metadata_formats.return_value = OaiPmhMessage.get_message_labelled(self.error_message % "metadataFormats"),\
                                                status.HTTP_500_INTERNAL_SERVER_ERROR

        # Act + Assert
        with self.assertRaises(
                oai_pmh_exceptions.OAIAPILabelledException) as ex:
            oai_registry_api.add_registry_by_url(self.url, self.harvest_rate,
                                                 self.harvest)

        self.assertEqual(ex.exception.message,
                         self.error_message % "metadataFormats")
        self.assertEqual(ex.exception.status_code,
                         status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 6
0
 def test_add_registry_raises_exception_if_url_already_exists(self):
     """ Test add registry with existing URL
     """
     # Act + Assert
     with self.assertRaises(oai_pmh_exceptions.OAIAPINotUniqueError):
         oai_registry_api.add_registry_by_url(self.fixture.url, self.fixture.harvest_rate,
                                              self.fixture.harvest)
Ejemplo n.º 7
0
    def test_add_registry_not_available(self, mock_identify):
        """Test add registry not available
        Args:
            mock_identify:

        Returns:

        """
        # Arrange
        mock_user = create_mock_user("1", is_superuser=True)
        mock_request = create_mock_request(user=mock_user)
        mock_identify.return_value = (
            {
                "message":
                "An error occurred when attempting to identify "
                "resource: "
                "404 Client Error: NOT FOUND"
            },
            status.HTTP_500_INTERNAL_SERVER_ERROR,
        )

        # Act + Assert
        with self.assertRaises(oai_pmh_exceptions.OAIAPILabelledException):
            oai_registry_api.add_registry_by_url(
                self.fixture.url,
                self.fixture.harvest_rate,
                self.fixture.harvest,
                request=mock_request,
            )
Ejemplo n.º 8
0
def add_registry(request):
    """Add a registry.
    Args:
        request:

    Returns:

    """
    try:
        if request.method == "POST":
            form = AddRegistryForm(request.POST)
            if form.is_valid():
                url = form.cleaned_data.get("url")
                harvest_rate = form.cleaned_data.get("harvest_rate")
                harvest = form.cleaned_data.get("harvest")
                oai_registry_api.add_registry_by_url(url,
                                                     harvest_rate,
                                                     harvest,
                                                     request=request)
                messages.add_message(request, messages.SUCCESS,
                                     "Data provider added with success.")
            else:
                return HttpResponseBadRequest("Please enter a valid URL.")
    except Exception as e:
        return HttpResponseBadRequest(escape(str(e)),
                                      content_type="application/javascript")

    return HttpResponse(json.dumps({}), content_type="application/javascript")
Ejemplo n.º 9
0
 def test_add_registry_raises_exception_if_url_already_exists(self):
     """Test add registry with existing URL"""
     # Arrange
     mock_user = create_mock_user("1", is_superuser=True)
     mock_request = create_mock_request(user=mock_user)
     # Act + Assert
     with self.assertRaises(oai_pmh_exceptions.OAIAPINotUniqueError):
         oai_registry_api.add_registry_by_url(
             self.fixture.url,
             self.fixture.harvest_rate,
             self.fixture.harvest,
             request=mock_request,
         )
Ejemplo n.º 10
0
    def test_add_registry(self, mock_identify, mock_metadata_formats,
                          mock_sets, mock_get):
        """ Test add registry
        Args:
            mock_identify:
            mock_metadata_formats:
            mock_sets:
            mock_get:

        Returns:

        """
        # Arrange
        mock_identify.return_value = OaiPmhMock.mock_oai_identify(
        ), status.HTTP_200_OK
        mock_metadata_formats.return_value = OaiPmhMock.mock_oai_metadata_format(), \
            status.HTTP_200_OK
        mock_sets.return_value = OaiPmhMock.mock_oai_set(), status.HTTP_200_OK
        text = '<test>Hello</test>'
        mock_get.return_value.status_code = status.HTTP_200_OK
        mock_get.return_value.text = text

        # Act
        result = oai_registry_api.add_registry_by_url(
            self.fixture.url, self.fixture.harvest_rate, self.fixture.harvest)

        # Assert
        self.assertIsInstance(result, OaiRegistry)
Ejemplo n.º 11
0
    def test_add_registry_metadata_format(self, mock_identify,
                                          mock_metadata_formats, mock_sets,
                                          mock_get):
        """ Test add registry metadata formats
        Args:
            mock_identify:
            mock_metadata_formats:
            mock_sets:
            mock_get:

        Returns:

        """
        # Arrange
        mock_identify.return_value = OaiPmhMock.mock_oai_identify(
        ), status.HTTP_200_OK
        list_metadata_formats = OaiPmhMock.mock_oai_metadata_format()
        mock_metadata_formats.return_value = list_metadata_formats, status.HTTP_200_OK
        mock_sets.return_value = [], status.HTTP_200_OK
        text = '<test>Hello</test>'
        mock_get.return_value.status_code = status.HTTP_200_OK
        mock_get.return_value.text = text

        # Act
        result = oai_registry_api.add_registry_by_url(
            self.fixture.url, self.fixture.harvest_rate, self.fixture.harvest)

        # Assert
        _assert_metadata_format(self, list_metadata_formats, result.id)
Ejemplo n.º 12
0
    def test_add_registry_sets(self, mock_identify, mock_metadata_formats,
                               mock_sets, mock_get):
        """Test add registry sets
        Args:
            mock_identify:
            mock_metadata_formats:
            mock_sets:
            mock_get:

        Returns:

        """
        # Arrange
        mock_user = create_mock_user("1", is_superuser=True)
        mock_request = create_mock_request(user=mock_user)
        mock_identify.return_value = OaiPmhMock.mock_oai_identify(
        ), status.HTTP_200_OK
        mock_metadata_formats.return_value = [], status.HTTP_200_OK
        list_sets = OaiPmhMock.mock_oai_set()
        mock_sets.return_value = list_sets, status.HTTP_200_OK
        text = "<test>Hello</test>"
        mock_get.return_value.status_code = status.HTTP_200_OK
        mock_get.return_value.text = text

        # Act
        result = oai_registry_api.add_registry_by_url(
            self.fixture.url,
            self.fixture.harvest_rate,
            self.fixture.harvest,
            request=mock_request,
        )

        # Assert
        _assert_set(self, list_sets, result.id)
Ejemplo n.º 13
0
    def test_add_registry_not_available(self, mock_identify):
        """ Test add registry not available
        Args:
            mock_identify:

        Returns:

        """
        # Arrange
        mock_identify.return_value = {'message': 'An error occurred when attempting to identify '
                                                 'resource: '
                                                 '404 Client Error: NOT FOUND'}, \
                                     status.HTTP_500_INTERNAL_SERVER_ERROR

        # Act + Assert
        with self.assertRaises(oai_pmh_exceptions.OAIAPILabelledException):
            oai_registry_api.add_registry_by_url(self.fixture.url, self.fixture.harvest_rate,
                                                 self.fixture.harvest)
Ejemplo n.º 14
0
 def create(self, validated_data):
     return oai_registry_api.add_registry_by_url(**validated_data)
 def create(self, validated_data):
     return oai_registry_api.add_registry_by_url(
         **validated_data, request=self.context["request"]
     )