def test_returns_400_unknown_type(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) e = EmailFactory.create() em = EmailMessageFactory.create(to=e.email) event_id = str(uuid.uuid4()) db_request.json_body = { "Type": "Notification", "MessageId": event_id, "Message": json.dumps( { "notificationType": "Not Really A Type", "mail": {"messageId": em.message_id}, } ), } with pytest.raises(HTTPBadRequest, match="Unknown notificationType"): views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body) ]
def test_returns_400_unknown_type(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) e = EmailFactory.create() em = EmailMessageFactory.create(to=e.email) event_id = str(uuid.uuid4()) db_request.json_body = { "Type": "Notification", "MessageId": event_id, "Message": json.dumps({ "notificationType": "Not Really A Type", "mail": { "messageId": em.message_id }, }), } with pytest.raises(HTTPBadRequest, match="Unknown notificationType"): views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body), ]
def test_error_fetching_pubkey(self, pyramid_request, monkeypatch, metrics): def raiser(*args, **kwargs): raise requests.HTTPError monkeypatch.setattr(views, "_verify_sns_message", raiser) pyramid_request.json_body = {"Type": "Notification"} with pytest.raises(HTTPServiceUnavailable): views.notification(pyramid_request) assert metrics.increment.calls == [ pretend.call("warehouse.ses.sns_verify.error") ]
def test_delivery(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) e = EmailFactory.create() em = EmailMessageFactory.create(to=e.email) event_id = str(uuid.uuid4()) db_request.json_body = { "Type": "Notification", "MessageId": event_id, "Message": json.dumps( { "notificationType": "Delivery", "mail": {"messageId": em.message_id}, "delivery": {"someData": "this is some data"}, } ), } resp = views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body) ] assert resp.status_code == 200 assert em.status is EmailStatuses.Delivered event = db_request.db.query(Event).filter(Event.event_id == event_id).one() assert event.email == em assert event.event_type is EventTypes.Delivery assert event.data == {"someData": "this is some data"}
def test_delivery(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) e = EmailFactory.create() em = EmailMessageFactory.create(to=e.email) event_id = str(uuid.uuid4()) db_request.json_body = { "Type": "Notification", "MessageId": event_id, "Message": json.dumps({ "notificationType": "Delivery", "mail": {"messageId": em.message_id}, "delivery": {"someData": "this is some data"}, }), } resp = views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body), ] assert resp.status_code == 200 assert em.status is EmailStatuses.Delivered event = ( db_request.db.query(Event) .filter(Event.event_id == event_id) .one()) assert event.email == em assert event.event_type is EventTypes.Delivery assert event.data == {"someData": "this is some data"}
def test_returns_400_when_unknown_message(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) db_request.json_body = { "Type": "Notification", "MessageId": str(uuid.uuid4()), "Message": json.dumps({"mail": {"messageId": str(uuid.uuid4())}}), } with pytest.raises(HTTPBadRequest, match="Unknown messageId"): views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body) ] assert db_request.db.query(EmailMessage).count() == 0 assert db_request.db.query(Event).count() == 0
def test_returns_200_existing_event(self, db_request, monkeypatch): verify_sns_message = pretend.call_recorder(lambda *a, **kw: None) monkeypatch.setattr(views, "_verify_sns_message", verify_sns_message) event = EventFactory.create() db_request.json_body = {"Type": "Notification", "MessageId": event.event_id} resp = views.notification(db_request) assert verify_sns_message.calls == [ pretend.call(db_request, db_request.json_body) ] assert resp.status_code == 200 assert db_request.db.query(Event).all() == [event]
def test_raises_when_invalid_type(self): request = pretend.stub(json_body={"Type": "SubscriptionConfirmation"}) with pytest.raises(HTTPBadRequest): views.notification(request)
def test_raises_when_invalid_type(self, pyramid_request): pyramid_request.json_body = {"Type": "SubscriptionConfirmation"} with pytest.raises(HTTPBadRequest): views.notification(pyramid_request)