mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-10 13:23:40 -05:00
We store our audit history in two ways: 1. A list of versions of a service 2. A list of events to do with API keys In the future there could be auditing data which we want to display that is stored in other formats (for example the event table). This commit adds some objects which wrap around the different types of auditing data, and expose a consistent interface to them. This architecture will let us: - write clean code in the presentation layer to display these events on a page - add more types of events in the future by subclassing the `Event` data type, without having to rewrite anything in the presentation layer
90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
import pytest
|
||
|
||
from app.models.event import ServiceEvent
|
||
from tests.conftest import sample_uuid
|
||
|
||
|
||
@pytest.mark.parametrize('key, value_from, value_to, expected', (
|
||
('restricted', True, False, (
|
||
'Made this service live'
|
||
)),
|
||
('restricted', False, True, (
|
||
'Put this service back into trial mode'
|
||
)),
|
||
('active', False, True, (
|
||
'Unsuspended this service'
|
||
)),
|
||
('active', True, False, (
|
||
'Deleted this service'
|
||
)),
|
||
('contact_link', 'x', 'y', (
|
||
'Set the contact details for this service to ‘y’'
|
||
)),
|
||
('email_branding', 'foo', 'bar', (
|
||
'Updated this service’s email branding'
|
||
)),
|
||
('inbound_api', 'foo', 'bar', (
|
||
'Updated the callback for received text messages'
|
||
)),
|
||
('letter_branding', None, sample_uuid(), (
|
||
'Updated the logo on this service’s letters'
|
||
)),
|
||
('letter_branding', sample_uuid(), None, (
|
||
'Removed the logo from this service’s letters'
|
||
)),
|
||
('letter_contact_block', None, sample_uuid(), (
|
||
'Updated the default letter contact block for this service'
|
||
)),
|
||
('message_limit', 1, 2, (
|
||
'Increased this service’s daily message limit from 1 to 2'
|
||
)),
|
||
('message_limit', 2, 1, (
|
||
'Reduced this service’s daily message limit from 2 to 1'
|
||
)),
|
||
('name', 'Old', 'New', (
|
||
'Renamed this service from ‘Old’ to ‘New’'
|
||
)),
|
||
('permissions', ['a', 'b', 'c'], ['a', 'b', 'c', 'd'], (
|
||
'Added ‘d’ to this service’s permissions'
|
||
)),
|
||
('permissions', ['a', 'b', 'c'], ['a', 'b'], (
|
||
'Removed ‘c’ from this service’s permissions'
|
||
)),
|
||
('permissions', ['a', 'b', 'c'], ['c', 'd', 'e'], (
|
||
'Removed ‘a’ and ‘b’ from this service’s permissions, added ‘d’ and ‘e’'
|
||
)),
|
||
('prefix_sms', True, False, (
|
||
'Set text messages to not start with the name of this service'
|
||
)),
|
||
('prefix_sms', False, True, (
|
||
'Set text messages to start with the name of this service'
|
||
)),
|
||
('research_mode', True, False, (
|
||
'Took this service out of research mode'
|
||
)),
|
||
('research_mode', False, True, (
|
||
'Put this service into research mode'
|
||
)),
|
||
('service_callback_api', 'foo', 'bar', (
|
||
'Updated the callback for delivery receipts'
|
||
)),
|
||
))
|
||
def test_service_event(
|
||
key,
|
||
value_from,
|
||
value_to,
|
||
expected,
|
||
):
|
||
event = ServiceEvent(
|
||
{
|
||
'created_at': 'foo',
|
||
'updated_at': 'bar',
|
||
'created_by_id': sample_uuid(),
|
||
},
|
||
key,
|
||
value_from,
|
||
value_to,
|
||
)
|
||
assert event.relevant is True
|
||
assert str(event) == expected
|