Add ecr get_authorization_token response and tests

This commit is contained in:
William Richard 2017-07-25 17:54:05 -04:00
parent 57c5c6df26
commit 025e975e44
No known key found for this signature in database
GPG Key ID: F7F8BA4DDBE1ABED
2 changed files with 51 additions and 4 deletions

View File

@ -1,12 +1,13 @@
from __future__ import unicode_literals
import json
from datetime import datetime
import time
from moto.core.responses import BaseResponse
from .models import ecr_backends
class ECRResponse(BaseResponse):
@property
def ecr_backend(self):
return ecr_backends[self.region]
@ -111,9 +112,17 @@ class ECRResponse(BaseResponse):
'ECR.generate_presigned_url is not yet implemented')
def get_authorization_token(self):
if self.is_not_dryrun('GetAuthorizationToken'):
raise NotImplementedError(
'ECR.get_authorization_token is not yet implemented')
registry_ids = self._get_param('registryIds')
if not registry_ids:
registry_ids = [self.region]
auth_data = []
for registry_id in registry_ids:
auth_data.append({
'authorizationToken': '{}-auth-token'.format(registry_id),
'expiresAt': time.mktime(datetime(2015, 1, 1).timetuple()),
'proxyEndpoint': 'https://012345678910.dkr.ecr.{}.amazonaws.com'.format(registry_id)
})
return json.dumps({'authorizationData': auth_data})
def get_download_url_for_layer(self):
if self.is_not_dryrun('GetDownloadUrlForLayer'):

View File

@ -2,11 +2,13 @@ from __future__ import unicode_literals
import hashlib
import json
from datetime import datetime
from random import random
import sure # noqa
import boto3
from dateutil.tz import tzlocal
from moto import mock_ecr
@ -368,3 +370,39 @@ def test_describe_images_by_digest():
image_detail['repositoryName'].should.equal("test_repository")
image_detail['imageTags'].should.equal([put_response['imageId']['imageTag']])
image_detail['imageDigest'].should.equal(digest)
@mock_ecr
def test_get_authorization_token_assume_region():
client = boto3.client('ecr', region_name='us-east-1')
auth_token_response = client.get_authorization_token()
list(auth_token_response.keys()).should.equal(['authorizationData', 'ResponseMetadata'])
auth_token_response['authorizationData'].should.equal([
{
'authorizationToken': 'us-east-1-auth-token',
'proxyEndpoint': 'https://012345678910.dkr.ecr.us-east-1.amazonaws.com',
'expiresAt': datetime(2015, 1, 1, tzinfo=tzlocal())
},
])
@mock_ecr
def test_get_authorization_token_explicit_regions():
client = boto3.client('ecr', region_name='us-east-1')
auth_token_response = client.get_authorization_token(registryIds=['us-east-1', 'us-west-1'])
list(auth_token_response.keys()).should.equal(['authorizationData', 'ResponseMetadata'])
auth_token_response['authorizationData'].should.equal([
{
'authorizationToken': 'us-east-1-auth-token',
'proxyEndpoint': 'https://012345678910.dkr.ecr.us-east-1.amazonaws.com',
'expiresAt': datetime(2015, 1, 1, tzinfo=tzlocal()),
},
{
'authorizationToken': 'us-west-1-auth-token',
'proxyEndpoint': 'https://012345678910.dkr.ecr.us-west-1.amazonaws.com',
'expiresAt': datetime(2015, 1, 1, tzinfo=tzlocal())
}
])