Merge pull request #1200 from alphagov/ken-refactor-inbound_numbers

Refactor inbound numbers
This commit is contained in:
kentsanggds
2017-08-25 13:27:16 +01:00
committed by GitHub
5 changed files with 48 additions and 75 deletions

View File

@@ -30,7 +30,7 @@ from app.dao.services_dao import (
dao_suspend_service,
dao_resume_service,
dao_fetch_active_users_for_service,
dao_fetch_services_by_sms_sender
dao_fetch_service_by_inbound_number
)
from app.dao.service_permissions_dao import dao_add_service_permission, dao_remove_service_permission
from app.dao.users_dao import save_model_user
@@ -892,76 +892,53 @@ def test_dao_fetch_active_users_for_service_returns_active_only(notify_db, notif
assert len(users) == 1
def test_dao_fetch_services_by_sms_sender_with_inbound_number(notify_db_session):
def test_dao_fetch_service_by_inbound_number_with_inbound_number(notify_db_session):
foo1 = create_service(service_name='a', sms_sender='1')
foo2 = create_service(service_name='b', sms_sender='2')
bar = create_service(service_name='c', sms_sender='3')
create_inbound_number('1')
create_inbound_number('1', service_id=foo1.id)
create_inbound_number('2')
create_inbound_number('3')
services = dao_fetch_services_by_sms_sender('1')
service = dao_fetch_service_by_inbound_number('1')
assert len(services) == 1
assert foo1.id == services[0].id
assert foo1.id == service.id
def test_dao_fetch_services_by_sms_sender_with_inbound_number_not_set(notify_db_session):
def test_dao_fetch_service_by_inbound_number_with_inbound_number_not_set(notify_db_session):
create_inbound_number('1')
services = dao_fetch_services_by_sms_sender('1')
service = dao_fetch_service_by_inbound_number('1')
assert services == []
assert service is None
def test_dao_fetch_services_by_sms_sender_when_inbound_number_set(notify_db_session):
service = create_service(service_name='a', sms_sender=None)
service = create_service(service_name='b')
inbound_number = create_inbound_number('1', service_id=service.id)
def test_dao_fetch_service_by_inbound_number_when_inbound_number_set(notify_db_session):
service_1 = create_service(service_name='a', sms_sender=None)
service_2 = create_service(service_name='b')
inbound_number = create_inbound_number('1', service_id=service_1.id)
services = dao_fetch_services_by_sms_sender('1')
service = dao_fetch_service_by_inbound_number('1')
assert len(services) == 1
assert services[0].id == service.id
assert service.id == service_1.id
def test_dao_fetch_services_by_sms_sender_when_inbound_number_set_and_sms_sender_same(notify_db_session):
service = create_service(service_name='a', sms_sender=None)
service = create_service(service_name='b', sms_sender='1')
inbound_number = create_inbound_number('1', service_id=service.id)
services = dao_fetch_services_by_sms_sender('1')
assert len(services) == 1
assert services[0].id == service.id
def test_dao_fetch_services_by_sms_sender_when_inbound_number_not_set_gets_sms_sender(notify_db_session):
service = create_service(service_name='a', sms_sender=None)
service = create_service(service_name='b', sms_sender='testing_gov')
inbound_number = create_inbound_number('1', service_id=service.id)
services = dao_fetch_services_by_sms_sender('testing_gov')
assert services == []
def test_dao_fetch_services_by_sms_sender_with_unknown_number(notify_db_session):
def test_dao_fetch_service_by_inbound_number_with_unknown_number(notify_db_session):
service = create_service(service_name='a', sms_sender=None)
inbound_number = create_inbound_number('1', service_id=service.id)
services = dao_fetch_services_by_sms_sender('9')
service = dao_fetch_service_by_inbound_number('9')
assert services == []
assert service is None
def test_dao_fetch_services_by_sms_sender_with_inactive_number_returns_empty(notify_db_session):
def test_dao_fetch_service_by_inbound_number_with_inactive_number_returns_empty(notify_db_session):
service = create_service(service_name='a', sms_sender=None)
inbound_number = create_inbound_number('1', service_id=service.id, active=False)
services = dao_fetch_services_by_sms_sender('1')
service = dao_fetch_service_by_inbound_number('1')
assert services == []
assert service is None
def test_dao_allocating_inbound_number_shows_on_service(notify_db_session, sample_inbound_numbers):

View File

@@ -71,11 +71,11 @@ def create_service(
sms_sender=sms_sender,
)
dao_create_service(service, service.created_by, service_id, service_permissions=service_permissions)
if do_create_inbound_number and INBOUND_SMS_TYPE in service_permissions:
create_inbound_number(number=sms_sender, service_id=service.id)
dao_create_service(service, service.created_by, service_id, service_permissions=service_permissions)
service.active = active
service.research_mode = research_mode

View File

@@ -5,7 +5,7 @@ from unittest.mock import call
import pytest
from flask import json
from app.dao.services_dao import dao_fetch_services_by_sms_sender
from app.dao.services_dao import dao_fetch_service_by_inbound_number
from app.notifications.receive_notifications import (
format_mmg_message,
format_mmg_datetime,
@@ -85,7 +85,12 @@ def test_receive_notification_from_firetext_without_permissions_does_not_persist
permissions
):
service = create_service(sms_sender='07111111111', service_permissions=permissions)
mocked = mocker.patch("app.notifications.receive_notifications.tasks.send_inbound_sms_to_service.apply_async")
mocker.patch("app.notifications.receive_notifications.dao_fetch_service_by_inbound_number",
return_value=service)
mocked_send_inbound_sms = mocker.patch(
"app.notifications.receive_notifications.tasks.send_inbound_sms_to_service.apply_async")
mocked_has_permissions = mocker.patch(
"app.notifications.receive_notifications.has_inbound_sms_permissions", return_value=False)
data = "source=07999999999&destination=07111111111&message=this is a message&time=2017-01-01 12:00:00"
response = client.post(
@@ -99,7 +104,7 @@ def test_receive_notification_from_firetext_without_permissions_does_not_persist
assert result['status'] == 'ok'
assert InboundSms.query.count() == 0
assert mocked.called is False
assert not mocked_send_inbound_sms.called
def test_receive_notification_without_permissions_does_not_create_inbound_even_with_inbound_number_set(