add codecommit create, get and delete repository
This commit is contained in:
parent
b8a1f85285
commit
a820aada42
8 changed files with 325 additions and 3 deletions
170
tests/test_codecommit/test_codecommit.py
Normal file
170
tests/test_codecommit/test_codecommit.py
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
import boto3
|
||||
|
||||
import sure # noqa
|
||||
from moto import mock_codecommit
|
||||
from moto.iam.models import ACCOUNT_ID
|
||||
from botocore.exceptions import ClientError
|
||||
from nose.tools import assert_raises
|
||||
|
||||
|
||||
@mock_codecommit
|
||||
def test_create_repository():
|
||||
client = boto3.client("codecommit", region_name="eu-central-1")
|
||||
response = client.create_repository(
|
||||
repositoryName='repository_one',
|
||||
repositoryDescription='description repo one'
|
||||
)
|
||||
|
||||
response.should_not.be.none
|
||||
response["repositoryMetadata"].should_not.be.none
|
||||
response["repositoryMetadata"]["creationDate"].should_not.be.none
|
||||
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"]["accountId"].should.equal(ACCOUNT_ID)
|
||||
|
||||
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("repositoryDescription").should.be.none
|
||||
|
||||
with assert_raises(ClientError) as e:
|
||||
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"))
|
||||
|
||||
|
||||
@mock_codecommit
|
||||
def test_get_repository():
|
||||
client = boto3.client("codecommit", region_name="eu-central-1")
|
||||
|
||||
repository_name = 'repository_one'
|
||||
|
||||
client.create_repository(
|
||||
repositoryName=repository_name,
|
||||
repositoryDescription='description repo one'
|
||||
)
|
||||
|
||||
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("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
|
||||
)
|
||||
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))
|
||||
|
||||
|
||||
@mock_codecommit
|
||||
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-@#@'
|
||||
)
|
||||
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. ")
|
||||
with assert_raises(ClientError) as e:
|
||||
client.create_repository(
|
||||
repositoryName='!_repository_one'
|
||||
)
|
||||
|
||||
with assert_raises(ClientError) as e:
|
||||
client.create_repository(
|
||||
repositoryName='_rep@ository_one'
|
||||
)
|
||||
|
||||
with assert_raises(ClientError) as e:
|
||||
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'
|
||||
)
|
||||
|
||||
repository_id_create = response.get("repositoryMetadata").get("repositoryId")
|
||||
|
||||
response = client.delete_repository(
|
||||
repositoryName='repository_one'
|
||||
)
|
||||
|
||||
response.get('repositoryId').should_not.be.none
|
||||
repository_id_create.should.equal(response.get("repositoryId"))
|
||||
|
||||
response = client.delete_repository(
|
||||
repositoryName='unknown_repository'
|
||||
)
|
||||
|
||||
response.get('repositoryId').should.be.none
|
||||
|
||||
|
||||
@mock_codecommit
|
||||
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'
|
||||
)
|
||||
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. ")
|
||||
Loading…
Add table
Add a link
Reference in a new issue