Add unit tests and a stronger restriction on the revert API call
This commit is contained in:
parent
e16657ed0e
commit
d1e2d072ea
3 changed files with 55 additions and 8 deletions
|
@ -2829,12 +2829,20 @@ def repository_is_starred(user, repository):
|
|||
return False
|
||||
|
||||
|
||||
def revert_tag(namespace_name, repository_name, tag_name, docker_image_id):
|
||||
def revert_tag(repository, tag_name, docker_image_id):
|
||||
""" Reverts a tag to a specific image ID. """
|
||||
image = get_image_by_id(namespace_name, repository_name, docker_image_id)
|
||||
if image is None:
|
||||
raise DataModelException('Cannot revert to unknown image')
|
||||
# Verify that the image ID already existed under this repository under the
|
||||
# tag.
|
||||
try:
|
||||
(RepositoryTag.select()
|
||||
.join(Image)
|
||||
.where(RepositoryTag.repository == repository)
|
||||
.where(RepositoryTag.name == tag_name)
|
||||
.where(Image.docker_image_id == docker_image_id)
|
||||
.get())
|
||||
except RepositoryTag.DoesNotExist:
|
||||
raise DataModelException('Cannot revert to unknown or invalid image')
|
||||
|
||||
return create_or_update_tag(namespace_name, repository_name, tag_name, docker_image_id,
|
||||
reversion=True)
|
||||
return create_or_update_tag(repository.namespace_user.username, repository.name,
|
||||
tag_name, docker_image_id, reversion=True)
|
||||
|
||||
|
|
Reference in a new issue