image/image_test.go
504e67b8
 package image
 
 import (
01ba0a93
 	"encoding/json"
 	"sort"
 	"strings"
504e67b8
 	"testing"
 )
 
01ba0a93
 const sampleImageJSON = `{
 	"architecture": "amd64",
 	"os": "linux",
 	"config": {},
 	"rootfs": {
 		"type": "layers",
 		"diff_ids": []
 	}
 }`
504e67b8
 
01ba0a93
 func TestJSON(t *testing.T) {
 	img, err := NewFromJSON([]byte(sampleImageJSON))
504e67b8
 	if err != nil {
01ba0a93
 		t.Fatal(err)
 	}
 	rawJSON := img.RawJSON()
 	if string(rawJSON) != sampleImageJSON {
 		t.Fatalf("Raw JSON of config didn't match: expected %+v, got %v", sampleImageJSON, rawJSON)
504e67b8
 	}
 }
 
01ba0a93
 func TestInvalidJSON(t *testing.T) {
 	_, err := NewFromJSON([]byte("{}"))
 	if err == nil {
 		t.Fatal("Expected JSON parse error")
504e67b8
 	}
 }
 
01ba0a93
 func TestMarshalKeyOrder(t *testing.T) {
 	b, err := json.Marshal(&Image{
 		V1Image: V1Image{
 			Comment:      "a",
 			Author:       "b",
 			Architecture: "c",
 		},
 	})
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	expectedOrder := []string{"architecture", "author", "comment"}
 	var indexes []int
 	for _, k := range expectedOrder {
 		indexes = append(indexes, strings.Index(string(b), k))
 	}
504e67b8
 
01ba0a93
 	if !sort.IntsAreSorted(indexes) {
 		t.Fatal("invalid key order in JSON: ", string(b))
504e67b8
 	}
 }