Path: blob/main/components/registry-facade-api/go/imagespec_test.go
2500 views
// Copyright (c) 2020 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package api_test56import (7"testing"89"google.golang.org/protobuf/proto"1011"github.com/gitpod-io/gitpod/registry-facade/api"12)1314func TestBase64BackAndForth(t *testing.T) {15tests := []struct {16Desc string17Input *api.ImageSpec18}{19{"nil spec", nil},20{"base image only", &api.ImageSpec{BaseRef: "alpine:latest"}},21{"theia version only", &api.ImageSpec{IdeRef: "master.abc"}},22{"base image and theia", &api.ImageSpec{BaseRef: "alpine:latest", IdeRef: "master.2000"}},23{"content layer", &api.ImageSpec{24BaseRef: "something:latest",25ContentLayer: []*api.ContentLayer{26{27Spec: &api.ContentLayer_Remote{28Remote: &api.RemoteContentLayer{29DiffId: "sha256:abc",30Digest: "sha256:def",31Url: "https://soomewhere.over/the/rainbow",32},33},34},35},36}},37}3839for _, test := range tests {40t.Run(test.Desc, func(t *testing.T) {41enc, err := test.Input.ToBase64()42if err != nil {43t.Errorf("unexpected error: %v", err)44return45}4647spec, err := api.ImageSpecFromBase64(enc)48if err != nil {49t.Errorf("unexpected error: %v", err)50return51}5253if !proto.Equal(spec, test.Input) {54t.Errorf("unexpected spec: expected \"%+q\", got \"%+q\"", test.Input, spec)55}56})57}58}596061