예제 #1
0
    def test_post_filtered_by_wrong_workspace_id_returns_no_data(self):
        # Arrange
        self.data.update({
            "query": "{}",
            "workspaces": [{
                "id": "507f1f77bcf86cd799439011"
            }]
        })

        # Act
        response = RequestMock.do_request_post(
            data_rest_views.ExecuteLocalQueryView.as_view(),
            self.user,
            data=self.data)

        # Assert
        self.assertEqual(len(response.data), 0)
예제 #2
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)
예제 #3
0
    def test_post_query_string_filtered_by_templates_returns_one_data(self):
        # Arrange
        self.data.update({
            "query": '{"root.element": "value"}',
            "templates": [{
                "id": str(self.fixture.template.id)
            }],
        })

        # Act
        response = RequestMock.do_request_post(
            data_rest_views.ExecuteLocalQueryView.as_view(),
            self.user,
            data=self.data)

        # Assert
        self.assertEqual(len(response.data), 1)
예제 #4
0
    def test_post_query_string_filter_by_private_workspace_returns_all_data_with_no_workspace_as_user(
        self, ):

        # Arrange
        self.data.update({"query": "{}", "workspaces": [{"id": "None"}]})

        # Act
        response = RequestMock.do_request_post(
            data_rest_views.ExecuteLocalQueryView.as_view(),
            self.user2,
            data=self.data)

        # Assert
        self.assertEqual(len(response.data), 1)
        for data in response.data:
            self.assertEqual(data["workspace"], None)
            self.assertEqual(data["user_id"], self.user2.id)
예제 #5
0
    def test_get_list_metadata_formats_with_identifier(
            self, mock_get_metadata_format_schema_url):
        # Arrange
        data = {
            "verb": "ListMetadataFormats",
            "identifier": self.fixture.data_identifiers[0],
        }
        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")
예제 #6
0
    def test_get_record(self, mock_xml_content):
        # Arrange
        mock_xml_content.return_value = "<tag>value</tag>"
        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")
예제 #7
0
    def test_get_returns_http_400_when_data_not_well_formatted(
            self, mock_data_api_get_by_id):
        # Arrange
        mock_user = create_mock_user("1")
        mock_data = Data(user_id="1")
        mock_data_api_get_by_id.return_value = mock_data

        # Mock
        response = RequestMock.do_request_get(
            data_rest_views.DataDownload.as_view(),
            mock_user,
            param={"pk": "1"},
            data={"pretty_print": "true"},
        )

        # Assert
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
예제 #8
0
    def test_post_template_with_incorrect_dependency_schemaLocation_returns_http_400(
            self):
        # Arrange
        user = create_mock_user('1')
        self.data['content'] = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>" \
                               "<xs:include schemaLocation='template1_1.xsd'/>" \
                               "<xs:element name='root'/></xs:schema>"

        self.data['dependencies_dict'] = json.dumps(
            {"test.xsd": str(self.fixture.template_1_1.id)})

        # Act
        response = RequestMock.do_request_post(
            views.UserTemplateList.as_view(), user, data=self.data)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
    def test_template_to_metadata_format_mapping_xslt_metadata_format_not_found(
            self, mock_get_xslt, mock_get_template, mock_get_by_id):
        # Arrange
        mock_get_xslt.return_value = Mock(spec=XslTransformation)
        mock_get_template.return_value = Mock(spec=Template)
        mock_get_by_id.side_effect = exceptions.DoesNotExist("Error")

        # Act
        response = RequestMock.do_request_post(
            rest_oai_provider_metadata_format.TemplateMetadataFormatXSLT.
            as_view(),
            user=create_mock_user("1", is_staff=True),
            data=self.data,
        )

        # Assert
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
예제 #10
0
    def test_staff_returns_http_200(self,
                                    mock_oaipmhmessage_get_message_labelled,
                                    mock_oai_registry_api_upsert,
                                    mock_oai_registry_api_get_by_id):
        # Arrange
        mock_oaipmhmessage_get_message_labelled.return_value = None
        mock_oai_registry_api_upsert.return_value = None
        mock_oai_registry_api_get_by_id.return_value = Mock(spec=OaiRegistry)

        # Act
        response = RequestMock.do_request_patch(
            rest_oai_registry.DeactivateRegistry.as_view(),
            user=create_mock_user('1', is_staff=True),
            param=self.param)

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
    def test_staff_returns_http_200(
        self,
        template_to_mf_mapping_xslt_serializer_init_instance,
        template_to_mf_mapping_xslt_serializer_save,
        template_to_mf_mapping_xslt_serializer_is_valid,
    ):
        template_to_mf_mapping_xslt_serializer_save.return_value = None
        template_to_mf_mapping_xslt_serializer_is_valid.return_value = {}
        template_to_mf_mapping_xslt_serializer_init_instance.return_value = None

        mock_user = create_mock_user("1", is_staff=True)

        response = RequestMock.do_request_post(
            metadata_format_views.TemplateMetadataFormatXSLT.as_view(),
            mock_user)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
    def test_staff_returns_http_201(
        self,
        template_metadata_format_serializer_save,
        template_metadata_format_serializer_is_valid,
    ):
        # method returns serializer.save directly (which returns an HTTPResponse with status code 201 automatically)
        template_metadata_format_serializer_save.return_value = (
            _create_mock_http_response(status.HTTP_201_CREATED))
        template_metadata_format_serializer_is_valid.return_value = {}

        mock_user = create_mock_user("1", is_staff=True)

        response = RequestMock.do_request_post(
            metadata_format_views.TemplateAsMetadataFormat.as_view(),
            mock_user)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
    def test_staff_returns_http_200(
        self,
        oai_provider_metadata_format_serializer_data,
        oai_provider_metadata_format_get_by_id,
    ):
        oai_provider_metadata_format_serializer_data.return_value = True
        oai_provider_metadata_format_get_by_id.return_value = {}

        mock_user = create_mock_user("1", is_staff=True)

        response = RequestMock.do_request_get(
            metadata_format_views.MetadataFormatDetail.as_view(),
            mock_user,
            param={"metadata_format_id": self.fake_id},
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #14
0
    def test_post_authenticated_returns_http_201(self,
                                                 mock_data_serializer_save,
                                                 mock_data_serializer_is_valid,
                                                 mock_data_serializer_data):
        # Context
        user = create_mock_user('1')
        mock_data_serializer_is_valid.return_value = True
        mock_data_serializer_save.return_value = None
        mock_data_serializer_data.return_value = []

        # Act
        response = RequestMock.do_request_post(
            workspace_rest_views.WorkspaceList.as_view(),
            user,
            data={"title": "title 1"})
        # Assert
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
예제 #15
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)
예제 #16
0
    def test_authenticated_returns_http_200(self, mock_exporter_get_by_name,
                                            mock_data_api_get_by_id):
        template = Template()
        mock_user = create_mock_user("1")
        mock_exporter_get_by_name.return_value = _create_exporter(template)
        mock_data_api_get_by_id.return_value = _create_data(template)

        response = RequestMock.do_request_get(
            export_api_views.ExportData.as_view(),
            mock_user,
            data={
                "data_id": "6111b84691cb057052b3da20",
                "exporter": "XML"
            },
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #17
0
    def test_staff_returns_http_200(
        self,
        mock_data_api_get_by_id,
        mock_data_serializer_is_valid,
        mock_data_serializer_save,
        mock_data_serializer_data,
    ):
        mock_data_api_get_by_id.return_value = []
        mock_data_serializer_is_valid.return_value = True
        mock_data_serializer_save.return_valie = None
        mock_data_serializer_data.return_value = []

        mock_user = create_mock_user("1", is_staff=True)

        response = RequestMock.do_request_patch(
            data_rest_views.DataDetail.as_view(), mock_user, param={"pk": 0})

        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #18
0
    def test_export_data_wrong_exporter_returns_http_404(
            self, mock_data_api_get_by_id):
        # Arrange
        user = create_mock_user("1")
        mock_data_api_get_by_id.return_value = self.data

        # Act
        response = RequestMock.do_request_get(
            export_data_views.ExportData.as_view(),
            user,
            data={
                "data_id": mock_data_api_get_by_id.return_value.id,
                "exporter": "test",
            },
        )

        # Assert
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
예제 #19
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)
예제 #20
0
    def test_get_without_pretty_print_returns_data(self,
                                                   mock_template_api_get):
        # Arrange
        mock_user = create_mock_user("1")
        mock_template = _get_template()
        mock_template_api_get.return_value = mock_template
        expected_value = b'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="tag"></xs:element></xs:schema>'
        # Mock
        response = RequestMock.do_request_get(
            template_rest_views.TemplateDownload.as_view(),
            mock_user,
            param={"pk": "1"},
            data={"pretty_print": "false"},
        )

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.content, expected_value)
예제 #21
0
        def test_export_data_returns_status_200(self,
                                                mock_data_api_get_by_pid):
            # Arrange
            user = create_mock_user("1")
            mock_data_api_get_by_pid.return_value = self.data

            # Act
            response = RequestMock.do_request_get(
                export_data_views.ExportData.as_view(),
                user,
                data={
                    "data_pid": mock_data_api_get_by_pid.return_value.id,
                    "exporter": self.fixture.exporter_xml.name,
                },
            )

            # Assert
            self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #22
0
    def test_staff_returns_http_200(self, mock_data_api_get_by_id,
                                    mock_workspace_api_get_by_id,
                                    mock_data_api_assign):
        mock_data_api_get_by_id.return_value = None
        mock_workspace_api_get_by_id.return_value = None
        mock_data_api_assign.return_value = None

        mock_user = create_mock_user('1', is_staff=True)

        response = RequestMock.do_request_patch(
            data_rest_views.DataAssign.as_view(),
            mock_user,
            param={
                "pk": 0,
                "workspace_id": 0
            })

        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #23
0
    def test_authenticated_returns_http_403(self, mock_data_api_get_by_id,
                                            mock_user_api_get_by_id,
                                            mock_data_api_change_owner):
        mock_data_api_get_by_id.return_value = None
        mock_user_api_get_by_id.return_value = None
        mock_data_api_change_owner.return_value = None

        mock_user = create_mock_user('1')

        response = RequestMock.do_request_patch(
            data_rest_views.DataChangeOwner.as_view(),
            mock_user,
            param={
                "pk": 0,
                "user_id": 0
            })

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
예제 #24
0
    def test_assign_bad_workspace_id_returns_http_404(self, data_get_by_id):
        # Arrange
        fake_workspace_id = '507f1f77bcf86cd799439011'
        data = self.fixture.data_collection[self.fixture.USER_1_WORKSPACE_1]
        user = create_mock_user(data.user_id, is_superuser=True)
        data_get_by_id.return_value = data

        # Act
        response = RequestMock.do_request_patch(
            data_rest_views.DataAssign.as_view(),
            user,
            param={
                'pk': data.id,
                'workspace_id': fake_workspace_id
            })

        # Assert
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
    def test_staff_returns_http_200(
        self,
        mock_abstract_exporter_export,
        mock_data_get_by_id_list,
        mock_exported_compressed_file_upsert,
        mock_exporter_exporter_is_valid,
        mock_exporter_exporter_data,
    ):
        mock_data_get_by_id_list.return_value = None
        mock_user = create_mock_user("1", is_staff=True)

        response = RequestMock.do_request_post(
            exporters_api_views.ExportToZip.as_view(),
            mock_user,
            data={"data_id_list": "0", "exporter_id_list": ""},
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #26
0
    def test_get_returns_http_200(self, data_get_by_id, workspace_get_by_id):
        # Arrange
        data = self.fixture.data_collection[self.fixture.USER_1_WORKSPACE_1]
        user = create_mock_user(data.user_id, is_superuser=True)
        data_get_by_id.return_value = data
        workspace_get_by_id.return_value = self.fixture.workspace_1

        # Act
        response = RequestMock.do_request_patch(
            data_rest_views.DataAssign.as_view(),
            user,
            param={
                'pk': data.id,
                'workspace_id': self.fixture.workspace_1.id
            })

        # Assert
        self.assertEqual(response.status_code, status.HTTP_200_OK)
예제 #27
0
    def test_post_empty_query_string_filter_by_templates_returns_all_data_of_the_template(
            self):
        # Arrange
        self.data.update({
            "query":
            "{}",
            "templates":
            '[{"id": "' + str(self.fixture.template.id) + '"}]'
        })

        # Act
        response = RequestMock.do_request_post(
            data_rest_views.ExecuteLocalQueryView.as_view(),
            self.user,
            data=self.data)

        # Assert
        self.assertEqual(len(response.data), 2)
예제 #28
0
    def test_assign_bad_data_id_returns_http_404(self, workspace_get_by_id):
        # Arrange
        fake_data_id = "507f1f77bcf86cd799439011"
        user = create_mock_user("1", is_superuser=True)
        workspace_get_by_id.return_value = self.fixture.workspace_2

        # Act
        response = RequestMock.do_request_patch(
            data_rest_views.DataAssign.as_view(),
            user,
            param={
                "pk": fake_data_id,
                "workspace_id": self.fixture.workspace_2.id
            },
        )

        # Assert
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
예제 #29
0
    def test_post_query_string_filtered_by_wrong_template_id_returns_no_data(
            self):
        # Arrange
        self.data.update({
            "query": '{"root.element": "value"}',
            "templates": [{
                "id": "507f1f77bcf86cd799439011"
            }],
        })

        # Act
        response = RequestMock.do_request_post(
            data_rest_views.ExecuteLocalQueryView.as_view(),
            self.user,
            data=self.data)

        # Assert
        self.assertEqual(len(response.data), 0)
예제 #30
0
    def test_is_staff_returns_http_200(self, xslt_serializer_data,
                                       xslt_serializer_save,
                                       xslt_serializer_is_valid,
                                       xslt_get_by_id):
        xslt_get_by_id.return_value = {}
        xslt_serializer_is_valid.return_value = {}
        xslt_serializer_save.return_value = None
        xslt_serializer_data.return_value = True

        mock_user = create_mock_user('1', is_staff=True)

        response = RequestMock.do_request_patch(
            xslt_views.XslTransformationDetail.as_view(),
            mock_user,
            param={'pk': self.fake_id},
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)