remove broadcast-related code, except migrations

This commit is contained in:
stvnrlly
2022-10-04 15:28:27 +00:00
parent 36ce2f7830
commit 57f4df8ed1
58 changed files with 14 additions and 6600 deletions

View File

@@ -18,7 +18,6 @@ from app.dao.services_dao import (
from app.dao.templates_dao import dao_redact_template
from app.dao.users_dao import save_model_user
from app.models import (
BROADCAST_TYPE,
EMAIL_AUTH_TYPE,
EMAIL_TYPE,
INBOUND_SMS_TYPE,
@@ -38,7 +37,6 @@ from app.models import (
Notification,
Permission,
Service,
ServiceBroadcastSettings,
ServiceEmailReplyTo,
ServiceLetterContact,
ServicePermission,
@@ -250,16 +248,12 @@ def test_get_service_by_id(admin_request, sample_service):
assert not json_resp['data']['research_mode']
assert json_resp['data']['email_branding'] is None
assert json_resp['data']['prefix_sms'] is True
assert json_resp['data']['allowed_broadcast_provider'] is None
assert json_resp['data']['broadcast_channel'] is None
assert set(json_resp['data'].keys()) == {
'active',
'allowed_broadcast_provider',
'billing_contact_email_addresses',
'billing_contact_names',
'billing_reference',
'broadcast_channel',
'consent_to_research',
'contact_link',
'count_as_live',
@@ -289,28 +283,6 @@ def test_get_service_by_id(admin_request, sample_service):
}
@pytest.mark.parametrize('broadcast_channel,allowed_broadcast_provider', (
('operator', 'all'),
('test', 'all'),
('severe', 'all'),
('government', 'all'),
('operator', 'o2'),
('test', 'ee'),
('severe', 'three'),
('government', 'vodafone'),
))
def test_get_service_by_id_for_broadcast_service_returns_broadcast_keys(
notify_db_session, admin_request, sample_broadcast_service, broadcast_channel, allowed_broadcast_provider
):
sample_broadcast_service.broadcast_channel = broadcast_channel
sample_broadcast_service.allowed_broadcast_provider = allowed_broadcast_provider
json_resp = admin_request.get('service.get_service_by_id', service_id=sample_broadcast_service.id)
assert json_resp['data']['id'] == str(sample_broadcast_service.id)
assert json_resp['data']['allowed_broadcast_provider'] == allowed_broadcast_provider
assert json_resp['data']['broadcast_channel'] == broadcast_channel
@pytest.mark.parametrize('detailed', [True, False])
def test_get_service_by_id_returns_organisation_type(admin_request, sample_service, detailed):
json_resp = admin_request.get('service.get_service_by_id', service_id=sample_service.id, detailed=detailed)
@@ -1000,7 +972,6 @@ def test_update_service_permissions_will_add_service_permissions(client, sample_
(LETTER_TYPE),
(INBOUND_SMS_TYPE),
(EMAIL_AUTH_TYPE),
(BROADCAST_TYPE), # TODO: remove this ability to set broadcast permission this way
]
)
def test_add_service_permission_will_add_permission(client, service_with_no_permissions, permission_to_add):
@@ -3728,496 +3699,3 @@ def test_get_returned_letter(admin_request, sample_letter_template):
assert not response[4]['original_file_name']
assert not response[4]['job_row_number']
assert response[4]['uploaded_letter_file_name'] == 'filename.pdf'
@pytest.mark.parametrize('channel', ["operator", "test", "severe", "government"])
def test_set_as_broadcast_service_sets_broadcast_channel(
admin_request, sample_service, broadcast_organisation, channel
):
assert sample_service.service_broadcast_settings is None
data = {
'broadcast_channel': channel,
'service_mode': 'live',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample service'
assert result['data']['broadcast_channel'] == channel
records = ServiceBroadcastSettings.query.filter_by(service_id=sample_service.id).all()
assert len(records) == 1
assert records[0].service_id == sample_service.id
assert records[0].channel == channel
def test_set_as_broadcast_service_updates_channel_for_broadcast_service(
admin_request, sample_broadcast_service
):
assert sample_broadcast_service.broadcast_channel == "severe"
data = {
'broadcast_channel': "test",
'service_mode': 'training',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['broadcast_channel'] == "test"
records = ServiceBroadcastSettings.query.filter_by(service_id=sample_broadcast_service.id).all()
assert len(records) == 1
assert records[0].service_id == sample_broadcast_service.id
assert records[0].channel == "test"
@pytest.mark.parametrize('channel', ["extreme", "exercise", "random", ""])
def test_set_as_broadcast_service_rejects_unknown_channels(
admin_request, sample_service, broadcast_organisation, channel
):
data = {
'broadcast_channel': channel,
'service_mode': 'live',
'provider_restriction': "all",
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
def test_set_as_broadcast_service_rejects_if_no_channel(
admin_request, notify_db_session, sample_service, broadcast_organisation
):
data = {
'service_mode': 'training',
'provider_restriction': "all",
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
@pytest.mark.parametrize('starting_permissions, ending_permissions', (
([], [BROADCAST_TYPE]),
([EMAIL_AUTH_TYPE], [BROADCAST_TYPE, EMAIL_AUTH_TYPE]),
([p for p in SERVICE_PERMISSION_TYPES if p != BROADCAST_TYPE], [BROADCAST_TYPE, EMAIL_AUTH_TYPE]),
))
def test_set_as_broadcast_service_gives_broadcast_permission_and_removes_other_channel_permissions(
admin_request, broadcast_organisation, starting_permissions, ending_permissions
):
sample_service = create_service(service_permissions=starting_permissions)
data = {
'broadcast_channel': "severe",
'service_mode': 'training',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert set(result['data']['permissions']) == set(ending_permissions)
permissions = ServicePermission.query.filter_by(service_id=sample_service.id).all()
assert set([p.permission for p in permissions]) == set(ending_permissions)
@pytest.mark.parametrize('has_email_auth, ending_permissions', (
(False, [BROADCAST_TYPE]),
(True, [BROADCAST_TYPE, EMAIL_AUTH_TYPE]),
))
def test_set_as_broadcast_service_maintains_broadcast_permission_for_existing_broadcast_service(
admin_request, sample_broadcast_service, has_email_auth, ending_permissions
):
if has_email_auth:
service_permission = ServicePermission(service_id=sample_broadcast_service.id, permission=EMAIL_AUTH_TYPE)
sample_broadcast_service.permissions.append(service_permission)
current_permissions = [p.permission for p in sample_broadcast_service.permissions]
assert set(current_permissions) == set(ending_permissions)
data = {
'broadcast_channel': "severe",
'service_mode': 'live',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
)
assert set(result['data']['permissions']) == set(ending_permissions)
permissions = ServicePermission.query.filter_by(service_id=sample_broadcast_service.id).all()
assert set([p.permission for p in permissions]) == set(ending_permissions)
def test_set_as_broadcast_service_sets_count_as_live_to_false(
admin_request, sample_service, broadcast_organisation
):
assert sample_service.count_as_live is True
data = {
'broadcast_channel': "severe",
'service_mode': 'live',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert result['data']['count_as_live'] is False
service_from_db = Service.query.filter_by(id=sample_service.id).all()[0]
assert service_from_db.count_as_live is False
def test_set_as_broadcast_service_sets_service_org_to_broadcast_org(
admin_request, sample_service, broadcast_organisation
):
assert sample_service.organisation_id != current_app.config['BROADCAST_ORGANISATION_ID']
data = {
'broadcast_channel': "severe",
'service_mode': 'training',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert result['data']['organisation'] == current_app.config['BROADCAST_ORGANISATION_ID']
service_from_db = Service.query.filter_by(id=sample_service.id).all()[0]
assert str(service_from_db.organisation_id) == current_app.config['BROADCAST_ORGANISATION_ID']
def test_set_as_broadcast_service_does_not_error_if_run_on_a_service_that_is_already_a_broadcast_service(
admin_request, sample_service, broadcast_organisation
):
data = {
'broadcast_channel': "severe",
'service_mode': "live",
'provider_restriction': "all",
}
for _ in range(2):
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
@freeze_time('2021-02-02')
def test_set_as_broadcast_service_sets_service_to_live_mode(
admin_request, notify_db_session, sample_service, broadcast_organisation
):
sample_service.restricted = True
notify_db_session.add(sample_service)
notify_db_session.commit()
assert sample_service.restricted is True
assert sample_service.go_live_at is None
data = {
'broadcast_channel': 'severe',
'service_mode': 'live',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample service'
assert result['data']['restricted'] is False
assert result['data']['go_live_at'] == '2021-02-02 00:00:00.000000'
def test_set_as_broadcast_service_doesnt_override_existing_go_live_at(
admin_request, notify_db_session, sample_broadcast_service
):
sample_broadcast_service.restricted = False
sample_broadcast_service.go_live_at = datetime(2021, 1, 1)
notify_db_session.add(sample_broadcast_service)
notify_db_session.commit()
assert sample_broadcast_service.restricted is False
assert sample_broadcast_service.go_live_at is not None
data = {
'broadcast_channel': 'severe',
'service_mode': 'live',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['restricted'] is False
assert result['data']['go_live_at'] == '2021-01-01 00:00:00.000000'
def test_set_as_broadcast_service_sets_service_to_training_mode(
admin_request, notify_db_session, sample_broadcast_service
):
sample_broadcast_service.restricted = False
sample_broadcast_service.go_live_at = datetime(2021, 1, 1)
notify_db_session.add(sample_broadcast_service)
notify_db_session.commit()
assert sample_broadcast_service.restricted is False
assert sample_broadcast_service.go_live_at is not None
data = {
'broadcast_channel': 'severe',
'service_mode': 'training',
'provider_restriction': "all",
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['restricted'] is True
assert result['data']['go_live_at'] is None
@pytest.mark.parametrize('service_mode', ["testing", ""])
def test_set_as_broadcast_service_rejects_unknown_service_mode(
admin_request, sample_service, broadcast_organisation, service_mode
):
data = {
'broadcast_channel': 'severe',
'service_mode': service_mode,
'provider_restriction': "all",
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
def test_set_as_broadcast_service_rejects_if_no_service_mode(
admin_request, sample_service, broadcast_organisation
):
data = {
'broadcast_channel': 'severe',
'provider_restriction': "all",
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
@pytest.mark.parametrize('provider', ["all", "three", "ee", "vodafone", "o2"])
def test_set_as_broadcast_service_sets_mobile_provider_restriction(
admin_request, sample_service, broadcast_organisation, provider
):
assert sample_service.service_broadcast_settings is None
data = {
'broadcast_channel': 'severe',
'service_mode': 'live',
'provider_restriction': provider
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample service'
assert result['data']['allowed_broadcast_provider'] == provider
records = ServiceBroadcastSettings.query.filter_by(service_id=sample_service.id).all()
assert len(records) == 1
assert records[0].service_id == sample_service.id
assert records[0].provider == provider
@pytest.mark.parametrize('provider', ["all", "vodafone"])
def test_set_as_broadcast_service_updates_mobile_provider_restriction(
admin_request, notify_db_session, sample_broadcast_service, provider
):
sample_broadcast_service.service_broadcast_settings.provider = "o2"
notify_db_session.add(sample_broadcast_service)
notify_db_session.commit()
assert sample_broadcast_service.service_broadcast_settings.provider == "o2"
data = {
'broadcast_channel': 'severe',
'service_mode': 'live',
'provider_restriction': provider
}
result = admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
)
assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['allowed_broadcast_provider'] == provider
records = ServiceBroadcastSettings.query.filter_by(service_id=sample_broadcast_service.id).all()
assert len(records) == 1
assert records[0].service_id == sample_broadcast_service.id
assert records[0].provider == provider
@pytest.mark.parametrize('provider', ["three, o2", "giffgaff", "", "None"])
def test_set_as_broadcast_service_rejects_unknown_provider_restriction(
admin_request, sample_service, broadcast_organisation, provider
):
data = {
'broadcast_channel': 'test',
'service_mode': 'live',
'provider_restriction': provider
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
def test_set_as_broadcast_service_errors_if_no_mobile_provider_restriction(
admin_request, sample_service, broadcast_organisation
):
data = {
'broadcast_channel': 'severe',
'service_mode': 'live',
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
_expected_status=400,
)
def test_set_as_broadcast_service_updates_services_history(
admin_request, sample_service, broadcast_organisation
):
old_history_records = Service.get_history_model().query.filter_by(id=sample_service.id).all()
data = {
'broadcast_channel': 'test',
'service_mode': 'live',
'provider_restriction': "all",
}
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
)
new_history_records = Service.get_history_model().query.filter_by(id=sample_service.id).all()
assert len(new_history_records) == len(old_history_records) + 1
def test_set_as_broadcast_service_removes_user_permissions(
admin_request,
broadcast_organisation,
sample_service,
sample_service_full_permissions,
sample_invited_user,
):
service_user = sample_service.users[0]
# make the user a member of a second service
dao_add_user_to_service(
sample_service_full_permissions,
service_user,
permissions=[
Permission(service_id=sample_service_full_permissions.id,
user_id=service_user.id,
permission='send_emails')
]
)
assert len(service_user.get_permissions(service_id=sample_service.id)) == 8
assert len(sample_invited_user.get_permissions()) == 3
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data={
'broadcast_channel': 'test',
'service_mode': 'live',
'provider_restriction': 'ee'
}
)
# The user permissions for the broadcast service (apart from 'view_activity') get removed
assert service_user.get_permissions(service_id=sample_service.id) == ['view_activity']
# Permissions for users invited to the broadcast service (apart from 'view_activity') get removed
assert sample_invited_user.permissions == 'view_activity'
# Permissions for other services remain
assert service_user.get_permissions(service_id=sample_service_full_permissions.id) == ['send_emails']
@freeze_time('2021-12-21')
def test_set_as_broadcast_service_revokes_api_keys(
admin_request,
broadcast_organisation,
sample_service,
sample_service_full_permissions,
):
api_key_1 = create_api_key(service=sample_service)
api_key_2 = create_api_key(service=sample_service)
api_key_3 = create_api_key(service=sample_service_full_permissions)
api_key_2.expiry_date = datetime.utcnow() - timedelta(days=365)
admin_request.post(
'service.set_as_broadcast_service',
service_id=sample_service.id,
_data={
'broadcast_channel': 'government',
'service_mode': 'live',
'provider_restriction': 'all',
}
)
# This key should have a new expiry date
assert api_key_1.expiry_date.isoformat().startswith('2021-12-21')
# This key keeps its old expiry date
assert api_key_2.expiry_date.isoformat().startswith('2020-12-21')
# This key is from a different service
assert api_key_3.expiry_date is None