mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-22 16:31:15 -05:00
Both service api tasks work fine if the object is unexpectedly deleted halfway through - they both check to see if the api details are still in the DB before trying to send the request.
207 lines
6.8 KiB
Python
207 lines
6.8 KiB
Python
import uuid
|
|
|
|
from tests.app.db import (
|
|
create_service_inbound_api,
|
|
create_service_callback_api
|
|
)
|
|
|
|
from app.models import ServiceInboundApi, ServiceCallbackApi
|
|
|
|
|
|
def test_create_service_inbound_api(admin_request, sample_service):
|
|
data = {
|
|
"url": "https://some_service/inbound-sms",
|
|
"bearer_token": "some-unique-string",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
resp_json = admin_request.post(
|
|
'service_callback.create_service_inbound_api',
|
|
service_id=sample_service.id,
|
|
_data=data,
|
|
_expected_status=201
|
|
)
|
|
|
|
resp_json = resp_json["data"]
|
|
assert resp_json["id"]
|
|
assert resp_json["service_id"] == str(sample_service.id)
|
|
assert resp_json["url"] == "https://some_service/inbound-sms"
|
|
assert resp_json["updated_by_id"] == str(sample_service.users[0].id)
|
|
assert resp_json["created_at"]
|
|
assert not resp_json["updated_at"]
|
|
|
|
|
|
def test_set_service_inbound_api_raises_404_when_service_does_not_exist(admin_request):
|
|
data = {
|
|
"url": "https://some_service/inbound-sms",
|
|
"bearer_token": "some-unique-string",
|
|
"updated_by_id": str(uuid.uuid4())
|
|
}
|
|
response = admin_request.post(
|
|
'service_callback.create_service_inbound_api',
|
|
service_id=uuid.uuid4(),
|
|
_data=data,
|
|
_expected_status=404
|
|
)
|
|
assert response['message'] == 'No result found'
|
|
|
|
|
|
def test_update_service_inbound_api_updates_url(admin_request, sample_service):
|
|
service_inbound_api = create_service_inbound_api(service=sample_service,
|
|
url="https://original_url.com")
|
|
|
|
data = {
|
|
"url": "https://another_url.com",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
|
|
response = admin_request.post(
|
|
'service_callback.update_service_inbound_api',
|
|
service_id=sample_service.id,
|
|
inbound_api_id=service_inbound_api.id,
|
|
_data=data
|
|
)
|
|
|
|
assert response["data"]["url"] == "https://another_url.com"
|
|
assert service_inbound_api.url == "https://another_url.com"
|
|
|
|
|
|
def test_update_service_inbound_api_updates_bearer_token(admin_request, sample_service):
|
|
service_inbound_api = create_service_inbound_api(service=sample_service,
|
|
bearer_token="some_super_secret")
|
|
data = {
|
|
"bearer_token": "different_token",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
|
|
admin_request.post(
|
|
'service_callback.update_service_inbound_api',
|
|
service_id=sample_service.id,
|
|
inbound_api_id=service_inbound_api.id,
|
|
_data=data
|
|
)
|
|
assert service_inbound_api.bearer_token == "different_token"
|
|
|
|
|
|
def test_fetch_service_inbound_api(admin_request, sample_service):
|
|
service_inbound_api = create_service_inbound_api(service=sample_service)
|
|
|
|
response = admin_request.get(
|
|
'service_callback.fetch_service_inbound_api',
|
|
service_id=sample_service.id,
|
|
inbound_api_id=service_inbound_api.id,
|
|
)
|
|
assert response["data"] == service_inbound_api.serialize()
|
|
|
|
|
|
def test_delete_service_inbound_api(admin_request, sample_service):
|
|
service_inbound_api = create_service_inbound_api(sample_service)
|
|
|
|
response = admin_request.delete(
|
|
'service_callback.remove_service_inbound_api',
|
|
service_id=sample_service.id,
|
|
inbound_api_id=service_inbound_api.id,
|
|
)
|
|
|
|
assert response is None
|
|
assert ServiceInboundApi.query.count() == 0
|
|
|
|
|
|
def test_create_service_callback_api(admin_request, sample_service):
|
|
data = {
|
|
"url": "https://some_service/delivery-receipt-endpoint",
|
|
"bearer_token": "some-unique-string",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
|
|
resp_json = admin_request.post(
|
|
'service_callback.create_service_callback_api',
|
|
service_id=sample_service.id,
|
|
_data=data,
|
|
_expected_status=201
|
|
)
|
|
|
|
resp_json = resp_json["data"]
|
|
assert resp_json["id"]
|
|
assert resp_json["service_id"] == str(sample_service.id)
|
|
assert resp_json["url"] == "https://some_service/delivery-receipt-endpoint"
|
|
assert resp_json["updated_by_id"] == str(sample_service.users[0].id)
|
|
assert resp_json["created_at"]
|
|
assert not resp_json["updated_at"]
|
|
|
|
|
|
def test_set_service_callback_api_raises_404_when_service_does_not_exist(admin_request, notify_db_session):
|
|
data = {
|
|
"url": "https://some_service/delivery-receipt-endpoint",
|
|
"bearer_token": "some-unique-string",
|
|
"updated_by_id": str(uuid.uuid4())
|
|
}
|
|
|
|
resp_json = admin_request.post(
|
|
'service_callback.create_service_callback_api',
|
|
service_id=uuid.uuid4(),
|
|
_data=data,
|
|
_expected_status=404
|
|
)
|
|
assert resp_json['message'] == 'No result found'
|
|
|
|
|
|
def test_update_service_callback_api_updates_url(admin_request, sample_service):
|
|
service_callback_api = create_service_callback_api(service=sample_service,
|
|
url="https://original_url.com")
|
|
|
|
data = {
|
|
"url": "https://another_url.com",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
|
|
resp_json = admin_request.post(
|
|
'service_callback.update_service_callback_api',
|
|
service_id=sample_service.id,
|
|
callback_api_id=service_callback_api.id,
|
|
_data=data
|
|
)
|
|
assert resp_json["data"]["url"] == "https://another_url.com"
|
|
assert service_callback_api.url == "https://another_url.com"
|
|
|
|
|
|
def test_update_service_callback_api_updates_bearer_token(admin_request, sample_service):
|
|
service_callback_api = create_service_callback_api(service=sample_service,
|
|
bearer_token="some_super_secret")
|
|
data = {
|
|
"bearer_token": "different_token",
|
|
"updated_by_id": str(sample_service.users[0].id)
|
|
}
|
|
|
|
admin_request.post(
|
|
'service_callback.update_service_callback_api',
|
|
service_id=sample_service.id,
|
|
callback_api_id=service_callback_api.id,
|
|
_data=data
|
|
)
|
|
assert service_callback_api.bearer_token == "different_token"
|
|
|
|
|
|
def test_fetch_service_callback_api(admin_request, sample_service):
|
|
service_callback_api = create_service_callback_api(service=sample_service)
|
|
|
|
response = admin_request.get(
|
|
'service_callback.fetch_service_callback_api',
|
|
service_id=sample_service.id,
|
|
callback_api_id=service_callback_api.id,
|
|
)
|
|
|
|
assert response["data"] == service_callback_api.serialize()
|
|
|
|
|
|
def test_delete_service_callback_api(admin_request, sample_service):
|
|
service_callback_api = create_service_callback_api(sample_service)
|
|
|
|
response = admin_request.delete(
|
|
'service_callback.remove_service_callback_api',
|
|
service_id=sample_service.id,
|
|
callback_api_id=service_callback_api.id,
|
|
)
|
|
|
|
assert response is None
|
|
assert ServiceCallbackApi.query.count() == 0
|