Merge branch 'master' into add_proxy_header_check

This commit is contained in:
Athanasios Voutsadakis
2017-11-15 17:18:00 +00:00
15 changed files with 211 additions and 64 deletions

View File

@@ -12,6 +12,7 @@ def get_service_settings_page(
service_one,
mock_get_inbound_number_for_service,
mock_get_letter_organisations,
mock_get_free_sms_fragment_limit,
no_reply_to_email_addresses,
no_letter_contact_blocks,
single_sms_sender,
@@ -83,11 +84,12 @@ def test_service_setting_toggles_dont_show(get_service_settings_page, service_on
def test_normal_user_doesnt_see_any_toggle_buttons(
client_request,
service_one,
mock_get_inbound_number_for_service,
mock_get_letter_organisations,
no_reply_to_email_addresses,
no_letter_contact_blocks,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service,
mock_get_free_sms_fragment_limit,
):
page = client_request.get('main.service_settings', service_id=service_one['id'])
toggles = page.find('a', {'class': 'button'})

View File

@@ -31,6 +31,7 @@ def test_should_add_service_and_redirect_to_tour_when_no_services(
mock_create_service_template,
mock_get_services_with_no_services,
api_user_active,
mock_create_or_update_free_sms_fragment_limit,
):
response = logged_in_client.post(
url_for('main.add_service'),
@@ -83,6 +84,7 @@ def test_should_add_service_and_redirect_to_dashboard_when_existing_service(
api_user_active,
organisation_type,
free_allowance,
mock_create_or_update_free_sms_fragment_limit
):
response = logged_in_client.post(
url_for('main.add_service'),

View File

@@ -502,6 +502,7 @@ def test_usage_page(
logged_in_client,
mock_get_usage,
mock_get_billable_units,
mock_get_free_sms_fragment_limit
):
response = logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID))
@@ -509,6 +510,7 @@ def test_usage_page(
mock_get_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_usage.assert_called_once_with(SERVICE_ONE_ID, 2011)
mock_get_free_sms_fragment_limit.assert_called_with(SERVICE_ONE_ID, 2011)
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
@@ -540,11 +542,14 @@ def test_usage_page(
def test_usage_page_with_year_argument(
logged_in_client,
mock_get_usage,
mock_get_billable_units
mock_get_billable_units,
mock_get_free_sms_fragment_limit,
mock_create_or_update_free_sms_fragment_limit
):
assert logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID, year=2000)).status_code == 200
mock_get_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2000)
mock_get_usage.assert_called_once_with(SERVICE_ONE_ID, 2000)
mock_get_free_sms_fragment_limit.assert_called_with(SERVICE_ONE_ID, 2000)
def test_usage_page_for_invalid_year(
@@ -558,11 +563,13 @@ def test_future_usage_page(
logged_in_client,
mock_get_future_usage,
mock_get_future_billable_units,
mock_get_free_sms_fragment_limit
):
assert logged_in_client.get(url_for('main.usage', service_id=SERVICE_ONE_ID, year=2014)).status_code == 200
mock_get_future_billable_units.assert_called_once_with(SERVICE_ONE_ID, 2014)
mock_get_future_usage.assert_called_once_with(SERVICE_ONE_ID, 2014)
mock_get_free_sms_fragment_limit.assert_called_with(SERVICE_ONE_ID, 2014)
def _test_dashboard_menu(mocker, app_, usr, service, permissions):
@@ -588,7 +595,8 @@ def test_menu_send_messages(
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary
mock_get_inbound_sms_summary,
mock_get_free_sms_fragment_limit,
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -619,7 +627,8 @@ def test_menu_manage_service(
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary
mock_get_inbound_sms_summary,
mock_get_free_sms_fragment_limit,
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -649,7 +658,8 @@ def test_menu_manage_api_keys(
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary
mock_get_inbound_sms_summary,
mock_get_free_sms_fragment_limit,
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -679,7 +689,8 @@ def test_menu_all_services_for_platform_admin_user(
mock_get_template_statistics,
mock_get_detailed_service,
mock_get_usage,
mock_get_inbound_sms_summary
mock_get_inbound_sms_summary,
mock_get_free_sms_fragment_limit,
):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -866,9 +877,10 @@ def test_aggregate_status_types(dict_in, expected_failed, expected_requested):
]
)
def test_get_free_paid_breakdown_for_billable_units(now, expected_number_of_months):
sms_allowance = 250000
with now:
billing_units = get_free_paid_breakdown_for_billable_units(
2016, [
2016, sms_allowance, [
{
'month': 'April', 'international': False, 'rate_multiplier': 1,
'notification_type': 'sms', 'rate': 1.65, 'billing_units': 100000

View File

@@ -1,7 +1,21 @@
import pytest
from bs4 import BeautifulSoup
from flask import url_for
def test_non_logged_in_user_can_see_homepage(
client,
):
response = client.get(url_for('main.index'))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.select_one('meta[name=description]')['content'].startswith(
'GOV.UK Notify lets you send emails and text messages'
)
def test_logged_in_user_redirects_to_choose_service(
logged_in_client,
api_user_active,
@@ -27,6 +41,10 @@ def test_static_pages(
response = client.get(url_for('main.{}'.format(view)))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert not page.select_one('meta[name=description]')
@pytest.mark.parametrize('view, expected_anchor', [
('delivery_and_failure', 'messagedeliveryandfailure'),

View File

@@ -29,6 +29,16 @@ from tests.conftest import (
get_inbound_number_sms_sender,
SERVICE_ONE_ID
)
from freezegun import freeze_time
@pytest.fixture
def mock_get_service_settings_page_common(
mock_get_letter_organisations,
mock_get_inbound_number_for_service,
mock_get_free_sms_fragment_limit,
):
return
@pytest.mark.parametrize('user, expected_rows', [
@@ -84,13 +94,12 @@ def test_should_show_overview(
mocker,
service_one,
fake_uuid,
mock_get_letter_organisations,
no_reply_to_email_addresses,
no_letter_contact_blocks,
single_sms_sender,
user,
expected_rows,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['permissions'] = ['sms', 'email']
@@ -159,8 +168,7 @@ def test_should_show_overview_for_service_with_more_things_set(
single_letter_contact_block,
single_sms_sender,
mock_get_organisation,
mock_get_letter_organisations,
mock_get_inbound_number_for_service,
mock_get_service_settings_page_common,
permissions,
expected_rows
):
@@ -182,7 +190,6 @@ def test_should_show_overview_for_service_with_more_things_set(
def test_service_settings_show_elided_api_url_if_needed(
logged_in_platform_admin_client,
service_one,
mock_get_letter_organisations,
single_reply_to_email_address,
single_sms_sender,
single_letter_contact_block,
@@ -190,7 +197,7 @@ def test_service_settings_show_elided_api_url_if_needed(
fake_uuid,
url,
elided_url,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['permissions'] = ['sms', 'email', 'inbound_sms']
service_one['inbound_api'] = [fake_uuid]
@@ -219,8 +226,7 @@ def test_service_settings_show_elided_api_url_if_needed(
def test_if_cant_send_letters_then_cant_see_letter_contact_block(
logged_in_client,
service_one,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
response = logged_in_client.get(url_for(
'main.service_settings', service_id=service_one['id']
@@ -235,8 +241,7 @@ def test_letter_contact_block_shows_none_if_not_set(
single_reply_to_email_address,
no_letter_contact_blocks,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['permissions'] = ['letter']
response = logged_in_client.get(url_for(
@@ -256,8 +261,7 @@ def test_escapes_letter_contact_block(
single_reply_to_email_address,
single_sms_sender,
injected_letter_contact_block,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['permissions'] = ['letter']
response = logged_in_client.get(url_for(
@@ -303,11 +307,10 @@ def test_should_redirect_after_change_service_name(
def test_show_restricted_service(
logged_in_client,
service_one,
mock_get_letter_organisations,
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id']))
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
@@ -341,8 +344,7 @@ def test_show_live_service(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id']))
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
@@ -355,7 +357,7 @@ def test_switch_service_to_restricted(
service_one,
mock_get_live_service,
mock_update_service,
mock_get_inbound_number_for_service
mock_get_inbound_number_for_service,
):
response = logged_in_platform_admin_client.get(
url_for('main.service_switch_live', service_id=service_one['id']))
@@ -404,7 +406,7 @@ def test_should_redirect_after_service_name_confirmation(
service_one,
mock_update_service,
mock_verify_password,
mock_get_inbound_number_for_service
mock_get_inbound_number_for_service,
):
service_id = service_one['id']
service_new_name = 'New Name'
@@ -468,8 +470,7 @@ def test_should_redirect_after_request_to_go_live(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service,
mock_get_service_settings_page_common
):
mock_post = mocker.patch(
'app.main.views.feedback.requests.post',
@@ -567,9 +568,8 @@ def test_route_permissions(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
route,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
validate_route_permission(
mocker,
@@ -627,9 +627,8 @@ def test_route_for_platform_admin(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
route,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
validate_route_permission(mocker,
app_,
@@ -697,11 +696,10 @@ def test_enabling_and_disabling_email_and_sms(
def test_and_more_hint_appears_on_settings_with_more_than_just_a_single_sender(
client_request,
service_one,
mock_get_letter_organisations,
mock_get_inbound_number_for_service,
multiple_reply_to_email_addresses,
multiple_letter_contact_blocks,
multiple_sms_senders
multiple_sms_senders,
mock_get_service_settings_page_common,
):
service_one['permissions'] = ['email', 'sms', 'letter']
@@ -1240,11 +1238,10 @@ def test_shows_research_mode_indicator(
logged_in_client,
service_one,
mocker,
mock_get_letter_organisations,
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['research_mode'] = True
mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one)
@@ -1260,11 +1257,10 @@ def test_shows_research_mode_indicator(
def test_does_not_show_research_mode_indicator(
logged_in_client,
service_one,
mock_get_letter_organisations,
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
response = logged_in_client.get(url_for('main.service_settings', service_id=service_one['id']))
assert response.status_code == 200
@@ -1575,6 +1571,7 @@ def test_should_set_organisation_type(
def test_should_show_page_to_set_sms_allowance(
logged_in_platform_admin_client,
mock_get_free_sms_fragment_limit
):
response = logged_in_platform_admin_client.get(url_for(
'main.set_free_sms_allowance',
@@ -1584,8 +1581,10 @@ def test_should_show_page_to_set_sms_allowance(
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert normalize_spaces(page.select_one('label').text) == 'Numbers of text message fragments per year'
mock_get_free_sms_fragment_limit.assert_called_once_with(SERVICE_ONE_ID)
@freeze_time("2017-04-01 11:09:00.061258")
@pytest.mark.parametrize('given_allowance, expected_api_argument', [
('1', 1),
('250000', 250000),
@@ -1596,7 +1595,10 @@ def test_should_set_sms_allowance(
mock_update_service,
given_allowance,
expected_api_argument,
mock_get_free_sms_fragment_limit,
mock_create_or_update_free_sms_fragment_limit,
):
response = logged_in_platform_admin_client.post(
url_for(
'main.set_free_sms_allowance',
@@ -1613,6 +1615,11 @@ def test_should_set_sms_allowance(
SERVICE_ONE_ID,
free_sms_fragment_limit=expected_api_argument,
)
# Not assert until using the annual_billing end points
# mock_create_or_update_free_sms_fragment_limit.assert_called_with(
# SERVICE_ONE_ID,
# expected_api_argument
# )
def test_switch_service_enable_letters(
@@ -1831,8 +1838,7 @@ def test_archive_service_prompts_user(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
mocked_fn = mocker.patch('app.service_api_client.post')
@@ -1850,8 +1856,7 @@ def test_cant_archive_inactive_service(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common
):
service_one['active'] = False
@@ -1884,8 +1889,7 @@ def test_suspend_service_prompts_user(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
mocked_fn = mocker.patch('app.service_api_client.post')
@@ -1904,8 +1908,7 @@ def test_cant_suspend_inactive_service(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['active'] = False
@@ -1941,8 +1944,7 @@ def test_resume_service_prompts_user(
single_letter_contact_block,
single_sms_sender,
mocker,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common,
):
service_one['active'] = False
mocked_fn = mocker.patch('app.service_api_client.post')
@@ -1962,8 +1964,7 @@ def test_cant_resume_active_service(
single_reply_to_email_address,
single_letter_contact_block,
single_sms_sender,
mock_get_letter_organisations,
mock_get_inbound_number_for_service
mock_get_service_settings_page_common
):
response = logged_in_platform_admin_client.get(url_for('main.service_settings', service_id=service_one['id']))
@@ -2027,6 +2028,7 @@ def test_service_settings_when_inbound_number_is_not_set(
single_sms_sender,
mocker,
mock_get_letter_organisations,
mock_get_free_sms_fragment_limit,
):
mocker.patch('app.inbound_number_client.get_inbound_sms_number_for_service',
return_value={'data': {}})