def test_simple(self):
        baseUrl = "MOCK"
        client = dockerRegistryPythonClient.RegistryClient(baseURL=baseUrl)

        catalogName = "testCatalogName"
        tagName = "testTag"
        digest = "testDigest"
        qualifiedImageName = catalogName + ":" + tagName
        dockerContentDigest = 'sha256:realditefdfddfdf'

        sampleDeleteResponse = {}
        client.mock.registerNextResponse(
            reqFnName="delete",
            url="/v2/" + catalogName + "/manifests/" + dockerContentDigest,
            data=None,
            status_code=202,
            contentBytes=base64.b64encode(
                json.dumps(sampleDeleteResponse).encode()),
            contentHeaders={"x-remaining": "0"},
            ignoreData=True)

        sampleImageMetadata = getSampleMetadata(catalogName=catalogName,
                                                tagName=tagName,
                                                digest=digest)
        client.mock.registerNextResponse(
            reqFnName="get",
            url="/v2/" + catalogName + "/manifests/" + tagName,
            data=None,
            status_code=200,
            contentBytes=base64.b64encode(
                json.dumps(sampleImageMetadata).encode()),
            contentHeaders={
                "x-remaining": "0",
                "Docker-Content-Digest": dockerContentDigest
            },
            ignoreData=True)

        username = "******"
        password = "******"
        loginSession = client.getLoginSessionBasedOnBasicAuth(
            username=username, password=password)

        imageMetadata = client.getImageMetadata(loginSession,
                                                qualifiedImageName)
        imageMetadata.delete(registryClient=client, loginSession=loginSession)
    def test_givenUnknownImage_whenGetImageMetadata_returnsNone(self):
        baseUrl = "MOCK"
        client = dockerRegistryPythonClient.RegistryClient(baseURL=baseUrl)

        username = "******"
        password = "******"
        loginSession = client.getLoginSessionBasedOnBasicAuth(
            username=username, password=password)

        catalogName = "tmpCat"
        tagName = "testTag"
        digest = 'sha256:21914a3e0bafe8c5508a902b80972868934cae3559ec8359f5d1be7638d2d186'
        dockerContentDigest = 'sha256:realditefdfddfdf'

        getImageResponse = {
            "errors": [{
                "code": "MANIFEST_UNKNOWN",
                "message": "manifest unknown",
                "detail": {
                    "Tag": "tagname"
                }
            }]
        }

        client.mock.registerNextResponse(
            reqFnName="get",
            url="/v2/" + catalogName + "/manifests/" + tagName,
            data=None,
            status_code=404,
            contentBytes=base64.b64encode(
                json.dumps(getImageResponse).encode()),
            contentHeaders={
                "x-remaining": "0",
                "Docker-Content-Digest": dockerContentDigest
            },
            ignoreData=True)

        imageMetadata = client.getImageMetadata(
            loginSession=loginSession,
            qualifiedImageName=catalogName + ":" + tagName)

        self.assertEqual(None, imageMetadata)
예제 #3
0
    def test_givenPaginatedTagResult_whenGetTags_returnThemAll(self):
        firstResult = ["1", "2", "ffff"]
        secondResult = ["221", "222", "22ffff"]
        thirdResult = ["331", "332", "33ffff"]

        baseUrl = "MOCK"
        client = dockerRegistryPythonClient.RegistryClient(baseURL=baseUrl)
        username = "******"
        password = "******"
        loginSession = client.getLoginSessionBasedOnBasicAuth(
            username=username, password=password)

        def addMockResponse(entries, last=False):
            mockResponse = {"tags": entries}
            contentHeaders = {
                "Link": "</v2/JIM/tags/list?n=100>; rel=\"next\""
            }
            if last:
                contentHeaders = {}
            client.mock.registerNextResponse(
                reqFnName="get",
                url="/v2/JIM/tags/list?n=100",
                data=None,
                status_code=200,
                contentBytes=base64.b64encode(
                    json.dumps(mockResponse).encode()),
                contentHeaders=contentHeaders,
                ignoreData=True)

        # Mock responses must be added in reverse order!
        addMockResponse(thirdResult, last=True)
        addMockResponse(secondResult)
        addMockResponse(firstResult)

        catalogs = client.getTagsForCatalogIterator(loginSession=loginSession,
                                                    catalogName="JIM")
        recieved = []
        for catalog in catalogs:
            recieved.append(catalog)
            print("DCC", catalog)

        self.assertEqual(firstResult + secondResult + thirdResult, recieved)
예제 #4
0
    def test_simple(self):
        baseUrl = "MOCK"
        client = dockerRegistryPythonClient.RegistryClient(baseURL=baseUrl)

        mockResponse = {}
        client.mock.registerNextResponse(
            reqFnName="get",
            url="/v2/",
            data=None,
            status_code=200,
            contentBytes=base64.b64encode(json.dumps(mockResponse).encode()),
            contentHeaders={"x-remaining": "0"},
            ignoreData=True)

        username = "******"
        password = "******"
        loginSession = client.getLoginSessionBasedOnBasicAuth(
            username=username, password=password)

        self.assertTrue(loginSession.testValid())
    def test_simple(self):
        baseUrl = "MOCK"
        client = dockerRegistryPythonClient.RegistryClient(baseURL=baseUrl)

        username = "******"
        password = "******"
        loginSession = client.getLoginSessionBasedOnBasicAuth(
            username=username, password=password)

        catalogName = "tmpCat"
        tagName = "testTag"
        digest = 'sha256:21914a3e0bafe8c5508a902b80972868934cae3559ec8359f5d1be7638d2d186'
        dockerContentDigest = 'sha256:realditefdfddfdf'

        sampleImageMetadata = getSampleMetadata(catalogName=catalogName,
                                                tagName=tagName,
                                                digest=digest)

        client.mock.registerNextResponse(
            reqFnName="get",
            url="/v2/" + catalogName + "/manifests/" + tagName,
            data=None,
            status_code=200,
            contentBytes=base64.b64encode(
                json.dumps(sampleImageMetadata).encode()),
            contentHeaders={
                "x-remaining": "0",
                "Docker-Content-Digest": dockerContentDigest
            },
            ignoreData=True)

        imageMetadata = client.getImageMetadata(
            loginSession=loginSession,
            qualifiedImageName=catalogName + ":" + tagName)

        self.assertEqual(dockerContentDigest, imageMetadata.getDigest())