github.com/resin-io/docker@v1.13.1/image/image_test.go (about)

     1  package image
     2  
     3  import (
     4  	"encoding/json"
     5  	"sort"
     6  	"strings"
     7  	"testing"
     8  )
     9  
    10  const sampleImageJSON = `{
    11  	"architecture": "amd64",
    12  	"os": "linux",
    13  	"config": {},
    14  	"rootfs": {
    15  		"type": "layers",
    16  		"diff_ids": []
    17  	}
    18  }`
    19  
    20  func TestJSON(t *testing.T) {
    21  	img, err := NewFromJSON([]byte(sampleImageJSON))
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	rawJSON := img.RawJSON()
    26  	if string(rawJSON) != sampleImageJSON {
    27  		t.Fatalf("Raw JSON of config didn't match: expected %+v, got %v", sampleImageJSON, rawJSON)
    28  	}
    29  }
    30  
    31  func TestInvalidJSON(t *testing.T) {
    32  	_, err := NewFromJSON([]byte("{}"))
    33  	if err == nil {
    34  		t.Fatal("Expected JSON parse error")
    35  	}
    36  }
    37  
    38  func TestMarshalKeyOrder(t *testing.T) {
    39  	b, err := json.Marshal(&Image{
    40  		V1Image: V1Image{
    41  			Comment:      "a",
    42  			Author:       "b",
    43  			Architecture: "c",
    44  		},
    45  	})
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  
    50  	expectedOrder := []string{"architecture", "author", "comment"}
    51  	var indexes []int
    52  	for _, k := range expectedOrder {
    53  		indexes = append(indexes, strings.Index(string(b), k))
    54  	}
    55  
    56  	if !sort.IntsAreSorted(indexes) {
    57  		t.Fatal("invalid key order in JSON: ", string(b))
    58  	}
    59  }