github.com/brahmaroutu/docker@v1.2.1-0.20160809185609-eb28dde01f16/api/client/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  }