public void TestReadListOfJson() { SystemPath jsonFile = Paths.Get(TestResources.GetResource("core/json/basic_list.json").ToURI()); string jsonString = Encoding.UTF8.GetString(Files.ReadAllBytes(jsonFile)); IList <TestJson> listofJsons = JsonTemplateMapper.ReadListOfJson <TestJson>(jsonString); TestJson json1 = listofJsons[0]; TestJson json2 = listofJsons[1]; DescriptorDigest digest1 = DescriptorDigest.FromDigest( "sha256:91e0cae00b86c289b33fee303a807ae72dd9f0315c16b74e6ab0cdbe9d996c10"); DescriptorDigest digest2 = DescriptorDigest.FromDigest( "sha256:8c662931926fa990b41da3c9f42663a537ccd498130030f9149173a0493832ad"); Assert.AreEqual(1, json1.Number); Assert.AreEqual(2, json2.Number); Assert.AreEqual("text1", json1.Text); Assert.AreEqual("text2", json2.Text); Assert.AreEqual(digest1, json1.Digest); Assert.AreEqual(digest2, json2.Digest); Assert.AreEqual(10, json1.InnerObject.Number); Assert.AreEqual(20, json2.InnerObject.Number); Assert.AreEqual(2, json1.List.Count); Assert.IsTrue(json2.List.Count == 0); }
public void TestToBlob_listOfJson() { SystemPath jsonFile = Paths.Get(TestResources.GetResource("core/json/basic_list.json").ToURI()); string jsonString = Encoding.UTF8.GetString(Files.ReadAllBytes(jsonFile)); List <TestJson> listOfJson = JsonTemplateMapper.ReadListOfJson <TestJson>(jsonString); Assert.AreEqual(jsonString, JsonTemplateMapper.ToUtf8String(listOfJson)); }
public async Task TestWriteToAsync() { SystemPath fileA = Paths.Get(TestResources.GetResource("core/fileA").ToURI()); SystemPath fileB = Paths.Get(TestResources.GetResource("core/fileB").ToURI()); long fileASize = Files.Size(fileA); long fileBSize = Files.Size(fileB); DescriptorDigest fakeDigestA = DescriptorDigest.FromHash( "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5"); DescriptorDigest fakeDigestB = DescriptorDigest.FromHash( "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc6"); Mock.Get(mockLayer1).Setup(m => m.GetBlob()).Returns(Blobs.From(fileA)); Mock.Get(mockLayer1).Setup(m => m.GetBlobDescriptor()).Returns(new BlobDescriptor(fileASize, fakeDigestA)); Mock.Get(mockLayer1).Setup(m => m.GetDiffId()).Returns(fakeDigestA); Mock.Get(mockLayer2).Setup(m => m.GetBlob()).Returns(Blobs.From(fileB)); Mock.Get(mockLayer2).Setup(m => m.GetBlobDescriptor()).Returns(new BlobDescriptor(fileBSize, fakeDigestB)); Mock.Get(mockLayer2).Setup(m => m.GetDiffId()).Returns(fakeDigestB); Image testImage = Image.CreateBuilder(ManifestFormat.V22).AddLayer(mockLayer1).AddLayer(mockLayer2).Build(); ImageTarball imageToTarball = new ImageTarball(testImage, ImageReference.Parse("my/image:tag")); MemoryStream @out = new MemoryStream(); await imageToTarball.WriteToAsync(@out).ConfigureAwait(false); MemoryStream @in = new MemoryStream(@out.ToArray()); using (TarInputStream tarArchiveInputStream = new TarInputStream(@in)) { // Verifies layer with fileA was added. TarEntry headerFileALayer = tarArchiveInputStream.GetNextEntry(); Assert.AreEqual(fakeDigestA.GetHash() + ".tar.gz", headerFileALayer.Name); string fileAString = await new StreamReader(tarArchiveInputStream).ReadToEndAsync().ConfigureAwait(false); Assert.AreEqual(await Blobs.WriteToStringAsync(Blobs.From(fileA)).ConfigureAwait(false), fileAString); // Verifies layer with fileB was added. TarEntry headerFileBLayer = tarArchiveInputStream.GetNextEntry(); Assert.AreEqual(fakeDigestB.GetHash() + ".tar.gz", headerFileBLayer.Name); string fileBString = await new StreamReader(tarArchiveInputStream).ReadToEndAsync().ConfigureAwait(false); Assert.AreEqual(await Blobs.WriteToStringAsync(Blobs.From(fileB)).ConfigureAwait(false), fileBString); // Verifies container configuration was added. TarEntry headerContainerConfiguration = tarArchiveInputStream.GetNextEntry(); Assert.AreEqual("config.json", headerContainerConfiguration.Name); string containerConfigJson = await new StreamReader(tarArchiveInputStream).ReadToEndAsync().ConfigureAwait(false); JsonTemplateMapper.ReadJson <ContainerConfigurationTemplate>(containerConfigJson); // Verifies manifest was added. TarEntry headerManifest = tarArchiveInputStream.GetNextEntry(); Assert.AreEqual("manifest.json", headerManifest.Name); string manifestJson = await new StreamReader(tarArchiveInputStream).ReadToEndAsync().ConfigureAwait(false); JsonTemplateMapper.ReadListOfJson <DockerLoadManifestEntryTemplate>(manifestJson); } }