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:
Rebecca Law
2017-10-25 14:02:04 +01:00
committed by GitHub
4 changed files with 86 additions and 9 deletions

View File

@@ -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())

View File

@@ -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):