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  }