2016-09-22 11:56:26 +01:00
|
|
|
import pytest
|
|
|
|
|
|
2016-09-27 13:44:29 +01:00
|
|
|
from app.models import (
|
|
|
|
|
ServiceWhitelist,
|
2016-11-25 14:55:29 +00:00
|
|
|
Notification,
|
|
|
|
|
MOBILE_TYPE,
|
|
|
|
|
EMAIL_TYPE,
|
|
|
|
|
NOTIFICATION_CREATED,
|
|
|
|
|
NOTIFICATION_PENDING,
|
|
|
|
|
NOTIFICATION_FAILED,
|
|
|
|
|
NOTIFICATION_TECHNICAL_FAILURE,
|
|
|
|
|
NOTIFICATION_STATUS_TYPES_FAILED
|
|
|
|
|
)
|
2016-09-07 13:44:56 +01:00
|
|
|
|
|
|
|
|
|
2016-09-22 11:56:26 +01:00
|
|
|
@pytest.mark.parametrize('mobile_number', [
|
|
|
|
|
'07700 900678',
|
|
|
|
|
'+44 7700 900678'
|
|
|
|
|
])
|
|
|
|
|
def test_should_build_service_whitelist_from_mobile_number(mobile_number):
|
2016-09-27 13:44:29 +01:00
|
|
|
service_whitelist = ServiceWhitelist.from_string('service_id', MOBILE_TYPE, mobile_number)
|
2016-09-22 11:56:26 +01:00
|
|
|
|
2016-09-27 13:44:29 +01:00
|
|
|
assert service_whitelist.recipient == mobile_number
|
2016-09-22 11:56:26 +01:00
|
|
|
|
2016-09-22 17:18:52 +01:00
|
|
|
|
2016-09-22 11:56:26 +01:00
|
|
|
@pytest.mark.parametrize('email_address', [
|
|
|
|
|
'test@example.com'
|
|
|
|
|
])
|
|
|
|
|
def test_should_build_service_whitelist_from_email_address(email_address):
|
2016-09-27 13:44:29 +01:00
|
|
|
service_whitelist = ServiceWhitelist.from_string('service_id', EMAIL_TYPE, email_address)
|
2016-09-22 11:56:26 +01:00
|
|
|
|
2016-09-27 13:44:29 +01:00
|
|
|
assert service_whitelist.recipient == email_address
|
2016-09-22 11:56:26 +01:00
|
|
|
|
|
|
|
|
|
2016-09-27 13:44:29 +01:00
|
|
|
@pytest.mark.parametrize('contact, recipient_type', [
|
|
|
|
|
('', None),
|
|
|
|
|
('07700dsadsad', MOBILE_TYPE),
|
|
|
|
|
('gmail.com', EMAIL_TYPE)
|
2016-09-22 11:56:26 +01:00
|
|
|
])
|
2016-09-27 13:44:29 +01:00
|
|
|
def test_should_not_build_service_whitelist_from_invalid_contact(recipient_type, contact):
|
2016-09-22 11:56:26 +01:00
|
|
|
with pytest.raises(ValueError):
|
2016-09-27 13:44:29 +01:00
|
|
|
ServiceWhitelist.from_string('service_id', recipient_type, contact)
|
2016-11-25 14:55:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('initial_statuses, expected_statuses', [
|
|
|
|
|
# passing in single statuses as strings
|
|
|
|
|
(NOTIFICATION_FAILED, NOTIFICATION_STATUS_TYPES_FAILED),
|
|
|
|
|
(NOTIFICATION_CREATED, NOTIFICATION_CREATED),
|
|
|
|
|
(NOTIFICATION_TECHNICAL_FAILURE, NOTIFICATION_TECHNICAL_FAILURE),
|
|
|
|
|
# passing in lists containing single statuses
|
|
|
|
|
([NOTIFICATION_FAILED], NOTIFICATION_STATUS_TYPES_FAILED),
|
|
|
|
|
([NOTIFICATION_CREATED], [NOTIFICATION_CREATED]),
|
|
|
|
|
([NOTIFICATION_TECHNICAL_FAILURE], [NOTIFICATION_TECHNICAL_FAILURE]),
|
|
|
|
|
# passing in lists containing multiple statuses
|
|
|
|
|
([NOTIFICATION_FAILED, NOTIFICATION_CREATED], NOTIFICATION_STATUS_TYPES_FAILED + [NOTIFICATION_CREATED]),
|
|
|
|
|
([NOTIFICATION_CREATED, NOTIFICATION_PENDING], [NOTIFICATION_CREATED, NOTIFICATION_PENDING]),
|
|
|
|
|
([NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE], [NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE]),
|
|
|
|
|
# checking we don't end up with duplicates
|
|
|
|
|
(
|
|
|
|
|
[NOTIFICATION_FAILED, NOTIFICATION_CREATED, NOTIFICATION_TECHNICAL_FAILURE],
|
|
|
|
|
NOTIFICATION_STATUS_TYPES_FAILED + [NOTIFICATION_CREATED]
|
|
|
|
|
),
|
|
|
|
|
])
|
|
|
|
|
def test_status_conversion_handles_failed_statuses(initial_statuses, expected_statuses):
|
|
|
|
|
converted_statuses = Notification.substitute_status(initial_statuses)
|
|
|
|
|
assert len(converted_statuses) == len(expected_statuses)
|
|
|
|
|
assert set(converted_statuses) == set(expected_statuses)
|