示例#1
0
        public async Task CanUploadOciManifestStream()
        {
            // Arrange
            var client = CreateBlobClient("oci-artifact");

            // Act
            string payload = "" +
                             "{" +
                             "\"schemaVersion\":2," +
                             "\"config\":" +
                             "{" +
                             "\"mediaType\":\"application/vnd.acme.rocket.config\"," +
                             "\"size\":171," +
                             "\"digest\":\"sha256:d25b42d3dbad5361ed2d909624d899e7254a822c9a632b582ebd3a44f9b0dbc8\"" +
                             "}," +
                             "\"layers\":" +
                             "[" +
                             "{" +
                             "\"mediaType\":\"application/vnd.oci.image.layer.v1.tar\"," +
                             "\"size\":28," +
                             "\"digest\":\"sha256:654b93f61054e4ce90ed203bb8d556a6200d5f906cf3eca0620738d6dc18cbed\"" +
                             "}" +
                             "]" +
                             "}";

            using Stream manifest = new MemoryStream(Encoding.ASCII.GetBytes(payload));

            var uploadResult = await client.UploadManifestAsync(manifest);

            string digest = uploadResult.Value.Digest;

            // Assert
            DownloadManifestOptions downloadOptions = new DownloadManifestOptions(null, digest);

            using var downloadResultValue = (await client.DownloadManifestAsync(downloadOptions)).Value;
            Assert.AreEqual(0, downloadResultValue.ManifestStream.Position);
            Assert.AreEqual(digest, downloadResultValue.Digest);
            ValidateManifest(downloadResultValue.Manifest);

            // Clean up
            await client.DeleteManifestAsync(digest);
        }
示例#2
0
        public async Task CanUploadOciManifest()
        {
            // Arrange
            var client = CreateBlobClient("oci-artifact");

            // Act
            var manifest     = CreateManifest();
            var uploadResult = await client.UploadManifestAsync(manifest);

            string digest = uploadResult.Value.Digest;

            // Assert
            DownloadManifestOptions downloadOptions = new DownloadManifestOptions(null, digest);

            using var downloadResultValue = (await client.DownloadManifestAsync(downloadOptions)).Value;
            Assert.AreEqual(0, downloadResultValue.ManifestStream.Position);
            Assert.AreEqual(digest, downloadResultValue.Digest);
            ValidateManifest(downloadResultValue.Manifest);

            // Clean up
            await client.DeleteManifestAsync(digest);
        }
示例#3
0
        public async Task CanUploadOciManifestWithTag()
        {
            // Arrange
            string repository     = "oci-artifact";
            var    client         = CreateBlobClient(repository);
            var    metadataClient = CreateClient();
            string tag            = "v1";

            await UploadManifestPrerequisites(client);

            // Act
            var manifest     = CreateManifest();
            var uploadResult = await client.UploadManifestAsync(manifest, new UploadManifestOptions(tag));

            var digest = uploadResult.Value.Digest;

            // Assert
            DownloadManifestOptions downloadOptions = new DownloadManifestOptions(null, digest);

            using var downloadResultValue = (await client.DownloadManifestAsync(downloadOptions)).Value;
            Assert.AreEqual(0, downloadResultValue.ManifestStream.Position);
            Assert.AreEqual(digest, downloadResultValue.Digest);
            ValidateManifest(downloadResultValue.Manifest);

            var artifact = metadataClient.GetArtifact(repository, digest);
            var tags     = artifact.GetTagPropertiesCollectionAsync();
            var count    = await tags.CountAsync();

            Assert.AreEqual(1, count);
            var firstTag = await tags.FirstAsync();

            Assert.AreEqual(tag, firstTag.Name);

            // Clean up
            await client.DeleteManifestAsync(digest);
        }
示例#4
0
        public async Task CanUploadOciManifestStreamWithTag()
        {
            // Arrange
            string repository     = "oci-artifact";
            var    client         = CreateBlobClient(repository);
            var    metadataClient = CreateClient();
            string tag            = "v1";

            await UploadManifestPrerequisites(client);

            // Act
            string payload = "" +
                             "{" +
                             "\"schemaVersion\":2," +
                             "\"config\":" +
                             "{" +
                             "\"mediaType\":\"application/vnd.acme.rocket.config\"," +
                             "\"size\":171," +
                             "\"digest\":\"sha256:d25b42d3dbad5361ed2d909624d899e7254a822c9a632b582ebd3a44f9b0dbc8\"" +
                             "}," +
                             "\"layers\":" +
                             "[" +
                             "{" +
                             "\"mediaType\":\"application/vnd.oci.image.layer.v1.tar\"," +
                             "\"size\":28," +
                             "\"digest\":\"sha256:654b93f61054e4ce90ed203bb8d556a6200d5f906cf3eca0620738d6dc18cbed\"" +
                             "}" +
                             "]" +
                             "}";

            using Stream manifest = new MemoryStream(Encoding.ASCII.GetBytes(payload));
            var uploadResult = await client.UploadManifestAsync(manifest, new UploadManifestOptions(tag));

            var digest = uploadResult.Value.Digest;

            // Assert
            DownloadManifestOptions downloadOptions = new DownloadManifestOptions(null, digest);

            using var downloadResultValue = (await client.DownloadManifestAsync(downloadOptions)).Value;
            Assert.AreEqual(0, downloadResultValue.ManifestStream.Position);
            Assert.AreEqual(digest, downloadResultValue.Digest);
            ValidateManifest(downloadResultValue.Manifest);

            var artifact = metadataClient.GetArtifact(repository, digest);
            var tags     = artifact.GetTagPropertiesCollectionAsync();
            var count    = await tags.CountAsync();

            Assert.AreEqual(1, count);
            var firstTag = await tags.FirstAsync();

            Assert.AreEqual(tag, firstTag.Name);

            downloadOptions = new DownloadManifestOptions(tag, null);
            using var downloadResultValue2 = (await client.DownloadManifestAsync(downloadOptions)).Value;
            Assert.AreEqual(0, downloadResultValue.ManifestStream.Position);
            Assert.AreEqual(digest, downloadResultValue.Digest);
            ValidateManifest(downloadResultValue.Manifest);

            // Clean up
            await client.DeleteManifestAsync(digest);
        }