diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index 6d0b22ef8..412723830 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -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) diff --git a/app/schemas.py b/app/schemas.py index 2045f9c31..ff4f83a95 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -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() diff --git a/app/service/rest.py b/app/service/rest.py index b3977f2b8..122a16c8c 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -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: diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 4977223eb..11d50f899 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -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):