mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-05 06:00:53 -04:00
Merge pull request #1341 from alphagov/inbound-number-is-the-default-when-only-one
Do not create a new SMS sender when allocating an inbound number
This commit is contained in:
@@ -6,9 +6,12 @@ from sqlalchemy.exc import SQLAlchemyError
|
||||
from app.dao.service_sms_sender_dao import (
|
||||
insert_or_update_service_sms_sender,
|
||||
dao_add_sms_sender_for_service,
|
||||
dao_update_service_sms_sender, dao_get_service_sms_senders_by_id, dao_get_sms_senders_by_service_id)
|
||||
dao_update_service_sms_sender,
|
||||
dao_get_service_sms_senders_by_id,
|
||||
dao_get_sms_senders_by_service_id,
|
||||
update_existing_sms_sender_with_inbound_number)
|
||||
from app.models import ServiceSmsSender
|
||||
from tests.app.db import create_service
|
||||
from tests.app.db import create_service, create_inbound_number
|
||||
|
||||
|
||||
def test_update_service_sms_sender_updates_existing_row(notify_db_session):
|
||||
@@ -145,3 +148,27 @@ def test_dao_update_service_sms_sender_raises_exception_when_no_default_after_up
|
||||
service_sms_sender_id=sms_sender.id,
|
||||
is_default=False,
|
||||
sms_sender="updated")
|
||||
|
||||
|
||||
def test_update_existing_sms_sender_with_inbound_number(notify_db_session):
|
||||
service = create_service(sms_sender='testing')
|
||||
inbound_number = create_inbound_number(number='12345', service_id=service.id)
|
||||
|
||||
existing_sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).one()
|
||||
sms_sender = update_existing_sms_sender_with_inbound_number(
|
||||
service_sms_sender=existing_sms_sender, sms_sender=inbound_number.number, inbound_number_id=inbound_number.id)
|
||||
|
||||
assert sms_sender.inbound_number_id == inbound_number.id
|
||||
assert sms_sender.sms_sender == inbound_number.number
|
||||
assert sms_sender.is_default
|
||||
|
||||
|
||||
def test_update_existing_sms_sender_with_inbound_number_raises_exception_if_inbound_number_does_not_exist(
|
||||
notify_db_session
|
||||
):
|
||||
service = create_service(sms_sender='testing')
|
||||
existing_sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).one()
|
||||
with pytest.raises(expected_exception=SQLAlchemyError):
|
||||
update_existing_sms_sender_with_inbound_number(service_sms_sender=existing_sms_sender,
|
||||
sms_sender='blah',
|
||||
inbound_number_id=uuid.uuid4())
|
||||
|
||||
@@ -2602,12 +2602,13 @@ def test_add_service_sms_sender_can_add_multiple_senders(client, notify_db_sessi
|
||||
assert len(senders) == 2
|
||||
|
||||
|
||||
def test_add_service_sms_sender_when_it_is_an_inbound_number(client, notify_db_session):
|
||||
service = create_service()
|
||||
def test_add_service_sms_sender_when_it_is_an_inbound_number_updates_the_only_existing_sms_sender(
|
||||
client, notify_db_session):
|
||||
service = create_service(sms_sender='GOVUK')
|
||||
inbound_number = create_inbound_number(number='12345')
|
||||
data = {
|
||||
"sms_sender": str(inbound_number.id),
|
||||
"is_default": False,
|
||||
"is_default": True,
|
||||
"inbound_number_id": str(inbound_number.id)
|
||||
}
|
||||
response = client.post('/service/{}/sms-sender'.format(service.id),
|
||||
@@ -2620,7 +2621,36 @@ def test_add_service_sms_sender_when_it_is_an_inbound_number(client, notify_db_s
|
||||
resp_json = json.loads(response.get_data(as_text=True))
|
||||
assert resp_json['sms_sender'] == inbound_number.number
|
||||
assert resp_json['inbound_number_id'] == str(inbound_number.id)
|
||||
assert not resp_json['is_default']
|
||||
assert resp_json['is_default']
|
||||
|
||||
senders = ServiceSmsSender.query.all()
|
||||
assert len(senders) == 1
|
||||
|
||||
|
||||
def test_add_service_sms_sender_when_it_is_an_inbound_number_inserts_new_sms_sender_when_more_than_one(
|
||||
client, notify_db_session):
|
||||
service = create_service(sms_sender='GOVUK')
|
||||
create_service_sms_sender(service=service, sms_sender="second", is_default=False)
|
||||
inbound_number = create_inbound_number(number='12345')
|
||||
data = {
|
||||
"sms_sender": str(inbound_number.id),
|
||||
"is_default": True,
|
||||
"inbound_number_id": str(inbound_number.id)
|
||||
}
|
||||
response = client.post('/service/{}/sms-sender'.format(service.id),
|
||||
data=json.dumps(data),
|
||||
headers=[('Content-Type', 'application/json'), create_authorization_header()]
|
||||
)
|
||||
assert response.status_code == 201
|
||||
updated_number = InboundNumber.query.get(inbound_number.id)
|
||||
assert updated_number.service_id == service.id
|
||||
resp_json = json.loads(response.get_data(as_text=True))
|
||||
assert resp_json['sms_sender'] == inbound_number.number
|
||||
assert resp_json['inbound_number_id'] == str(inbound_number.id)
|
||||
assert resp_json['is_default']
|
||||
|
||||
senders = ServiceSmsSender.query.filter_by(service_id=service.id).all()
|
||||
assert len(senders) == 3
|
||||
|
||||
|
||||
def test_add_service_sms_sender_switches_default(client, notify_db_session):
|
||||
|
||||
Reference in New Issue
Block a user