diff options
Diffstat (limited to 'pkg/v1/manifest_test.go')
-rw-r--r-- | pkg/v1/manifest_test.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/pkg/v1/manifest_test.go b/pkg/v1/manifest_test.go new file mode 100644 index 0000000..5cd5526 --- /dev/null +++ b/pkg/v1/manifest_test.go @@ -0,0 +1,76 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import ( + "strings" + "testing" + + "github.com/google/go-cmp/cmp" +) + +func TestGoodManifestSimple(t *testing.T) { + got, err := ParseManifest(strings.NewReader(`{}`)) + if err != nil { + t.Errorf("Unexpected error parsing manifest: %v", err) + } + + want := Manifest{} + if diff := cmp.Diff(want, *got); diff != "" { + t.Errorf("ParseManifest({}); (-want +got) %s", diff) + } +} + +func TestGoodManifestWithHash(t *testing.T) { + good, err := ParseManifest(strings.NewReader(`{ + "config": { + "digest": "sha256:deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" + } +}`)) + if err != nil { + t.Errorf("Unexpected error parsing manifest: %v", err) + } + + if got, want := good.Config.Digest.Algorithm, "sha256"; got != want { + t.Errorf("ParseManifest().Config.Digest.Algorithm; got %v, want %v", got, want) + } +} + +func TestManifestWithBadHash(t *testing.T) { + bad, err := ParseManifest(strings.NewReader(`{ + "config": { + "digest": "sha256:deadbeed" + } +}`)) + if err == nil { + t.Errorf("Expected error parsing manifest, but got: %v", bad) + } +} + +func TestParseIndexManifest(t *testing.T) { + got, err := ParseIndexManifest(strings.NewReader(`{}`)) + if err != nil { + t.Errorf("Unexpected error parsing manifest: %v", err) + } + + want := IndexManifest{} + if diff := cmp.Diff(want, *got); diff != "" { + t.Errorf("ParseIndexManifest({}); (-want +got) %s", diff) + } + + if got, err := ParseIndexManifest(strings.NewReader("{")); err == nil { + t.Errorf("expected error, got: %v", got) + } +} |