Merge branch 'tagyourit'

This commit is contained in:
Joseph Schorr 2014-04-17 14:20:28 -04:00
commit d8efb399b0
12 changed files with 641 additions and 172 deletions

Binary file not shown.

View file

@ -71,6 +71,7 @@ UPDATE_REPO_DETAILS = {
'description': 'A new description',
}
class IndexTestSpec(object):
def __init__(self, url, sess_repo=None, anon_code=403, no_access_code=403,
read_code=200, admin_code=200):

View file

@ -2155,6 +2155,18 @@ class TestRepositoryTagHp8rPublicPublicrepo(ApiTestCase):
ApiTestCase.setUp(self)
self._set_url(RepositoryTag, tag="HP8R", repository="public/publicrepo")
def test_put_anonymous(self):
self._run_test('PUT', 401, None, {u'image': 'WXNG'})
def test_put_freshuser(self):
self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'})
def test_put_reader(self):
self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'})
def test_put_devtable(self):
self._run_test('PUT', 403, 'devtable', {u'image': 'WXNG'})
def test_delete_anonymous(self):
self._run_test('DELETE', 401, None, None)
@ -2173,6 +2185,18 @@ class TestRepositoryTagHp8rDevtableShared(ApiTestCase):
ApiTestCase.setUp(self)
self._set_url(RepositoryTag, tag="HP8R", repository="devtable/shared")
def test_put_anonymous(self):
self._run_test('PUT', 401, None, {u'image': 'WXNG'})
def test_put_freshuser(self):
self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'})
def test_put_reader(self):
self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'})
def test_put_devtable(self):
self._run_test('PUT', 404, 'devtable', {u'image': 'WXNG'})
def test_delete_anonymous(self):
self._run_test('DELETE', 401, None, None)
@ -2191,6 +2215,18 @@ class TestRepositoryTagHp8rBuynlargeOrgrepo(ApiTestCase):
ApiTestCase.setUp(self)
self._set_url(RepositoryTag, tag="HP8R", repository="buynlarge/orgrepo")
def test_put_anonymous(self):
self._run_test('PUT', 401, None, {u'image': 'WXNG'})
def test_put_freshuser(self):
self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'})
def test_put_reader(self):
self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'})
def test_put_devtable(self):
self._run_test('PUT', 404, 'devtable', {u'image': 'WXNG'})
def test_delete_anonymous(self):
self._run_test('DELETE', 401, None, None)

View file

@ -114,6 +114,13 @@ class ApiTestCase(unittest.TestCase):
self.assertEquals(rv.status_code, expected_code)
return rv.data
def putResponse(self, resource_name, params={}, data={}, expected_code=200):
rv = self.app.put(self.url_for(resource_name, params),
data=py_json.dumps(data),
headers={"Content-Type": "application/json"})
self.assertEquals(rv.status_code, expected_code)
return rv.data
def deleteResponse(self, resource_name, params={}, expected_code=204):
rv = self.app.delete(self.url_for(resource_name, params))
self.assertEquals(rv.status_code, expected_code)
@ -1126,7 +1133,7 @@ class TestGetImageChanges(ApiTestCase):
class TestListAndDeleteTag(ApiTestCase):
def test_listtagimagesanddeletetag(self):
def test_listdeletecreateandmovetag(self):
self.login(ADMIN_ACCESS_USER)
# List the images for prod.
@ -1159,6 +1166,33 @@ class TestListAndDeleteTag(ApiTestCase):
self.assertEquals(staging_images, json['images'])
# Add a new tag to the staging image.
self.putResponse(RepositoryTag,
params=dict(repository=ADMIN_ACCESS_USER + '/complex', tag='sometag'),
data=dict(image=staging_images[0]['id']),
expected_code=201)
# Make sure the tag is present.
json = self.getJsonResponse(RepositoryTagImages,
params=dict(repository=ADMIN_ACCESS_USER + '/complex', tag='sometag'))
sometag_images = json['images']
self.assertEquals(sometag_images, staging_images)
# Move the tag.
self.putResponse(RepositoryTag,
params=dict(repository=ADMIN_ACCESS_USER + '/complex', tag='sometag'),
data=dict(image=staging_images[-1]['id']),
expected_code=201)
# Make sure the tag has moved.
json = self.getJsonResponse(RepositoryTagImages,
params=dict(repository=ADMIN_ACCESS_USER + '/complex', tag='sometag'))
sometag_new_images = json['images']
self.assertEquals(1, len(sometag_new_images))
self.assertEquals(staging_images[-1], sometag_new_images[0])
def test_deletesubtag(self):
self.login(ADMIN_ACCESS_USER)