mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-29 05:51:51 -05:00
Refactor schema to improve error response
This commit is contained in:
@@ -138,7 +138,7 @@ def dao_create_service(service, user, service_id=None, service_permissions=[SMS_
|
||||
service.active = True
|
||||
service.research_mode = False
|
||||
|
||||
def process_deprecated_service_permissions():
|
||||
def deprecate_process_service_permissions():
|
||||
for permission in service_permissions:
|
||||
service_permission = ServicePermission(service_id=service.id, permission=permission)
|
||||
service.permissions.append(service_permission)
|
||||
@@ -148,7 +148,7 @@ def dao_create_service(service, user, service_id=None, service_permissions=[SMS_
|
||||
if permission == LETTER_TYPE:
|
||||
service.can_send_letters = True
|
||||
|
||||
def sync_flags(flag, notify_type):
|
||||
def convert_flags(flag, notify_type):
|
||||
if flag and notify_type not in service_permissions:
|
||||
service_permission = ServicePermission(service_id=service.id, permission=notify_type)
|
||||
service.permissions.append(service_permission)
|
||||
@@ -156,10 +156,10 @@ def dao_create_service(service, user, service_id=None, service_permissions=[SMS_
|
||||
service_permission = ServicePermission(service_id=service.id, permission=notify_type)
|
||||
service.permissions.remove(service_permission)
|
||||
|
||||
sync_flags(service.can_send_international_sms, INTERNATIONAL_SMS_TYPE)
|
||||
sync_flags(service.can_send_letters, LETTER_TYPE)
|
||||
convert_flags(service.can_send_international_sms, INTERNATIONAL_SMS_TYPE)
|
||||
convert_flags(service.can_send_letters, LETTER_TYPE)
|
||||
|
||||
process_deprecated_service_permissions()
|
||||
deprecate_process_service_permissions()
|
||||
db.session.add(service)
|
||||
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ class ServiceSchema(BaseSchema):
|
||||
|
||||
if len(set(permissions)) != len(permissions):
|
||||
duplicates = list(set([x for x in permissions if permissions.count(x) > 1]))
|
||||
raise ValueError('Service Permission duplicated: {}'.format(duplicates))
|
||||
raise ValidationError('Duplicate Service Permission: {}'.format(duplicates))
|
||||
|
||||
@pre_load()
|
||||
def format_for_data_model(self, in_data):
|
||||
@@ -264,7 +264,7 @@ class ServiceSchema(BaseSchema):
|
||||
in_data['can_send_international_sms'] = INTERNATIONAL_SMS_TYPE in [p.permission for p in permissions]
|
||||
|
||||
def deprecate_convert_flags_to_permissions():
|
||||
def convert_flag(flag, notify_type):
|
||||
def convert_flags(flag, notify_type):
|
||||
if flag and notify_type not in str_permissions:
|
||||
permission = ServicePermission(service_id=in_data['id'], permission=notify_type)
|
||||
permissions.append(permission)
|
||||
@@ -273,8 +273,8 @@ class ServiceSchema(BaseSchema):
|
||||
if p.permission == notify_type:
|
||||
permissions.remove(p)
|
||||
|
||||
convert_flag(in_data["can_send_international_sms"], INTERNATIONAL_SMS_TYPE)
|
||||
convert_flag(in_data["can_send_letters"], LETTER_TYPE)
|
||||
convert_flags(in_data["can_send_international_sms"], INTERNATIONAL_SMS_TYPE)
|
||||
convert_flags(in_data["can_send_letters"], LETTER_TYPE)
|
||||
|
||||
if self.override_flag:
|
||||
deprecate_override_flags()
|
||||
|
||||
@@ -130,10 +130,7 @@ def update_service(service_id):
|
||||
current_data = dict(service_schema.dump(fetched_service).data.items())
|
||||
service_schema.set_override_flag(request.get_json().get('permissions') is not None)
|
||||
current_data.update(request.get_json())
|
||||
try:
|
||||
update_dict = service_schema.load(current_data).data
|
||||
except ValueError as e:
|
||||
raise InvalidRequest(str(e), status_code=400)
|
||||
update_dict = service_schema.load(current_data).data
|
||||
dao_update_service(update_dict)
|
||||
|
||||
if service_going_live:
|
||||
|
||||
@@ -21,7 +21,7 @@ from tests.app.conftest import (
|
||||
sample_notification_with_job
|
||||
)
|
||||
from app.models import (
|
||||
ServicePermission,
|
||||
Service, ServicePermission,
|
||||
KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST,
|
||||
EMAIL_TYPE, SMS_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, INBOUND_SMS_TYPE
|
||||
)
|
||||
@@ -629,7 +629,7 @@ def test_update_permissions_with_duplicate_permissions_will_raise_error(client,
|
||||
|
||||
assert resp.status_code == 400
|
||||
assert result['result'] == 'error'
|
||||
assert "Service Permission duplicated: ['{}']".format(LETTER_TYPE) in result['message']
|
||||
assert "Duplicate Service Permission: ['{}']".format(LETTER_TYPE) in result['message']['permissions']
|
||||
|
||||
|
||||
def test_update_service_research_mode_throws_validation_error(notify_api, sample_service):
|
||||
|
||||
Reference in New Issue
Block a user