コード例 #1
0
 def test_create_submission_with_db_down(self, mock_events, url_for):
     """An internal server error is raised when the database is down."""
     url_for.return_value = '/foo/'
     mock_events.save.side_effect = SaveError
     preserve_exceptions_and_events(mock_events)
     data = {'primary_classification': {'category': 'astro-ph'}}
     with self.assertRaises(InternalServerError):
         submission.create_submission(data, self.headers, self.user_data,
                                      self.client_data, self.token)
コード例 #2
0
 def test_create_submission_with_invalid_data(self, mock_events, url_for):
     """Trying to create a submission with invalid data throws exception."""
     preserve_exceptions_and_events(mock_events)
     url_for.return_value = '/foo/'
     data = {
         'metadata': 'bad value',
     }
     with self.assertRaises(BadRequest):
         submission.create_submission(data, self.headers, self.user_data,
                                      self.client_data, self.token)
コード例 #3
0
ファイル: tests.py プロジェクト: arXiv/arxiv-submission-api
    def test_create_submission_with_invalid_event(self, mock_events, url_for):
        """A Bad Request error is raised on an invalid event."""
        url_for.return_value = '/foo/'

        def raise_invalid_event(*events, **kwargs):
            raise InvalidEvent(
                CreateSubmission(creator=self.agents['creator']), 'foo')

        mock_events.save.side_effect = raise_invalid_event
        preserve_exceptions_and_events(mock_events)
        data = {'primary_classification': {'category': 'astro-ph'}}
        with self.assertRaises(BadRequest):
            submission.create_submission(data, self.headers, self.agents,
                                         self.token)
コード例 #4
0
    def test_create_submission_with_invalid_event(self, mock_events, url_for):
        """A Bad Request error is raised on an invalid event."""
        url_for.return_value = '/foo/'

        def raise_invalid_event(*events, **kwargs):
            user = dict(**self.user_data)
            user['native_id'] = user['user_id']
            user.pop('user_id')
            raise InvalidEvent(CreateSubmission(creator=User(**user)), 'foo')

        mock_events.save.side_effect = raise_invalid_event
        preserve_exceptions_and_events(mock_events)
        data = {'primary_classification': {'category': 'astro-ph'}}
        with self.assertRaises(BadRequest):
            submission.create_submission(data, self.headers, self.user_data,
                                         self.client_data, self.token)
コード例 #5
0
def create_submission() -> Union[str, Response]:
    """Accept new submissions."""
    return submission.create_submission(request.get_json(),
                                        dict(request.headers),
                                        user_data=g.user,
                                        client_data=g.client,
                                        token=g.token)
コード例 #6
0
def create_submission() -> Union[str, Response]:
    """Accept new submissions."""
    data = request.get_json()
    if data is None:
        raise BadRequest('No data in request')
    return submission.create_submission(data,
                                        dict(request.headers),
                                        agents=request.agents,
                                        token=request.environ.get('token'))
コード例 #7
0
    def test_create_submission_with_valid_data(self, mock_events, url_for):
        """Create a submission with valid data."""
        preserve_exceptions_and_events(mock_events)
        url_for.return_value = '/foo/'
        user = User(1234, '*****@*****.**')
        mock_events.save.return_value = (Submission(creator=user,
                                                    owner=user,
                                                    created=datetime.now()),
                                         [CreateSubmission(creator=user)])
        data = {'primary_classification': {'category': 'astro-ph'}}
        resp, stat, head = submission.create_submission(
            data, self.headers, self.user_data, self.client_data, self.token)
        call_args, call_kwargs = mock_events.save.call_args

        self.assertIsInstance(call_args[0], CreateSubmission,
                              "Should pass a CreateSubmission first")
        self.assertIsInstance(call_args[1], SetPrimaryClassification,
                              "Should pass a SetPrimaryClassification")
        self.assertEqual(
            stat, status.HTTP_201_CREATED,
            "Should return 201 Created when submission is"
            " successfully created.")
        self.assertIn('Location', head, "Should include a Location header.")