github.com/docker/app@v0.9.1-beta3.0.20210611140623-a48f773ab002/internal/packager/custom_test.go (about)

     1  package packager
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/deislabs/cnab-go/bundle"
     8  	"github.com/docker/app/internal"
     9  	"gotest.tools/assert"
    10  )
    11  
    12  func TestNewCustomPayload(t *testing.T) {
    13  	payloadJSON, err := newCustomPayload()
    14  	assert.NilError(t, err)
    15  
    16  	var payload payloadV1_0
    17  	err = json.Unmarshal(payloadJSON, &payload)
    18  	assert.NilError(t, err)
    19  
    20  	assert.Equal(t, internal.Version, payload.AppVersion())
    21  }
    22  
    23  func TestCustomPayloadNil(t *testing.T) {
    24  	testCases := []struct {
    25  		testName string
    26  		version  string
    27  		payload  interface{}
    28  	}{
    29  		{
    30  			testName: "NoVersion",
    31  			version:  "",
    32  			payload:  payloadV1_0{},
    33  		},
    34  		{
    35  			testName: "UnknownVersion",
    36  			version:  "unknown-version",
    37  			payload:  payloadV1_0{},
    38  		},
    39  		{
    40  			testName: "NoPayload",
    41  			version:  DockerAppPayloadVersionCurrent,
    42  			payload:  nil,
    43  		},
    44  	}
    45  	for _, tc := range testCases {
    46  		t.Run(tc.testName, func(t *testing.T) {
    47  			b := createBundle(t, "", payloadV1_0{})
    48  			payload, err := CustomPayload(&b)
    49  			assert.NilError(t, err)
    50  			assert.Assert(t, payload == nil)
    51  		})
    52  	}
    53  }
    54  
    55  func TestCustomPayloadV1_0_0(t *testing.T) {
    56  	b := createBundle(t, DockerAppPayloadVersion1_0_0, payloadV1_0{"version"})
    57  	payload, err := CustomPayload(&b)
    58  	assert.NilError(t, err)
    59  	v1, ok := payload.(payloadV1_0)
    60  	assert.Assert(t, ok)
    61  	assert.Equal(t, "version", v1.AppVersion())
    62  }
    63  
    64  func createBundle(t *testing.T, version string, payload interface{}) bundle.Bundle {
    65  	j, err := json.Marshal(payload)
    66  	assert.NilError(t, err)
    67  	return bundle.Bundle{
    68  		Custom: map[string]interface{}{
    69  			internal.CustomDockerAppName: DockerAppCustom{
    70  				Version: version,
    71  				Payload: j,
    72  			},
    73  		},
    74  	}
    75  }