diff --git a/moto/__init__.py b/moto/__init__.py index db79c59f6..835e37e2e 100644 --- a/moto/__init__.py +++ b/moto/__init__.py @@ -9,7 +9,7 @@ from .batch import mock_batch # noqa from .cloudformation import mock_cloudformation # noqa from .cloudformation import mock_cloudformation_deprecated # noqa from .cloudwatch import mock_cloudwatch, mock_cloudwatch_deprecated # noqa -from .codecommit import mock_codecommit +from .codecommit import mock_codecommit # noqa from .codepipeline import mock_codepipeline # noqa from .cognitoidentity import mock_cognitoidentity # noqa from .cognitoidentity import mock_cognitoidentity_deprecated # noqa diff --git a/moto/codecommit/__init__.py b/moto/codecommit/__init__.py index c1da043ee..6c5a8f5ad 100644 --- a/moto/codecommit/__init__.py +++ b/moto/codecommit/__init__.py @@ -1,4 +1,4 @@ from .models import codecommit_backends from ..core.models import base_decorator -mock_codecommit = base_decorator(codecommit_backends) \ No newline at end of file +mock_codecommit = base_decorator(codecommit_backends) diff --git a/moto/codecommit/exceptions.py b/moto/codecommit/exceptions.py index 2cb3f7fae..136af50f1 100644 --- a/moto/codecommit/exceptions.py +++ b/moto/codecommit/exceptions.py @@ -6,7 +6,8 @@ class RepositoryNameExistsException(JsonRESTError): def __init__(self, repository_name): super(RepositoryNameExistsException, self).__init__( - "RepositoryNameExistsException", "Repository named {0} already exists".format(repository_name) + "RepositoryNameExistsException", + "Repository named {0} already exists".format(repository_name), ) @@ -15,7 +16,8 @@ class RepositoryDoesNotExistException(JsonRESTError): def __init__(self, repository_name): super(RepositoryDoesNotExistException, self).__init__( - "RepositoryDoesNotExistException", "{0} does not exist".format(repository_name) + "RepositoryDoesNotExistException", + "{0} does not exist".format(repository_name), ) @@ -24,9 +26,10 @@ class InvalidRepositoryNameException(JsonRESTError): def __init__(self): super(InvalidRepositoryNameException, self).__init__( - "InvalidRepositoryNameException", "The repository name is not valid. Repository names can be any valid " - "combination of letters, numbers, " - "periods, underscores, and dashes between 1 and 100 characters in " - "length. Names are case sensitive. " - "For more information, see Limits in the AWS CodeCommit User Guide. " + "InvalidRepositoryNameException", + "The repository name is not valid. Repository names can be any valid " + "combination of letters, numbers, " + "periods, underscores, and dashes between 1 and 100 characters in " + "length. Names are case sensitive. " + "For more information, see Limits in the AWS CodeCommit User Guide. ", ) diff --git a/moto/codecommit/models.py b/moto/codecommit/models.py index e691507b6..6a4e82ad2 100644 --- a/moto/codecommit/models.py +++ b/moto/codecommit/models.py @@ -12,10 +12,14 @@ class CodeCommit(BaseModel): current_date = iso_8601_datetime_with_milliseconds(datetime.utcnow()) self.repository_metadata = dict() self.repository_metadata["repositoryName"] = repository_name - self.repository_metadata["cloneUrlSsh"] = "ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + self.repository_metadata[ + "cloneUrlSsh" + ] = "ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( region, repository_name ) - self.repository_metadata["cloneUrlHttp"] = "https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + self.repository_metadata[ + "cloneUrlHttp" + ] = "https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( region, repository_name ) self.repository_metadata["creationDate"] = current_date @@ -37,7 +41,9 @@ class CodeCommitBackend(BaseBackend): if repository: raise RepositoryNameExistsException(repository_name) - self.repositories[repository_name] = CodeCommit(region, repository_description, repository_name) + self.repositories[repository_name] = CodeCommit( + region, repository_description, repository_name + ) return self.repositories[repository_name].repository_metadata diff --git a/moto/codecommit/responses.py b/moto/codecommit/responses.py index 1ee177f37..3e2cf2539 100644 --- a/moto/codecommit/responses.py +++ b/moto/codecommit/responses.py @@ -16,7 +16,9 @@ class CodeCommitResponse(BaseResponse): raise InvalidRepositoryNameException() repository_metadata = self.codecommit_backend.create_repository( - self.region, self._get_param("repositoryName"), self._get_param("repositoryDescription") + self.region, + self._get_param("repositoryName"), + self._get_param("repositoryDescription"), ) return json.dumps({"repositoryMetadata": repository_metadata}) @@ -25,7 +27,9 @@ class CodeCommitResponse(BaseResponse): if not self._is_repository_name_valid(self._get_param("repositoryName")): raise InvalidRepositoryNameException() - repository_metadata = self.codecommit_backend.get_repository(self._get_param("repositoryName")) + repository_metadata = self.codecommit_backend.get_repository( + self._get_param("repositoryName") + ) return json.dumps({"repositoryMetadata": repository_metadata}) @@ -33,7 +37,9 @@ class CodeCommitResponse(BaseResponse): if not self._is_repository_name_valid(self._get_param("repositoryName")): raise InvalidRepositoryNameException() - repository_id = self.codecommit_backend.delete_repository(self._get_param("repositoryName")) + repository_id = self.codecommit_backend.delete_repository( + self._get_param("repositoryName") + ) if repository_id: return json.dumps({"repositoryId": repository_id}) diff --git a/tests/test_codecommit/test_codecommit.py b/tests/test_codecommit/test_codecommit.py index c62c0127f..8be10033a 100644 --- a/tests/test_codecommit/test_codecommit.py +++ b/tests/test_codecommit/test_codecommit.py @@ -11,8 +11,7 @@ from nose.tools import assert_raises def test_create_repository(): client = boto3.client("codecommit", region_name="eu-central-1") response = client.create_repository( - repositoryName='repository_one', - repositoryDescription='description repo one' + repositoryName="repository_one", repositoryDescription="description repo one" ) response.should_not.be.none @@ -21,78 +20,97 @@ def test_create_repository(): response["repositoryMetadata"]["lastModifiedDate"].should_not.be.none response["repositoryMetadata"]["repositoryId"].should_not.be.empty response["repositoryMetadata"]["repositoryName"].should.equal("repository_one") - response["repositoryMetadata"]["repositoryDescription"].should.equal('description repo one') - response["repositoryMetadata"]["cloneUrlSsh"].should.equal("ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}". - format("eu-central-1", 'repository_one')) - response["repositoryMetadata"]["cloneUrlHttp"].should.equal("https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}". - format("eu-central-1", 'repository_one')) - response["repositoryMetadata"]["Arn"].should.equal("arn:aws:codecommit:{0}:{1}:{2}".format( - "eu-central-1", ACCOUNT_ID, 'repository_one' - )) + response["repositoryMetadata"]["repositoryDescription"].should.equal( + "description repo one" + ) + response["repositoryMetadata"]["cloneUrlSsh"].should.equal( + "ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + "eu-central-1", "repository_one" + ) + ) + response["repositoryMetadata"]["cloneUrlHttp"].should.equal( + "https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + "eu-central-1", "repository_one" + ) + ) + response["repositoryMetadata"]["Arn"].should.equal( + "arn:aws:codecommit:{0}:{1}:{2}".format( + "eu-central-1", ACCOUNT_ID, "repository_one" + ) + ) response["repositoryMetadata"]["accountId"].should.equal(ACCOUNT_ID) - response = client.create_repository( - repositoryName='repository_two' - ) + response = client.create_repository(repositoryName="repository_two") response.should_not.be.none response.get("repositoryMetadata").should_not.be.none - response.get("repositoryMetadata").get("repositoryName").should.equal("repository_two") + response.get("repositoryMetadata").get("repositoryName").should.equal( + "repository_two" + ) response.get("repositoryMetadata").get("repositoryDescription").should.be.none with assert_raises(ClientError) as e: - client.create_repository( - repositoryName='repository_two' - ) + client.create_repository(repositoryName="repository_two") ex = e.exception ex.operation_name.should.equal("CreateRepository") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["Error"]["Code"].should.contain("RepositoryNameExistsException") - ex.response["Error"]["Message"].should.equal("Repository named {0} already exists".format("repository_two")) + ex.response["Error"]["Message"].should.equal( + "Repository named {0} already exists".format("repository_two") + ) @mock_codecommit def test_get_repository(): client = boto3.client("codecommit", region_name="eu-central-1") - repository_name = 'repository_one' + repository_name = "repository_one" client.create_repository( - repositoryName=repository_name, - repositoryDescription='description repo one' + repositoryName=repository_name, repositoryDescription="description repo one" ) - response = client.get_repository( - repositoryName=repository_name - ) + response = client.get_repository(repositoryName=repository_name) response.should_not.be.none response.get("repositoryMetadata").should_not.be.none response.get("repositoryMetadata").get("creationDate").should_not.be.none response.get("repositoryMetadata").get("lastModifiedDate").should_not.be.none response.get("repositoryMetadata").get("repositoryId").should_not.be.empty - response.get("repositoryMetadata").get("repositoryName").should.equal(repository_name) - response.get("repositoryMetadata").get("repositoryDescription").should.equal('description repo one') - response.get("repositoryMetadata").get("cloneUrlSsh") \ - .should.equal("ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format("eu-central-1", 'repository_one')) - response.get("repositoryMetadata").get("cloneUrlHttp") \ - .should.equal("https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format("eu-central-1", 'repository_one')) - response.get("repositoryMetadata").get("Arn") \ - .should.equal("arn:aws:codecommit:{0}:{1}:{2}".format("eu-central-1", ACCOUNT_ID, 'repository_one' - )) + response.get("repositoryMetadata").get("repositoryName").should.equal( + repository_name + ) + response.get("repositoryMetadata").get("repositoryDescription").should.equal( + "description repo one" + ) + response.get("repositoryMetadata").get("cloneUrlSsh").should.equal( + "ssh://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + "eu-central-1", "repository_one" + ) + ) + response.get("repositoryMetadata").get("cloneUrlHttp").should.equal( + "https://git-codecommit.{0}.amazonaws.com/v1/repos/{1}".format( + "eu-central-1", "repository_one" + ) + ) + response.get("repositoryMetadata").get("Arn").should.equal( + "arn:aws:codecommit:{0}:{1}:{2}".format( + "eu-central-1", ACCOUNT_ID, "repository_one" + ) + ) response.get("repositoryMetadata").get("accountId").should.equal(ACCOUNT_ID) client = boto3.client("codecommit", region_name="us-east-1") with assert_raises(ClientError) as e: - client.get_repository( - repositoryName=repository_name - ) + client.get_repository(repositoryName=repository_name) ex = e.exception ex.operation_name.should.equal("GetRepository") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["Error"]["Code"].should.contain("RepositoryDoesNotExistException") - ex.response["Error"]["Message"].should.equal("{0} does not exist".format(repository_name)) + ex.response["Error"]["Message"].should.equal( + "{0} does not exist".format(repository_name) + ) @mock_codecommit @@ -100,55 +118,43 @@ def test_invalid_repository_name(): client = boto3.client("codecommit", region_name="eu-central-1") with assert_raises(ClientError) as e: - client.create_repository( - repositoryName='repository_one-@#@' - ) + client.create_repository(repositoryName="repository_one-@#@") ex = e.exception ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["Error"]["Code"].should.contain("InvalidRepositoryNameException") - ex.response["Error"]["Message"].should.equal("The repository name is not valid. Repository names can be any valid " - "combination of letters, numbers, " - "periods, underscores, and dashes between 1 and 100 characters in " - "length. Names are case sensitive. " - "For more information, see Limits in the AWS CodeCommit User Guide. ") + ex.response["Error"]["Message"].should.equal( + "The repository name is not valid. Repository names can be any valid " + "combination of letters, numbers, " + "periods, underscores, and dashes between 1 and 100 characters in " + "length. Names are case sensitive. " + "For more information, see Limits in the AWS CodeCommit User Guide. " + ) with assert_raises(ClientError) as e: - client.create_repository( - repositoryName='!_repository_one' - ) + client.create_repository(repositoryName="!_repository_one") with assert_raises(ClientError) as e: - client.create_repository( - repositoryName='_rep@ository_one' - ) + client.create_repository(repositoryName="_rep@ository_one") with assert_raises(ClientError) as e: - client.get_repository( - repositoryName='_rep@ository_one' - ) + client.get_repository(repositoryName="_rep@ository_one") @mock_codecommit def test_delete_repository(): client = boto3.client("codecommit", region_name="us-east-1") - response = client.create_repository( - repositoryName='repository_one' - ) + response = client.create_repository(repositoryName="repository_one") repository_id_create = response.get("repositoryMetadata").get("repositoryId") - response = client.delete_repository( - repositoryName='repository_one' - ) + response = client.delete_repository(repositoryName="repository_one") - response.get('repositoryId').should_not.be.none + response.get("repositoryId").should_not.be.none repository_id_create.should.equal(response.get("repositoryId")) - response = client.delete_repository( - repositoryName='unknown_repository' - ) + response = client.delete_repository(repositoryName="unknown_repository") - response.get('repositoryId').should.be.none + response.get("repositoryId").should.be.none @mock_codecommit @@ -156,15 +162,15 @@ def test_delete_repository_invalid_repository_name(): client = boto3.client("codecommit", region_name="us-east-1") with assert_raises(ClientError) as e: - client.delete_repository( - repositoryName='_rep@ository_one' - ) + client.delete_repository(repositoryName="_rep@ository_one") ex = e.exception ex.operation_name.should.equal("DeleteRepository") ex.response["ResponseMetadata"]["HTTPStatusCode"].should.equal(400) ex.response["Error"]["Code"].should.contain("InvalidRepositoryNameException") - ex.response["Error"]["Message"].should.equal("The repository name is not valid. Repository names can be any valid " - "combination of letters, numbers, " - "periods, underscores, and dashes between 1 and 100 characters in " - "length. Names are case sensitive. " - "For more information, see Limits in the AWS CodeCommit User Guide. ") \ No newline at end of file + ex.response["Error"]["Message"].should.equal( + "The repository name is not valid. Repository names can be any valid " + "combination of letters, numbers, " + "periods, underscores, and dashes between 1 and 100 characters in " + "length. Names are case sensitive. " + "For more information, see Limits in the AWS CodeCommit User Guide. " + )