Merge pull request #1103 from alphagov/testing-doc

Testing doc
This commit is contained in:
Rebecca Law
2017-02-03 10:44:38 +00:00
committed by GitHub
5 changed files with 167 additions and 1 deletions

View File

@@ -100,3 +100,8 @@ def email_template():
@main.route('/documentation')
def documentation():
abort(410)
@main.route('/integration_testing')
def integration_testing():
return render_template('views/integration_testing.html')

View File

@@ -111,6 +111,7 @@
] %}
<li><a href="{{ url }}" target="_blank" rel="noopener noreferrer">{{ language }} client</a></li>
{% endfor %}
<li><a href="{{ url_for("main.integration_testing") }}">Integration testing</a></li>
</ul>
</div>
</div>

View File

@@ -26,6 +26,7 @@
<a href="{{ url }}" target="_blank" rel="noopener noreferrer">{{ name }}</a>
</li>
{% endfor %}
<li><a href="{{ url_for("main.integration_testing") }}">Integration testing</a></li>
</ul>
{{ page_footer(

View File

@@ -0,0 +1,159 @@
{% from "components/table.html" import mapping_table, row, text_field, edit_field, field %}
{% extends "withoutnav_template.html" %}
{% block page_title %}
Integration testing - GOV.UK Notify
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-two-thirds">
<h1 class="heading-large">Integration testing</h1>
<p>
There are different types of API keys that let you do functional or performance integration testing.
You dont need different GOV.UK Notify accounts or access to other GOV.UK Notify environments.
</p>
<h2 class="heading-medium">Types of API Keys</h2>
<div class="bottom-gutter-3-2">
{% call mapping_table(
caption='Test numbers/address that generate error responses',
field_headings=['Label', 'Value'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Live') }}
{{ text_field('sends to anyone') }}
{% endcall %}
{% call row() %}
{{ text_field('Team and whitelist') }}
{{ text_field('limits who you can send to') }}
{% endcall %}
{% call row() %}
{{ text_field('Test') }}
{{ text_field('pretends to send messages') }}
{% endcall %}
{%endcall%}
</div>
<h2 class="heading-medium">Live key</h2>
<p>
Once your service is live you are able to create Live keys. You can then use these keys to send messages to anyone.
</p>
<p>
Messages sent with a live key show up on your dashboard and count against your text message and email allowances.
</p>
<p>
You should revoke and re-create these keys on a regular basis. You can have more than one active key at a time. To revoke a key click the revoke button on the API Key page.
</p>
<h2 class="heading-medium">Team and whitelist key</h2>
<p>
Use a team and whitelist key for end-to-end functional testing.
</p>
<p>
A team and whitelist key lets you send real messages to members of your team and addresses/numbers that you have added to your whitelist. You will get an error if you use these keys to send messages to anyone else.
</p>
<p>
Messages sent with a team and whitelist key show up on your dashboard and count against your text message and email allowances.
</p>
<h2 class="heading-medium">Test key</h2>
<p>
Use a test key to test the performance of your service and its integration with GOV.UK Notify.
</p>
<p>
Test keys dont send real messages but do generates realistic responses.
Theres no restriction on who you can send to.
</p>
<p>
Messages sent using a test key dont show up on your dashboard or count against your text message and email allowances.
</p>
<p>
By default, all messages sent with a test key will result in a delivered status.
</p>
<p>
If you want to test failure responses with a test key, use the following numbers and addresses:
<div class="bottom-gutter-3-2">
{% call mapping_table(
caption='Test numbers/address that generate error responses',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('07700900003') }}
{{ text_field('temporary failure') }}
{% endcall %}
{% call row() %}
{{ text_field('07700900002') }}
{{ text_field('permanent failure') }}
{% endcall %}
{% call row() %}
{{ text_field('temp-fail@simulator.notify') }}
{{ text_field('temporary failure') }}
{% endcall %}
{% call row() %}
{{ text_field('perm-fail@simulator.notify') }}
{{ text_field('permanent failure') }}
{% endcall %}
{% call row() %}
{{ text_field('any other valid number or address') }}
{{ text_field('delivered') }}
{% endcall %}
{% endcall %}
</div>
</p>
<h2 class="heading-medium">Smoke testing your integration</h2>
<p>
If you need to smoke test your integration with GOV.UK Notify on a regular basis, you should use the smoke test numbers and addresses below.
<div class="bottom-gutter-3-2">
{% call mapping_table(
caption='Test numbers/address that generate error responses',
field_headings=['Label'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('07700900111') }}
{% endcall %}
{% call row() %}
{{ text_field('07700900222') }}
{% endcall %}
{% call row() %}
{{ text_field('07700900333') }}
{% endcall %}
{% call row() %}
{{ text_field('simulate-delivered@notifications.service.gov.uk') }}
{% endcall %}
{% call row() %}
{{ text_field('simulate-delivered-2@notifications.service.gov.uk') }}
{% endcall %}
{% call row() %}
{{ text_field('simulate-delivered-3@notifications.service.gov.uk') }}
{% endcall %}
{% endcall %}
</div>
</p>
<p>
The smoke test numbers and addresses will immediately return a successful response, but wont send a real message and wont produce a delivery receipt.
The notification ID is not a real ID, you will not be able to fetch the notification by ID.
</p>
<p>
You can use the smoke test numbers and addresses with any type of key.
If your smoke tests need to get the status of a message, then use a test key and dont use these numbers and addresses.
</p>
</div>
</div>
{% endblock %}

View File

@@ -18,7 +18,7 @@ def test_logged_in_user_redirects_to_choose_service(app_,
@pytest.mark.parametrize('view', [
'cookies', 'trial_mode', 'pricing', 'terms', 'delivery_and_failure'
'cookies', 'trial_mode', 'pricing', 'terms', 'delivery_and_failure', 'integration_testing'
])
def test_static_pages(app_, view):
with app_.test_request_context(), app_.test_client() as client: