Improve tests and remove unneeded code

Some of the fixtures weren't needed so have been removed.

I've also moved from using `client.post` to using `admin_request.post`
which saves a bit of code too.

Also one small assertion tidied up to make it a bit stronger regarding
permissions.
This commit is contained in:
David McDonald
2021-02-12 09:51:05 +00:00
parent 4f7afa3fbe
commit d846ed79d2

View File

@@ -3653,7 +3653,7 @@ def test_get_returned_letter(admin_request, sample_letter_template):
@pytest.mark.parametrize('channel', ["test", "severe"]) @pytest.mark.parametrize('channel', ["test", "severe"])
def test_set_as_broadcast_service_sets_broadcast_channel( def test_set_as_broadcast_service_sets_broadcast_channel(
client, notify_db, sample_service, broadcast_organisation, channel admin_request, sample_service, broadcast_organisation, channel
): ):
assert sample_service.service_broadcast_settings is None assert sample_service.service_broadcast_settings is None
data = { data = {
@@ -3662,13 +3662,11 @@ def test_set_as_broadcast_service_sets_broadcast_channel(
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( result = admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample service' assert result['data']['name'] == 'Sample service'
assert result['data']['broadcast_channel'] == channel assert result['data']['broadcast_channel'] == channel
@@ -3679,21 +3677,21 @@ def test_set_as_broadcast_service_sets_broadcast_channel(
def test_set_as_broadcast_service_updates_channel_for_broadcast_service( def test_set_as_broadcast_service_updates_channel_for_broadcast_service(
client, notify_db, sample_broadcast_service, broadcast_organisation admin_request, sample_broadcast_service
): ):
assert sample_broadcast_service.broadcast_channel == "severe" assert sample_broadcast_service.broadcast_channel == "severe"
resp = client.post( data = {
'/service/{}/set-as-broadcast-service'.format(sample_broadcast_service.id), 'broadcast_channel': "test",
data=json.dumps({ 'service_mode': 'training',
'broadcast_channel': "test", 'provider_restriction': None,
'service_mode': 'training', }
'provider_restriction': None,
}), result = admin_request.post(
headers=[('Content-Type', 'application/json'), create_authorization_header()] 'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample broadcast service' assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['broadcast_channel'] == "test" assert result['data']['broadcast_channel'] == "test"
@@ -3705,7 +3703,7 @@ def test_set_as_broadcast_service_updates_channel_for_broadcast_service(
@pytest.mark.parametrize('channel', ["government", "extreme", "exercise", "random", ""]) @pytest.mark.parametrize('channel', ["government", "extreme", "exercise", "random", ""])
def test_set_as_broadcast_service_rejects_unknown_channels( def test_set_as_broadcast_service_rejects_unknown_channels(
client, notify_db, sample_service, broadcast_organisation, channel admin_request, sample_service, broadcast_organisation, channel
): ):
data = { data = {
'broadcast_channel': channel, 'broadcast_channel': channel,
@@ -3713,46 +3711,48 @@ def test_set_as_broadcast_service_rejects_unknown_channels(
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
assert resp.status_code == 400
def test_set_as_broadcast_service_rejects_if_no_channel(client, notify_db, sample_service, broadcast_organisation): def test_set_as_broadcast_service_rejects_if_no_channel(
admin_request, notify_db, sample_service, broadcast_organisation
):
data = { data = {
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
assert resp.status_code == 400
def test_set_as_broadcast_service_gives_broadcast_permission_and_removes_other_permissions( def test_set_as_broadcast_service_gives_broadcast_permission_and_removes_other_permissions(
client, notify_db, sample_service, broadcast_organisation admin_request, sample_service, broadcast_organisation
): ):
current_permissions = [p.permission for p in sample_service.permissions] current_permissions = [p.permission for p in sample_service.permissions]
assert len(current_permissions) > 0 assert len(current_permissions) > 0
assert current_permissions != [BROADCAST_TYPE] assert BROADCAST_TYPE not in current_permissions
resp = client.post( data = {
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'broadcast_channel': "severe",
data=json.dumps({ 'service_mode': 'training',
'broadcast_channel': "severe", 'provider_restriction': None,
'service_mode': 'training', }
'provider_restriction': None,
}), result = admin_request.post(
headers=[('Content-Type', 'application/json'), create_authorization_header()] 'service.set_as_broadcast_service',
service_id=sample_service.id,
_data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['permissions'] == [BROADCAST_TYPE] assert result['data']['permissions'] == [BROADCAST_TYPE]
permissions = ServicePermission.query.filter_by(service_id=sample_service.id).all() permissions = ServicePermission.query.filter_by(service_id=sample_service.id).all()
@@ -3760,62 +3760,64 @@ def test_set_as_broadcast_service_gives_broadcast_permission_and_removes_other_p
def test_set_as_broadcast_service_maintains_broadcast_permission_for_existing_broadcast_service( def test_set_as_broadcast_service_maintains_broadcast_permission_for_existing_broadcast_service(
client, notify_db, sample_broadcast_service, broadcast_organisation admin_request, sample_broadcast_service
): ):
current_permissions = [p.permission for p in sample_broadcast_service.permissions] current_permissions = [p.permission for p in sample_broadcast_service.permissions]
assert current_permissions == [BROADCAST_TYPE] assert current_permissions == [BROADCAST_TYPE]
resp = client.post( data = {
'/service/{}/set-as-broadcast-service'.format(sample_broadcast_service.id), 'broadcast_channel': "severe",
data=json.dumps({ 'service_mode': 'live',
'broadcast_channel': "severe", 'provider_restriction': None,
'service_mode': 'live', }
'provider_restriction': None,
}), result = admin_request.post(
headers=[('Content-Type', 'application/json'), create_authorization_header()] 'service.set_as_broadcast_service',
service_id=sample_broadcast_service.id,
_data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['permissions'] == [BROADCAST_TYPE] assert result['data']['permissions'] == [BROADCAST_TYPE]
permissions = ServicePermission.query.filter_by(service_id=sample_broadcast_service.id).all() permissions = ServicePermission.query.filter_by(service_id=sample_broadcast_service.id).all()
assert [p.permission for p in permissions] == [BROADCAST_TYPE] assert [p.permission for p in permissions] == [BROADCAST_TYPE]
def test_set_as_broadcast_service_sets_count_as_live_to_false(client, notify_db, sample_service, broadcast_organisation): def test_set_as_broadcast_service_sets_count_as_live_to_false(
admin_request, sample_service, broadcast_organisation
):
assert sample_service.count_as_live == True assert sample_service.count_as_live == True
resp = client.post( data = {
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'broadcast_channel': "severe",
data=json.dumps({ 'service_mode': 'live',
'broadcast_channel': "severe", 'provider_restriction': None,
'service_mode': 'live', }
'provider_restriction': None, result = admin_request.post(
}), 'service.set_as_broadcast_service',
headers=[('Content-Type', 'application/json'), create_authorization_header()] service_id=sample_service.id,
_data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['count_as_live'] == False assert result['data']['count_as_live'] == False
service_from_db = Service.query.filter_by(id=sample_service.id).all()[0] service_from_db = Service.query.filter_by(id=sample_service.id).all()[0]
assert service_from_db.count_as_live == False assert service_from_db.count_as_live == False
def test_set_as_broadcast_service_sets_service_org_to_broadcast_org(client, notify_db, sample_service, broadcast_organisation): 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'] assert sample_service.organisation_id != current_app.config['BROADCAST_ORGANISATION_ID']
resp = client.post( data = {
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'broadcast_channel': "severe",
data=json.dumps({ 'service_mode': 'training',
'broadcast_channel': "severe", 'provider_restriction': None,
'service_mode': 'training', }
'provider_restriction': None, result = admin_request.post(
}), 'service.set_as_broadcast_service',
headers=[('Content-Type', 'application/json'), create_authorization_header()] service_id=sample_service.id,
_data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['organisation'] == current_app.config['BROADCAST_ORGANISATION_ID'] assert result['data']['organisation'] == current_app.config['BROADCAST_ORGANISATION_ID']
service_from_db = Service.query.filter_by(id=sample_service.id).all()[0] service_from_db = Service.query.filter_by(id=sample_service.id).all()[0]
@@ -3823,24 +3825,23 @@ def test_set_as_broadcast_service_sets_service_org_to_broadcast_org(client, noti
def test_set_as_broadcast_service_does_not_error_if_run_on_a_service_that_is_already_a_broadcast_service( def test_set_as_broadcast_service_does_not_error_if_run_on_a_service_that_is_already_a_broadcast_service(
client, notify_db, sample_service, broadcast_organisation admin_request, sample_service, broadcast_organisation
): ):
data = {
'broadcast_channel': "severe",
'service_mode': "live",
'provider_restriction': None,
}
for _ in range(2): for _ in range(2):
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps({ service_id=sample_service.id,
'broadcast_channel': "severe", _data=data,
'service_mode': "live",
'provider_restriction': None,
}),
headers=[('Content-Type', 'application/json'), create_authorization_header()]
) )
result = resp.json
assert resp.status_code == 200
def test_set_as_broadcast_service_sets_service_to_live_mode( def test_set_as_broadcast_service_sets_service_to_live_mode(
client, notify_db, sample_service, broadcast_organisation admin_request, notify_db, sample_service, broadcast_organisation
): ):
sample_service.restricted = True sample_service.restricted = True
notify_db.session.add(sample_service) notify_db.session.add(sample_service)
@@ -3852,19 +3853,17 @@ def test_set_as_broadcast_service_sets_service_to_live_mode(
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( result = admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample service' assert result['data']['name'] == 'Sample service'
assert result['data']['restricted'] == False assert result['data']['restricted'] == False
def test_set_as_broadcast_service_sets_service_to_training_mode( def test_set_as_broadcast_service_sets_service_to_training_mode(
client, notify_db, sample_broadcast_service, broadcast_organisation admin_request, notify_db, sample_broadcast_service
): ):
sample_broadcast_service.restricted = False sample_broadcast_service.restricted = False
notify_db.session.add(sample_broadcast_service) notify_db.session.add(sample_broadcast_service)
@@ -3877,20 +3876,18 @@ def test_set_as_broadcast_service_sets_service_to_training_mode(
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( result = admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_broadcast_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_broadcast_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample broadcast service' assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['restricted'] == True assert result['data']['restricted'] == True
@pytest.mark.parametrize('service_mode', ["testing", ""]) @pytest.mark.parametrize('service_mode', ["testing", ""])
def test_set_as_broadcast_service_rejects_unknown_service_mode( def test_set_as_broadcast_service_rejects_unknown_service_mode(
client, notify_db, sample_service, broadcast_organisation, service_mode admin_request, sample_service, broadcast_organisation, service_mode
): ):
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
@@ -3898,32 +3895,33 @@ def test_set_as_broadcast_service_rejects_unknown_service_mode(
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
assert resp.status_code == 400
def test_set_as_broadcast_service_rejects_if_no_service_mode(client, notify_db, sample_service, broadcast_organisation): def test_set_as_broadcast_service_rejects_if_no_service_mode(
admin_request, sample_service, broadcast_organisation
):
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'provider_restriction': None, 'provider_restriction': None,
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
result = resp.json
assert resp.status_code == 400
@pytest.mark.parametrize('provider', [None, "three", "ee", "vodafone", "o2"]) @pytest.mark.parametrize('provider', [None, "three", "ee", "vodafone", "o2"])
def test_set_as_broadcast_service_sets_mobile_provider_restriction( def test_set_as_broadcast_service_sets_mobile_provider_restriction(
client, notify_db, sample_service, broadcast_organisation, provider admin_request, sample_service, broadcast_organisation, provider
): ):
assert sample_service.service_broadcast_settings is None assert sample_service.service_broadcast_settings is None
data = { data = {
@@ -3932,13 +3930,11 @@ def test_set_as_broadcast_service_sets_mobile_provider_restriction(
'provider_restriction': provider 'provider_restriction': provider
} }
resp = client.post( result = admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample service' assert result['data']['name'] == 'Sample service'
assert result['data']['allowed_broadcast_provider'] == provider assert result['data']['allowed_broadcast_provider'] == provider
@@ -3950,7 +3946,7 @@ def test_set_as_broadcast_service_sets_mobile_provider_restriction(
@pytest.mark.parametrize('provider', [None, "vodafone"]) @pytest.mark.parametrize('provider', [None, "vodafone"])
def test_set_as_broadcast_service_updates_mobile_provider_restriction( def test_set_as_broadcast_service_updates_mobile_provider_restriction(
client, notify_db, sample_broadcast_service, broadcast_organisation, provider admin_request, notify_db, sample_broadcast_service, provider
): ):
sample_broadcast_service.service_broadcast_settings.provider = "o2" sample_broadcast_service.service_broadcast_settings.provider = "o2"
notify_db.session.add(sample_broadcast_service) notify_db.session.add(sample_broadcast_service)
@@ -3963,13 +3959,12 @@ def test_set_as_broadcast_service_updates_mobile_provider_restriction(
'provider_restriction': provider 'provider_restriction': provider
} }
resp = client.post( result = admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_broadcast_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_broadcast_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
) )
result = resp.json
assert resp.status_code == 200
assert result['data']['name'] == 'Sample broadcast service' assert result['data']['name'] == 'Sample broadcast service'
assert result['data']['allowed_broadcast_provider'] == provider assert result['data']['allowed_broadcast_provider'] == provider
@@ -3981,7 +3976,7 @@ def test_set_as_broadcast_service_updates_mobile_provider_restriction(
@pytest.mark.parametrize('provider', ["three, o2", "giffgaff", "", "None"]) @pytest.mark.parametrize('provider', ["three, o2", "giffgaff", "", "None"])
def test_set_as_broadcast_service_rejects_unknown_provider_restriction( def test_set_as_broadcast_service_rejects_unknown_provider_restriction(
client, notify_db, sample_service, broadcast_organisation, provider admin_request, sample_service, broadcast_organisation, provider
): ):
data = { data = {
'broadcast_channel': 'test', 'broadcast_channel': 'test',
@@ -3989,25 +3984,25 @@ def test_set_as_broadcast_service_rejects_unknown_provider_restriction(
'provider_restriction': provider 'provider_restriction': provider
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
assert resp.status_code == 400
def test_set_as_broadcast_service_errors_if_no_mobile_provider_restriction( def test_set_as_broadcast_service_errors_if_no_mobile_provider_restriction(
client, notify_db, sample_service, broadcast_organisation admin_request, sample_service, broadcast_organisation
): ):
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'service_mode': 'live', 'service_mode': 'live',
} }
resp = client.post( admin_request.post(
'/service/{}/set-as-broadcast-service'.format(sample_service.id), 'service.set_as_broadcast_service',
data=json.dumps(data), service_id=sample_service.id,
headers=[('Content-Type', 'application/json'), create_authorization_header()] _data=data,
_expected_status=400,
) )
assert resp.status_code == 400