mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-02 09:26:08 -05:00
don't re-delete already archived/revoked templates/api-keys
This commit is contained in:
@@ -86,10 +86,12 @@ def dao_deactive_service(service_id):
|
|||||||
service.email_from = '_archived_' + service.email_from
|
service.email_from = '_archived_' + service.email_from
|
||||||
|
|
||||||
for template in service.templates:
|
for template in service.templates:
|
||||||
template.archived = True
|
if not template.archived:
|
||||||
|
template.archived = True
|
||||||
|
|
||||||
for api_key in service.api_keys:
|
for api_key in service.api_keys:
|
||||||
api_key.expiry_date = datetime.utcnow()
|
if not api_key.expiry_date:
|
||||||
|
api_key.expiry_date = datetime.utcnow()
|
||||||
|
|
||||||
|
|
||||||
def dao_fetch_service_by_id_and_user(service_id, user_id):
|
def dao_fetch_service_by_id_and_user(service_id, user_id):
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from unittest import mock
|
from datetime import datetime
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from freezegun import freeze_time
|
||||||
|
|
||||||
from app import db
|
from app import db
|
||||||
from app.models import Service, TemplateHistory, ApiKey
|
from app.models import Service
|
||||||
from app.dao.services_dao import dao_deactive_service
|
from app.dao.services_dao import dao_deactive_service
|
||||||
|
from app.dao.api_key_dao import expire_api_key
|
||||||
|
from app.dao.templates_dao import dao_update_template
|
||||||
|
|
||||||
from tests import create_authorization_header, unwrap_function
|
from tests import create_authorization_header, unwrap_function
|
||||||
from tests.app.conftest import (
|
from tests.app.conftest import (
|
||||||
@@ -79,6 +82,37 @@ def test_deactivating_service_creates_history(deactivated_service):
|
|||||||
assert history.active is False
|
assert history.active is False
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def deactivated_service_with_deleted_stuff(client, notify_db, notify_db_session, sample_service):
|
||||||
|
with freeze_time('2001-01-01'):
|
||||||
|
template = create_template(notify_db, notify_db_session, template_name='a')
|
||||||
|
api_key = create_api_key(notify_db, notify_db_session)
|
||||||
|
|
||||||
|
expire_api_key(sample_service.id, api_key.id)
|
||||||
|
|
||||||
|
template.archived = True
|
||||||
|
dao_update_template(template)
|
||||||
|
|
||||||
|
with freeze_time('2002-02-02'):
|
||||||
|
auth_header = create_authorization_header()
|
||||||
|
response = client.post('/service/{}/deactivate'.format(sample_service.id), headers=[auth_header])
|
||||||
|
|
||||||
|
assert response.status_code == 204
|
||||||
|
assert response.data == b''
|
||||||
|
return sample_service
|
||||||
|
|
||||||
|
|
||||||
|
def test_deactivating_service_doesnt_affect_existing_archived_templates(deactivated_service_with_deleted_stuff):
|
||||||
|
assert deactivated_service_with_deleted_stuff.templates[0].archived is True
|
||||||
|
assert deactivated_service_with_deleted_stuff.templates[0].updated_at == datetime(2001, 1, 1, 0, 0, 0)
|
||||||
|
assert deactivated_service_with_deleted_stuff.templates[0].version == 2
|
||||||
|
|
||||||
|
|
||||||
|
def test_deactivating_service_doesnt_affect_existing_revoked_api_keys(deactivated_service_with_deleted_stuff):
|
||||||
|
assert deactivated_service_with_deleted_stuff.api_keys[0].expiry_date == datetime(2001, 1, 1, 0, 0, 0)
|
||||||
|
assert deactivated_service_with_deleted_stuff.api_keys[0].version == 2
|
||||||
|
|
||||||
|
|
||||||
def test_deactivating_service_rolls_back_everything_on_error(sample_service, sample_api_key, sample_template):
|
def test_deactivating_service_rolls_back_everything_on_error(sample_service, sample_api_key, sample_template):
|
||||||
unwrapped_deactive_service = unwrap_function(dao_deactive_service)
|
unwrapped_deactive_service = unwrap_function(dao_deactive_service)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user