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)
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)
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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')
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)
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)
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)
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)
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)
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)
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)
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)
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')
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)
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))