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