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