1// Copyright 2016 VMware, Inc. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//    http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package backends
16
17import (
18	"fmt"
19	"testing"
20	"time"
21
22	"github.com/docker/docker/api/types/container"
23	v1 "github.com/docker/docker/image"
24
25	"github.com/stretchr/testify/assert"
26
27	"github.com/vmware/vic/lib/metadata"
28)
29
30func TestConvertV1ImageToDockerImage(t *testing.T) {
31	now := time.Now()
32
33	image := &metadata.ImageConfig{
34		V1Image: v1.V1Image{
35			ID:      "deadbeef",
36			Size:    1024,
37			Created: now,
38			Parent:  "",
39			Config: &container.Config{
40				Labels: map[string]string{},
41			},
42		},
43		ImageID:   "test_id",
44		Digests:   []string{fmt.Sprintf("%s@sha:%s", "test_name", "12345")},
45		Tags:      []string{fmt.Sprintf("%s:%s", "test_name", "test_tag")},
46		Name:      "test_name",
47		DiffIDs:   map[string]string{"test_diffid": "test_layerid"},
48		History:   []v1.History{},
49		Reference: "test_name:test_tag",
50	}
51
52	dockerImage := convertV1ImageToDockerImage(image)
53
54	assert.Equal(t, image.ImageID, dockerImage.ID, "Error: expected id %s, got %s", image.ImageID, dockerImage.ID)
55	assert.Equal(t, image.Size, dockerImage.VirtualSize, "Error: expected size %s, got %s", image.Size, dockerImage.VirtualSize)
56	assert.Equal(t, image.Size, dockerImage.Size, "Error: expected size %s, got %s", image.Size, dockerImage.Size)
57	assert.Equal(t, image.Created.Unix(), dockerImage.Created, "Error: expected created %s, got %s", image.Created, dockerImage.Created)
58	assert.Equal(t, image.Parent, dockerImage.ParentID, "Error: expected parent %s, got %s", image.Parent, dockerImage.ParentID)
59	assert.Equal(t, image.Config.Labels, dockerImage.Labels, "Error: expected labels %s, got %s", image.Config.Labels, dockerImage.Labels)
60	assert.Equal(t, image.Digests[0], dockerImage.RepoDigests[0], "Error: expected digest %s, got %s", image.Digests[0], dockerImage.RepoDigests[0])
61	assert.Equal(t, image.Tags[0], dockerImage.RepoTags[0], "Error: expected tag %s, got %s", image.Tags[0], dockerImage.RepoTags[0])
62}
63