Fix issue with Docker 1.8.3 and pulling public repos with no creds
We now return the valid subset of auth scopes requested. Adds a test for this case and adds testing of all returned JWTs in the V2 login tests
This commit is contained in:
parent
566a91f003
commit
8cd38569d6
5 changed files with 202 additions and 148 deletions
|
@ -253,21 +253,11 @@ class IndexV2TestSpec(object):
|
|||
|
||||
self.kwargs = kwargs
|
||||
|
||||
self.auth_no_access_code = 403
|
||||
self.auth_read_code = 403
|
||||
self.auth_admin_code = 403
|
||||
|
||||
self.anon_code = 401
|
||||
self.no_access_code = 403
|
||||
self.read_code = 200
|
||||
self.admin_code = 200
|
||||
|
||||
def auth_status(self, auth_no_access_code=403, auth_read_code=200, auth_admin_code=200):
|
||||
self.auth_no_access_code = auth_no_access_code
|
||||
self.auth_read_code = auth_read_code
|
||||
self.auth_admin_code = auth_admin_code
|
||||
return self
|
||||
|
||||
def request_status(self, anon_code=401, no_access_code=403, read_code=200, admin_code=200):
|
||||
self.anon_code = anon_code
|
||||
self.no_access_code = no_access_code
|
||||
|
@ -290,170 +280,131 @@ def build_v2_index_specs():
|
|||
return [
|
||||
# v2.list_all_tags
|
||||
IndexV2TestSpec('v2.list_all_tags', 'GET', PUBLIC_REPO).
|
||||
auth_status(200, 200, 200).
|
||||
request_status(200, 200, 200, 200),
|
||||
|
||||
IndexV2TestSpec('v2.list_all_tags', 'GET', PRIVATE_REPO).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 200, 200),
|
||||
|
||||
IndexV2TestSpec('v2.list_all_tags', 'GET', ORG_REPO).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 200, 200),
|
||||
|
||||
# v2.fetch_manifest_by_tagname
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_tagname', 'GET', PUBLIC_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(200, 200, 200).
|
||||
request_status(404, 404, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_tagname', 'GET', PRIVATE_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_tagname', 'GET', ORG_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
# v2.fetch_manifest_by_digest
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_digest', 'GET', PUBLIC_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(200, 200, 200).
|
||||
request_status(404, 404, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_digest', 'GET', PRIVATE_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_manifest_by_digest', 'GET', ORG_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
# v2.write_manifest_by_tagname
|
||||
IndexV2TestSpec('v2.write_manifest_by_tagname', 'PUT', PUBLIC_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.write_manifest_by_tagname', 'PUT', PRIVATE_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
IndexV2TestSpec('v2.write_manifest_by_tagname', 'PUT', ORG_REPO, manifest_ref=FAKE_MANIFEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
# v2.write_manifest_by_digest
|
||||
IndexV2TestSpec('v2.write_manifest_by_digest', 'PUT', PUBLIC_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.write_manifest_by_digest', 'PUT', PRIVATE_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
IndexV2TestSpec('v2.write_manifest_by_digest', 'PUT', ORG_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
# v2.delete_manifest_by_digest
|
||||
IndexV2TestSpec('v2.delete_manifest_by_digest', 'DELETE', PUBLIC_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.delete_manifest_by_digest', 'DELETE', PRIVATE_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
IndexV2TestSpec('v2.delete_manifest_by_digest', 'DELETE', ORG_REPO, manifest_ref=FAKE_DIGEST).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
# v2.check_blob_exists
|
||||
IndexV2TestSpec('v2.check_blob_exists', 'HEAD', PUBLIC_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(200, 200, 200).
|
||||
request_status(404, 404, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.check_blob_exists', 'HEAD', PRIVATE_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.check_blob_exists', 'HEAD', ORG_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
# v2.download_blob
|
||||
IndexV2TestSpec('v2.download_blob', 'GET', PUBLIC_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(200, 200, 200).
|
||||
request_status(404, 404, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.download_blob', 'GET', PRIVATE_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
IndexV2TestSpec('v2.download_blob', 'GET', ORG_REPO, digest=FAKE_DIGEST).
|
||||
auth_status(403, 200, 200).
|
||||
request_status(401, 401, 404, 404),
|
||||
|
||||
# v2.start_blob_upload
|
||||
IndexV2TestSpec('v2.start_blob_upload', 'POST', PUBLIC_REPO).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.start_blob_upload', 'POST', PRIVATE_REPO).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 202),
|
||||
|
||||
IndexV2TestSpec('v2.start_blob_upload', 'POST', ORG_REPO).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 202),
|
||||
|
||||
# v2.fetch_existing_upload
|
||||
IndexV2TestSpec('v2.fetch_existing_upload', 'GET', PUBLIC_REPO, 'push,pull', upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_existing_upload', 'GET', PRIVATE_REPO, 'push,pull', upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
IndexV2TestSpec('v2.fetch_existing_upload', 'GET', ORG_REPO, 'push,pull', upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
# v2.upload_chunk
|
||||
IndexV2TestSpec('v2.upload_chunk', 'PATCH', PUBLIC_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.upload_chunk', 'PATCH', PRIVATE_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
IndexV2TestSpec('v2.upload_chunk', 'PATCH', ORG_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
# v2.monolithic_upload_or_last_chunk
|
||||
IndexV2TestSpec('v2.monolithic_upload_or_last_chunk', 'PUT', PUBLIC_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.monolithic_upload_or_last_chunk', 'PUT', PRIVATE_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
IndexV2TestSpec('v2.monolithic_upload_or_last_chunk', 'PUT', ORG_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 400),
|
||||
|
||||
# v2.cancel_upload
|
||||
IndexV2TestSpec('v2.cancel_upload', 'DELETE', PUBLIC_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 403).
|
||||
request_status(401, 401, 401, 401),
|
||||
|
||||
IndexV2TestSpec('v2.cancel_upload', 'DELETE', PRIVATE_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
|
||||
IndexV2TestSpec('v2.cancel_upload', 'DELETE', ORG_REPO, upload_uuid=FAKE_UPLOAD_ID).
|
||||
auth_status(403, 403, 200).
|
||||
request_status(401, 401, 401, 404),
|
||||
]
|
||||
|
|
Reference in a new issue