Ejemplo n.º 1
0
    def test_get_record_metadata_format_does_not_exist(
        self,
        mock_get,
        mock_request,
        mock_check_identifier,
        mock_get_by_data,
        mock_get_by_metadata_prefix,
    ):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_check_identifier.return_value = ObjectId()
        mock_get_by_data.return_value = object()
        mock_get_by_metadata_prefix.side_effect = common_exceptions.DoesNotExist(
            "")
        data = {
            "verb": "GetRecord",
            "metadataPrefix": "dummy",
            "identifier": "dummy"
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)

        # Assert
        self.assertTrue(
            isinstance(response.context_data["errors"][0],
                       exceptions.CannotDisseminateFormat))
        self.check_tag_error_code(response.rendered_content,
                                  exceptions.DISSEMINATE_FORMAT)
Ejemplo n.º 2
0
    def test_list_metadata_format_identifier_does_not_exist(
        self,
        mock_get,
        mock_request,
        mock_get_all,
        mock_check_identifier,
        mock_get_by_id,
    ):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_all.return_value = []
        mock_check_identifier.return_value = ObjectId()
        mock_get_by_id.side_effect = common_exceptions.DoesNotExist("")
        data = {"verb": "ListMetadataFormats", "identifier": "dummy"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)

        # Assert
        self.assertTrue(
            isinstance(response.context_data["errors"][0],
                       exceptions.IdDoesNotExist))
        self.check_tag_error_code(response.rendered_content,
                                  exceptions.ID_DOES_NOT_EXIST)
Ejemplo n.º 3
0
    def test_list_metadata_format_identifier_with_identifier(
        self,
        mock_get,
        mock_request,
        mock_check_identifier,
        mock_get_by_id,
        mock_get_all_by_templates,
        mock_get_get_metadata_formats_by_templates,
        mock_get_metadata_format_schema_url,
    ):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_check_identifier.return_value = ObjectId()
        mock_get_by_id.return_value.template = ObjectId()
        list_metadata_formats = [_create_mock_oai_metadata_format()]
        mock_get_all_by_templates.return_value = list_metadata_formats
        mock_get_get_metadata_formats_by_templates.return_value = []
        mock_get_metadata_format_schema_url.return_value = "dummy_schema"
        data = {"verb": "ListMetadataFormats", "identifier": "test_identifier"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, "ListMetadataFormats")
        self.check_tag_count(response.rendered_content, "metadataFormat",
                             len(list_metadata_formats))
Ejemplo n.º 4
0
    def test_list_identifiers_no_set_or_bad_set(
        self,
        mock_get,
        mock_request,
        mock_get_templates_id,
        mock_get_by_metadata_prefix,
        mock_get_template_ids,
        mock_get_by_set_spec,
    ):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_templates_id.return_value = []
        mock_get_by_metadata_prefix.return_value = []
        mock_get_template_ids.return_value = [ObjectId()]
        mock_get_by_set_spec.side_effect = common_exceptions.DoesNotExist("")
        data = {
            "verb": "ListIdentifiers",
            "metadataPrefix": "dummy",
            "set": "dummy_set",
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)

        # Assert
        self.assertTrue(
            isinstance(response.context_data["errors"][0],
                       exceptions.NoRecordsMatch))
        self.check_tag_error_code(response.rendered_content,
                                  exceptions.NO_RECORDS_MATCH)
Ejemplo n.º 5
0
    def test_list_records_no_xml_data(
        self,
        mock_get,
        mock_request,
        mock_get_templates_id,
        mock_get_by_metadata_prefix,
        mock_get_templates_id_by_set_spec,
        mock_get_all_by_template,
    ):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_templates_id.return_value = [ObjectId()]
        mock_get_by_metadata_prefix.return_value = []
        mock_get_templates_id_by_set_spec.return_value = []
        mock_get_all_by_template.return_value = []
        data = {
            "verb": "ListRecords",
            "metadataPrefix": "dummy",
            "set": "dummy_set"
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)

        # Assert
        self.assertTrue(
            isinstance(response.context_data["errors"][0],
                       exceptions.NoRecordsMatch))
        self.check_tag_error_code(response.rendered_content,
                                  exceptions.NO_RECORDS_MATCH)
Ejemplo n.º 6
0
    def test_no_harvesting(self, mock_get):
        # Arrange
        mock_get.return_value.enable_harvesting = False

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=self.data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Ejemplo n.º 7
0
    def test_no_setting(self):
        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=self.data)

        # Assert
        self.assertEqual(response.status_code,
                         status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 8
0
    def test_no_verb(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value.enable_harvesting = True
        mock_request.return_value = ""

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=self.data)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.BadVerb))
        self.check_tag_error_code(response.rendered_content, exceptions.BAD_VERB)
Ejemplo n.º 9
0
    def test_get_record_missing_metadata_prefix(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        data = {'verb': 'GetRecord', 'identifier': "dummy"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.BadArgument))
        self.check_tag_error_code(response.rendered_content, exceptions.BAD_ARGUMENT)
Ejemplo n.º 10
0
    def test_duplicate_argument(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value.enable_harvesting = True
        mock_request.return_value = ""
        bad_arg = {'verb': ['ListSets', 'ListSets']}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=bad_arg)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.BadArgument))
        self.check_tag_error_code(response.rendered_content, exceptions.BAD_ARGUMENT)
Ejemplo n.º 11
0
    def test_list_identifiers_error_metadata_prefix_missing(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        bad_arg = {'verb': ['ListIdentifiers']}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=bad_arg)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.BadArgument))
        self.check_tag_error_code(response.rendered_content, exceptions.BAD_ARGUMENT)
Ejemplo n.º 12
0
    def test_list_records_error_date_from(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        bad_arg = {'verb': 'ListRecords', 'metadataPrefix': 'dummy', 'until': 'bad_date'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=bad_arg)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.BadArgument))
        self.check_tag_error_code(response.rendered_content, exceptions.BAD_ARGUMENT)
Ejemplo n.º 13
0
    def test_get_record_bad_identifier(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        data = {'verb': 'GetRecord', 'metadataPrefix': "dummy", 'identifier': "dummy"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.IdDoesNotExist))
        self.check_tag_error_code(response.rendered_content, exceptions.ID_DOES_NOT_EXIST)
Ejemplo n.º 14
0
    def test_identify(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        data = {'verb': 'Identify'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'Identify')
    def test_identify(self):
        # Arrange
        data = {'verb': 'Identify'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user('1'),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'Identify')
Ejemplo n.º 16
0
    def test_list_record_with_xml_decl_use_raw(
        self,
        mock_get,
        mock_request,
        mock_get_templates_id,
        mock_get_by_metadata_prefix,
        mock_get_templates_id_by_set_spec,
        mock_get_all_public_workspaces,
        mock_get_all_data_in_workspaces_for_templates,
        mock_get_all_by_data_list,
        mock_get_all_by_template_ids,
    ):
        # Arrange
        xml_decl = "<?xml version='1.0' encoding='UTF-8'?>"

        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_templates_id.return_value = [ObjectId()]
        mock_get_by_metadata_prefix.return_value = []
        mock_get_templates_id_by_set_spec.return_value = []

        mock_oai_data = Mock(spec=OaiData)
        mock_oai_data.status = oai_status.ACTIVE
        mock_oai_data.data.xml_content = ("""
            %s
            <body>
                <tag01>value_a</tag01>
                <tag02>value_b</tag02>
            </body>
        """ % xml_decl)
        mock_oai_data.oai_date_stamp = datetime(2019, 4, 1)

        mock_get_all_public_workspaces.return_value = []
        mock_get_all_data_in_workspaces_for_templates.return_value = []
        mock_get_all_by_data_list.return_value = [mock_oai_data]
        mock_get_all_by_template_ids.return_value = []

        data = {
            "verb": "ListRecords",
            "metadataPrefix": "dummy",
            "set": "dummy_set"
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)
        output_xml_data = response.context_data["items"][0]["xml"]

        # Assert
        self.assertNotIn(xml_decl, output_xml_data)
        self.assertEqual(response.status_code, HTTP_200_OK)
Ejemplo n.º 17
0
    def test_list_metadata_format_bad_identifier(self, mock_get, mock_request, mock_get_all):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_all.return_value = []
        data = {'verb': 'ListMetadataFormats', 'identifier': 'dummy'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.IdDoesNotExist))
        self.check_tag_error_code(response.rendered_content, exceptions.ID_DOES_NOT_EXIST)
Ejemplo n.º 18
0
    def test_list_metadata_format_no_data(self, mock_get, mock_request, mock_get_all):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_all.return_value = []
        data = {'verb': 'ListMetadataFormats'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.NoMetadataFormat))
        self.check_tag_error_code(response.rendered_content, exceptions.NO_METADATA_FORMAT)
Ejemplo n.º 19
0
    def test_list_sets_no_sets(self, mock_get, mock_request, mock_get_all):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_get_all.return_value = []
        mock_request.return_value = ""
        data = {'verb': 'ListSets'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_error_code(response.rendered_content, exceptions.NO_SET_HIERARCHY)
Ejemplo n.º 20
0
    def test_list_records_no_metadata_format(self, mock_get, mock_request, mock_get_by_metadata_prefix):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_get_by_metadata_prefix.side_effect = common_exceptions.DoesNotExist('')
        bad_arg = {'verb': 'ListRecords', 'metadataPrefix': 'dummy'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=bad_arg)

        # Assert
        self.assertTrue(isinstance(response.context_data['errors'][0], exceptions.CannotDisseminateFormat))
        self.check_tag_error_code(response.rendered_content, exceptions.DISSEMINATE_FORMAT)
Ejemplo n.º 21
0
    def test_get_record_with_xml_decl_use_raw(
        self,
        mock_get,
        mock_request,
        mock_check_identifier,
        mock_get_by_data,
        mock_get_by_metadata_prefix,
        mock_get_all_by_template_ids,
    ):
        # Arrange
        xml_decl = "<?xml version='1.0' encoding='UTF-8'?>"
        mock_oai_template = Mock(spec=Template)
        mock_oai_template.id = ObjectId()

        mock_metadata_format = Mock(spec=OaiProviderMetadataFormat)
        mock_metadata_format.is_template = True
        mock_metadata_format.template = mock_oai_template

        mock_oai_data = Mock(spec=OaiData)
        mock_oai_data.status = oai_status.ACTIVE
        mock_oai_data.template = mock_oai_template
        mock_oai_data.data.xml_content = ("""
            %s
            <body>
                <tag01>value_a</tag01>
                <tag02>value_b</tag02>
            </body>
        """ % xml_decl)
        mock_oai_data.oai_date_stamp = datetime(2019, 4, 1)

        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        mock_check_identifier.return_value = ObjectId()
        mock_get_by_data.return_value = mock_oai_data
        mock_get_by_metadata_prefix.return_value = mock_metadata_format
        mock_get_all_by_template_ids.return_value = ""
        data = {
            "verb": "GetRecord",
            "metadataPrefix": "dummy",
            "identifier": "dummy"
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=data)
        output_xml_data = response.context_data["xml"]

        # Assert
        self.assertNotIn(xml_decl, output_xml_data)
        self.assertEqual(response.status_code, HTTP_200_OK)
    def test_get_list_sets(self):
        # Arrange
        data = {'verb': 'ListSets'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user('1'),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'ListSets')
        self.check_tag_count(response.rendered_content, 'set',
                             len(self.fixture.oai_sets))
    def test_get_list_records(self):
        # Arrange
        data = {'verb': 'ListRecords', 'metadataPrefix': "oai_demo"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user('1'),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'ListRecords')
        self.check_tag_count(response.rendered_content, 'record',
                             self.fixture.nb_public_data)
Ejemplo n.º 24
0
    def test_get_list_identifiers(self):
        # Arrange
        data = {"verb": "ListIdentifiers", "metadataPrefix": "oai_demo"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user("1"),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, "ListIdentifiers")
        self.check_tag_count(response.rendered_content, "identifier",
                             self.fixture.nb_public_data)
Ejemplo n.º 25
0
    def test_get_list_records(self, mock_xml_content):
        # Arrange
        mock_xml_content.return_value = "<tag>value</tag>"
        data = {"verb": "ListRecords", "metadataPrefix": "oai_demo"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user("1"),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, "ListRecords")
        self.check_tag_count(response.rendered_content, "record",
                             self.fixture.nb_public_data)
Ejemplo n.º 26
0
    def test_list_sets(self, mock_get, mock_request, mock_get_all):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        list_oai_sets = [_create_mock_oai_sets(), _create_mock_oai_sets()]
        mock_get_all.return_value = list_oai_sets
        mock_request.return_value = ""
        data = {'verb': 'ListSets'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content,'ListSets')
        self.check_tag_count(response.rendered_content, 'set', len(list_oai_sets))
    def test_get_list_metadata_formats(self,
                                       mock_get_metadata_format_schema_url):
        # Arrange
        data = {'verb': 'ListMetadataFormats'}
        mock_get_metadata_format_schema_url.return_value = "dummy_schema"

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user('1'),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'ListMetadataFormats')
        self.check_tag_count(response.rendered_content, 'metadataFormat',
                             len(self.fixture.oai_metadata_formats))
    def test_get_record(self):
        # Arrange
        data = {
            'verb': 'GetRecord',
            'metadataPrefix': "oai_demo",
            'identifier': self.fixture.data_identifiers[0]
        }

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              user=_create_user('1'),
                                              data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'record')
Ejemplo n.º 29
0
    def test_illegal_argument(self, mock_get, mock_request):
        # Arrange
        mock_get.return_value.enable_harvesting = True
        mock_request.return_value = ""
        bad_arg = {"verb": "Identify", "test": "test"}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(),
                                              None,
                                              data=bad_arg)

        # Assert
        self.assertTrue(
            isinstance(response.context_data["errors"][0],
                       exceptions.BadArgument))
        self.check_tag_error_code(response.rendered_content,
                                  exceptions.BAD_ARGUMENT)
Ejemplo n.º 30
0
    def test_list_metadata_format_identifier(self, mock_get, mock_request, mock_get_all,
                                             mock_get_metadata_format_schema_url):
        # Arrange
        mock_get.return_value = _create_mock_oai_settings()
        mock_request.return_value = ""
        list_metadata_formats = [_create_mock_oai_metadata_format(), _create_mock_oai_metadata_format()]
        mock_get_all.return_value = list_metadata_formats
        mock_get_metadata_format_schema_url.return_value = "dummy_schema"
        data = {'verb': 'ListMetadataFormats'}

        # Act
        response = RequestMock.do_request_get(OAIProviderView.as_view(), None, data=data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.check_tag_exist(response.rendered_content, 'ListMetadataFormats')
        self.check_tag_count(response.rendered_content, 'metadataFormat', len(list_metadata_formats))