package io.fabric8.maven.docker.model; import java.util.Arrays; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class ImageArchiveManifestEntryAdapterTest { @Test public void createFromEmptyJsonObject() { ImageArchiveManifestEntryAdapter entry = new ImageArchiveManifestEntryAdapter(new JsonObject()); Assert.assertNotNull(entry); Assert.assertNull(entry.getConfig()); Assert.assertNull(entry.getId()); Assert.assertNotNull(entry.getRepoTags()); Assert.assertTrue(entry.getRepoTags().isEmpty()); Assert.assertNotNull(entry.getLayers()); Assert.assertTrue(entry.getLayers().isEmpty()); } @Test public void createFromValidJsonObject() { JsonObject entryJson = new JsonObject(); entryJson.addProperty(ImageArchiveManifestEntryAdapter.CONFIG, "image-id-sha256.json"); JsonArray repoTagsJson = new JsonArray(); repoTagsJson.add("test/image:latest"); entryJson.add(ImageArchiveManifestEntryAdapter.REPO_TAGS, repoTagsJson); JsonArray layersJson = new JsonArray(); layersJson.add("layer-id-sha256/layer.tar"); entryJson.add(ImageArchiveManifestEntryAdapter.LAYERS, layersJson); ImageArchiveManifestEntryAdapter entry = new ImageArchiveManifestEntryAdapter(entryJson); Assert.assertNotNull(entry); Assert.assertEquals("image-id-sha256.json", entry.getConfig()); Assert.assertEquals("image-id-sha256", entry.getId()); Assert.assertNotNull(entry.getRepoTags()); Assert.assertEquals(Collections.singletonList("test/image:latest"), entry.getRepoTags()); Assert.assertNotNull(entry.getLayers()); Assert.assertEquals(Collections.singletonList("layer-id-sha256/layer.tar"), entry.getLayers()); } @Test public void createFromValidJsonObjectWithAdditionalFields() { JsonObject entryJson = new JsonObject(); entryJson.addProperty("Random", "new feature"); entryJson.addProperty(ImageArchiveManifestEntryAdapter.CONFIG, "image-id-sha256.json"); JsonArray repoTagsJson = new JsonArray(); repoTagsJson.add("test/image:latest"); entryJson.add(ImageArchiveManifestEntryAdapter.REPO_TAGS, repoTagsJson); JsonArray layersJson = new JsonArray(); layersJson.add("layer-id-sha256/layer.tar"); entryJson.add(ImageArchiveManifestEntryAdapter.LAYERS, layersJson); ImageArchiveManifestEntryAdapter entry = new ImageArchiveManifestEntryAdapter(entryJson); Assert.assertNotNull(entry); Assert.assertEquals("image-id-sha256.json", entry.getConfig()); Assert.assertEquals("image-id-sha256", entry.getId()); Assert.assertNotNull(entry.getRepoTags()); Assert.assertEquals(Collections.singletonList("test/image:latest"), entry.getRepoTags()); Assert.assertNotNull(entry.getLayers()); Assert.assertEquals(Collections.singletonList("layer-id-sha256/layer.tar"), entry.getLayers()); } @Test public void createFromPartlyValidJsonObject() { JsonObject entryJson = new JsonObject(); entryJson.addProperty(ImageArchiveManifestEntryAdapter.CONFIG, "image-id-sha256.json"); JsonArray repoTagsJson = new JsonArray(); repoTagsJson.add("test/image:latest"); entryJson.add(ImageArchiveManifestEntryAdapter.REPO_TAGS, repoTagsJson); JsonObject layersJson = new JsonObject(); layersJson.addProperty("layer1", "layer-id-sha256/layer.tar"); entryJson.add(ImageArchiveManifestEntryAdapter.LAYERS, layersJson); ImageArchiveManifestEntryAdapter entry = new ImageArchiveManifestEntryAdapter(entryJson); Assert.assertNotNull(entry); Assert.assertEquals("image-id-sha256.json", entry.getConfig()); Assert.assertEquals("image-id-sha256", entry.getId()); Assert.assertNotNull(entry.getRepoTags()); Assert.assertEquals(Collections.singletonList("test/image:latest"), entry.getRepoTags()); Assert.assertNotNull(entry.getLayers()); Assert.assertTrue(entry.getLayers().isEmpty()); } }