2022-12-08 13:05:19 -03:00

60 lines
1.4 KiB
Go

// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package api_test
import (
"testing"
"google.golang.org/protobuf/proto"
"github.com/gitpod-io/gitpod/registry-facade/api"
)
func TestBase64BackAndForth(t *testing.T) {
tests := []struct {
Desc string
Input *api.ImageSpec
}{
{"nil spec", nil},
{"base image only", &api.ImageSpec{BaseRef: "alpine:latest"}},
{"theia version only", &api.ImageSpec{IdeRef: "master.abc"}},
{"base image and theia", &api.ImageSpec{BaseRef: "alpine:latest", IdeRef: "master.2000"}},
{"content layer", &api.ImageSpec{
BaseRef: "something:latest",
ContentLayer: []*api.ContentLayer{
{
Spec: &api.ContentLayer_Remote{
Remote: &api.RemoteContentLayer{
DiffId: "sha256:abc",
Digest: "sha256:def",
Url: "https://soomewhere.over/the/rainbow",
},
},
},
},
}},
}
for _, test := range tests {
t.Run(test.Desc, func(t *testing.T) {
enc, err := test.Input.ToBase64()
if err != nil {
t.Errorf("unexpected error: %v", err)
return
}
spec, err := api.ImageSpecFromBase64(enc)
if err != nil {
t.Errorf("unexpected error: %v", err)
return
}
if !proto.Equal(spec, test.Input) {
t.Errorf("unexpected spec: expected \"%+q\", got \"%+q\"", test.Input, spec)
}
})
}
}