Commit Graph

1797 Commits

Author SHA1 Message Date
Rebecca Law
52c8596c92 Add application level error handler.
This should catch any unexcpeted exceptions.
2016-11-24 17:09:56 +00:00
bandesz
8fa337927c Exclude cache directory from pep8 2016-11-23 12:39:48 +00:00
Paul Craig
be5d503133 Merge pull request #743 from alphagov/stringify-cost-attr-on-v2-get-notification
Stringify the cost before passing to jsonify as it complains otherwise
2016-11-23 10:50:59 +00:00
Rebecca Law
97379a2904 Merge pull request #742 from alphagov/upgrade-python-client
Update python client from version 2.0.0 to 3.0.0
2016-11-23 10:48:21 +00:00
Paul Craig
92897e20a8 Test returning a notification with a non-zero cost
Our previous test ws returning a notification without a `sent_by`
attribute, which meant that cost was always 0.
Unfortunately, this meant that returning a real value for cost was
untested and (whaddya know) it broke immediately.

Old test scenario:
- billable_units=1, sent_by=None, cost=0

New scenarios
- billable_units=0, sent_by='mmg', cost=0
- billable_units=1, sent_by='mmg', cost=1
2016-11-22 18:01:16 +00:00
Paul Craig
a17adb4707 New test for notification.cost() method
Added a test that asking for a nonexistent provider_rate blows
everything up.

Also updated existing test to use a weirder number.
2016-11-22 18:01:16 +00:00
Imdad Ahad
9b6584c8a1 Make result of notification.cost() into a float
Cost was returning a `Decimal`, which jsonify doesn't like.
Making it a float fixes the problem.

[Relevant issue on github](https://github.com/pallets/flask/issues/835).
2016-11-22 17:58:16 +00:00
Rebecca Law
3cddc64e36 Merge pull request #741 from alphagov/fix-v2-post-notification
Small fixes for the V2 post notification endpoints
2016-11-22 16:28:13 +00:00
Rebecca Law
8cf324de85 Update python client from version 2.0.0 to 3.0.0 2016-11-22 14:59:14 +00:00
Paul Craig
0e0dbe6e77 Merge pull request #740 from alphagov/pc-newly-nab-notifications
[#131977833] Create GET notification by ID endpoint for V2 API
2016-11-22 13:54:05 +00:00
Paul Craig
ebfac180c0 Add contract test for 'v2' email notification
We don't have a way of creating letter notifications just yet, so
this is all we can test.
2016-11-22 13:40:55 +00:00
Paul Craig
7ae427c4ef Use jsonschema validation + remove 'v2' schema
Emualated the validation methods that exist [in the python-client](620e5f7014/integration_test/__init__.py).

The `validate_v0` function loads json schemas from a local
`/schemas` directory, whereas the new `validate` function (which
we're going to use for our v2 API calls) uses the common
`get_notification_response` python schema defined in
"app/v2/notifications/notification_schemas.py".

Removed the new `v2` schema from the last commit as it's no longer
being used.

Also, refactored common code in the GET and POST contract files
so that making requests and converting responses to JSON are
pulled out into common functions.
2016-11-22 13:40:22 +00:00
Rebecca Law
fa422a85ef Fix unit test failure 2016-11-22 13:25:10 +00:00
Paul Craig
fb50bb6325 Add 'v2' notification schema to contract tests
Converted python-based schema in
"app/v2/notifications/notification_schema.py" into a pure json
schema and tested it with the new "v2/" API route to confirm that
it validates.

Also refactored some common code in the public contract GET tests
that returns notifications.
2016-11-22 12:07:05 +00:00
Rebecca Law
46beece158 For the post_sms_response and post_email_response the reference property is always present but the value can be null.
Added a test for an empty reference.
Remove datetime format on the created_at attribute of a notification, it is not needed.
2016-11-21 17:32:36 +00:00
Paul Craig
c1fa5e156a Append "Z" to DATETIME_FORMAT
We're formally using the ISO 8601 UTC datetime format, and so the
correct way to output the data is by appending the timezone.
("Z" in the case of UTC*).

Unfortunately, Python's `datetime` formatting will just ignore the
timezone part of the string on output, which means we just have to
append the string "Z" to the end of all datetime strings we output.

Should be fine, as we will only ever output UTC timestamps anyway.

* https://en.wikipedia.org/wiki/ISO_8601#UTC
2016-11-21 15:59:10 +00:00
Paul Craig
82ba2cd226 Create new notification schema
This is the schema that individual notifications will conform to
when they are returned from this API.
JSON logic enforces that the right keys are set depending on the
`"type"`. (eg a schema with `"type": "sms"` must have a
`"phone_number"` value and it cannot have an `"email_address"`)
2016-11-21 15:59:10 +00:00
Paul Craig
9758b96a2b Create 'v2' get notification route
The new 'v2' API wants to return less data than the previous one,
which was sending back tons of fields the clients never used.

This new route returns only useful information, with the JSON
response dict being built up in the model's `.serialize()` method.

Note that writing the test for this was a bit painful because of
having to treat loads of keys differently. Hopefully we think this
is a good way to write this test, because if we don't, we should
start thinking of a better way to check the values are what we
expect.
2016-11-21 15:41:49 +00:00
Paul Craig
fddb1653ac Add .cost() to notification model
In the V2 API, the GET response for an individual notification
returns a 'cost' value, which we can get by multiplying the
billable units by the per-message rate of the supplier who
sent the message.
Any notifications with billable units > 0 but without a
corresponding `ProviderRates` entry will blow up the application,
so make sure you've got one.
2016-11-18 17:50:39 +00:00
Rebecca Law
1345c94f4b Merge pull request #736 from alphagov/implement-v2-send-email
Implemented the post email notifications endpoint for v2
2016-11-17 15:47:22 +00:00
Rebecca Law
f5e3c6f63b Remove print stmt and added assert error content 2016-11-17 14:02:44 +00:00
Rebecca Law
bc434f1736 Create new column in notifications and notification_history to store the client_reference because I remembered that reference is used for email providers. 2016-11-17 13:42:34 +00:00
Rebecca Law
dc5e21a78e Remove v2 error handler for InvalidPhoneError, no longer expect to throw this exception. 2016-11-17 09:09:24 +00:00
Rebecca Law
df62be421f Make email_from and subject required attributes of the email_content schema.
Update the format_checkers to raise the specific exception that why the validator can handle multiple messages.
Which led to a refactor of build_error_message.
2016-11-16 17:25:00 +00:00
Rebecca Law
68537d960a Merge branch 'master' into implement-v2-send-email 2016-11-16 16:29:41 +00:00
Rebecca Law
34d9c44163 Merge pull request #739 from alphagov/refactor-for-reuse-fix
Fix functional tests
2016-11-16 16:24:03 +00:00
Rebecca Law
247668202b Fix functional tests 2016-11-16 16:15:30 +00:00
Leo Hemsted
9da0cc84bd Merge pull request #738 from alphagov/leohemsted-patch-1
typo
2016-11-16 16:11:29 +00:00
Leo Hemsted
a51dfb41d0 typo
paul tried to copy + paste command
2016-11-16 16:11:23 +00:00
Rebecca Law
924cec05b4 Included reference when persisting the notification.
This was already part of the data model.
Not included in the send_sms|email task because there is no reference from the job.
2016-11-16 15:44:16 +00:00
Rebecca Law
a3eeb1a477 Merge branch 'master' into implement-v2-send-email 2016-11-16 15:18:03 +00:00
Rebecca Law
80f3bfcb2c Merge pull request #733 from alphagov/refactor-for-code-reuse
Refactor for code reuse
2016-11-16 15:17:30 +00:00
Rebecca Law
d6c537cf44 Added job_id and row_number to the exception error message if the task needs to be retried. That way we have a way to tie the exception messages together 2016-11-15 11:44:48 +00:00
Leo Hemsted
61a166193c Merge pull request #737 from alphagov/dont-deactivate-twice
archive service - don't re-delete templates etc
2016-11-14 17:04:52 +00:00
Rebecca Law
2d9d4013e8 Missed one 2016-11-14 15:29:23 +00:00
Rebecca Law
c00eb0f5a4 Remove from_request method on the Notification db model, was not needed anymore.
Use Notifications.query.one(), rather than assert count is 1 and query for all and get first item in list.
2016-11-14 14:41:32 +00:00
Leo Hemsted
d706d86c9c don't re-delete already archived/revoked templates/api-keys 2016-11-14 14:10:40 +00:00
Chris Hill-Scott
e2de83a1b2 Merge pull request #730 from alphagov/letter-templates
Add ‘letter’ as a possible template type
2016-11-14 15:09:28 +01:00
Rebecca Law
b0ee09a9f6 Implemented the post email notifications endpoint for v2 2016-11-14 13:56:09 +00:00
Rebecca Law
4379308189 Fix test failures. 2016-11-11 17:28:15 +00:00
Chris Hill-Scott
28d5da638b Remove old style fixture
Use new `client` one instead
2016-11-11 17:05:41 +00:00
Rebecca Law
8f0a96c76c Merge branch 'master' into refactor-for-code-reuse 2016-11-11 16:51:18 +00:00
Chris Hill-Scott
6127ee422a Test can get letter template
It works already, just making sure it stays working.
2016-11-11 16:47:07 +00:00
Chris Hill-Scott
73fe331dc8 Test can create letters template
It works already, just making sure it stays working.
2016-11-11 16:47:06 +00:00
Chris Hill-Scott
f34b58e7cd Delete redundant test
Not needed now that the test above this one is parametrized.
2016-11-11 16:47:06 +00:00
Chris Hill-Scott
aef62dcffb Parametrize template create
Cleaner than having two almost identical tests.
2016-11-11 16:47:06 +00:00
Chris Hill-Scott
705a0e7ab8 Remove redundant assignment
This variable is used exactly once, on the next line 🤔
2016-11-11 16:47:06 +00:00
Chris Hill-Scott
3e6d581f73 Use constants for template type
Handy if we ever want to rename these I guess…
2016-11-11 16:47:05 +00:00
Chris Hill-Scott
eb17822564 Merge pull request #734 from alphagov/fix-conflicting-migration-versions
Fix conflicting migration versions
2016-11-11 17:45:55 +01:00
Chris Hill-Scott
35e1e06db4 Fix conflicting migration versions
Two different versions of 0059 were merged.

`0059_set_services_to_active` was merged first, so this renames my
migration to `0060`, so it goes in afterwards.
2016-11-11 16:30:05 +00:00