Move exception to dedicated class

This commit is contained in:
gruebel 2019-11-21 22:03:25 +01:00
parent d0ef72725c
commit 158db1f5d6
3 changed files with 28 additions and 21 deletions

View File

@ -0,0 +1,15 @@
from __future__ import unicode_literals
import json
from werkzeug.exceptions import BadRequest
class InvalidInputError(BadRequest):
def __init__(self):
super(InvalidInputError, self).__init__()
self.description = json.dumps(
{
"message": "You provided a value that does not match the required pattern.",
"__type": "InvalidInputException",
}
)

View File

@ -8,6 +8,7 @@ from moto.core import BaseBackend, BaseModel
from moto.core.exceptions import RESTError from moto.core.exceptions import RESTError
from moto.core.utils import unix_time from moto.core.utils import unix_time
from moto.organizations import utils from moto.organizations import utils
from moto.organizations.exceptions import InvalidInputError
class FakeOrganization(BaseModel): class FakeOrganization(BaseModel):
@ -447,10 +448,7 @@ class OrganizationsBackend(BaseBackend):
account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None) account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None)
if account is None: if account is None:
raise RESTError( raise InvalidInputError
"InvalidInputException",
"You provided a value that does not match the required pattern.",
)
new_tags = {tag["Key"]: tag["Value"] for tag in kwargs["Tags"]} new_tags = {tag["Key"]: tag["Value"] for tag in kwargs["Tags"]}
account.tags.update(new_tags) account.tags.update(new_tags)
@ -459,10 +457,7 @@ class OrganizationsBackend(BaseBackend):
account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None) account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None)
if account is None: if account is None:
raise RESTError( raise InvalidInputError
"InvalidInputException",
"You provided a value that does not match the required pattern.",
)
tags = [{"Key": key, "Value": value} for key, value in account.tags.items()] tags = [{"Key": key, "Value": value} for key, value in account.tags.items()]
return dict(Tags=tags) return dict(Tags=tags)
@ -471,10 +466,7 @@ class OrganizationsBackend(BaseBackend):
account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None) account = next((a for a in self.accounts if a.id == kwargs["ResourceId"]), None)
if account is None: if account is None:
raise RESTError( raise InvalidInputError
"InvalidInputException",
"You provided a value that does not match the required pattern.",
)
for key in kwargs["TagKeys"]: for key in kwargs["TagKeys"]:
account.tags.pop(key, None) account.tags.pop(key, None)

View File

@ -641,9 +641,9 @@ def test_tag_resource_errors():
) )
ex = e.exception ex = e.exception
ex.operation_name.should.equal("TagResource") ex.operation_name.should.equal("TagResource")
ex.response["Error"]["Code"].should.equal("400") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Message"].should.contain("InvalidInputException") ex.response["Error"]["Code"].should.contain("InvalidInputException")
ex.response["Error"]["Message"].should.contain( ex.response["Error"]["Message"].should.equal(
"You provided a value that does not match the required pattern." "You provided a value that does not match the required pattern."
) )
@ -671,9 +671,9 @@ def test_list_tags_for_resource_errors():
client.list_tags_for_resource(ResourceId="000000000000") client.list_tags_for_resource(ResourceId="000000000000")
ex = e.exception ex = e.exception
ex.operation_name.should.equal("ListTagsForResource") ex.operation_name.should.equal("ListTagsForResource")
ex.response["Error"]["Code"].should.equal("400") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Message"].should.contain("InvalidInputException") ex.response["Error"]["Code"].should.contain("InvalidInputException")
ex.response["Error"]["Message"].should.contain( ex.response["Error"]["Message"].should.equal(
"You provided a value that does not match the required pattern." "You provided a value that does not match the required pattern."
) )
@ -708,8 +708,8 @@ def test_untag_resource_errors():
client.untag_resource(ResourceId="000000000000", TagKeys=["key"]) client.untag_resource(ResourceId="000000000000", TagKeys=["key"])
ex = e.exception ex = e.exception
ex.operation_name.should.equal("UntagResource") ex.operation_name.should.equal("UntagResource")
ex.response["Error"]["Code"].should.equal("400") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400)
ex.response["Error"]["Message"].should.contain("InvalidInputException") ex.response["Error"]["Code"].should.contain("InvalidInputException")
ex.response["Error"]["Message"].should.contain( ex.response["Error"]["Message"].should.equal(
"You provided a value that does not match the required pattern." "You provided a value that does not match the required pattern."
) )