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 | } } |