github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/cli/command/bundlefile/bundlefile_test.go (about) 1 // +build experimental 2 3 package bundlefile 4 5 import ( 6 "bytes" 7 "strings" 8 "testing" 9 10 "github.com/docker/docker/pkg/testutil/assert" 11 ) 12 13 func TestLoadFileV01Success(t *testing.T) { 14 reader := strings.NewReader(`{ 15 "Version": "0.1", 16 "Services": { 17 "redis": { 18 "Image": "redis@sha256:4b24131101fa0117bcaa18ac37055fffd9176aa1a240392bb8ea85e0be50f2ce", 19 "Networks": ["default"] 20 }, 21 "web": { 22 "Image": "dockercloud/hello-world@sha256:fe79a2cfbd17eefc344fb8419420808df95a1e22d93b7f621a7399fd1e9dca1d", 23 "Networks": ["default"], 24 "User": "web" 25 } 26 } 27 }`) 28 29 bundle, err := LoadFile(reader) 30 assert.NilError(t, err) 31 assert.Equal(t, bundle.Version, "0.1") 32 assert.Equal(t, len(bundle.Services), 2) 33 } 34 35 func TestLoadFileSyntaxError(t *testing.T) { 36 reader := strings.NewReader(`{ 37 "Version": "0.1", 38 "Services": unquoted string 39 }`) 40 41 _, err := LoadFile(reader) 42 assert.Error(t, err, "syntax error at byte 37: invalid character 'u'") 43 } 44 45 func TestLoadFileTypeError(t *testing.T) { 46 reader := strings.NewReader(`{ 47 "Version": "0.1", 48 "Services": { 49 "web": { 50 "Image": "redis", 51 "Networks": "none" 52 } 53 } 54 }`) 55 56 _, err := LoadFile(reader) 57 assert.Error(t, err, "Unexpected type at byte 94. Expected []string but received string") 58 } 59 60 func TestPrint(t *testing.T) { 61 var buffer bytes.Buffer 62 bundle := &Bundlefile{ 63 Version: "0.1", 64 Services: map[string]Service{ 65 "web": { 66 Image: "image", 67 Command: []string{"echo", "something"}, 68 }, 69 }, 70 } 71 assert.NilError(t, Print(&buffer, bundle)) 72 output := buffer.String() 73 assert.Contains(t, output, "\"Image\": \"image\"") 74 assert.Contains(t, output, 75 `"Command": [ 76 "echo", 77 "something" 78 ]`) 79 }