get.porter.sh/porter@v1.3.0/pkg/cnab/docker_test.go (about) 1 package cnab 2 3 import ( 4 "testing" 5 6 "github.com/cnabio/cnab-go/bundle" 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestProcessedExtensions_GetDockerExtension(t *testing.T) { 12 t.Parallel() 13 14 t.Run("extension present", func(t *testing.T) { 15 t.Parallel() 16 17 ext := ProcessedExtensions{ 18 DockerExtensionKey: Docker{ 19 Privileged: true, 20 }, 21 } 22 23 dockerExt, dockerRequired, err := ext.GetDocker() 24 require.NoError(t, err, "GetDocker failed") 25 assert.True(t, dockerRequired, "docker should be a required extension") 26 assert.Equal(t, Docker{Privileged: true}, dockerExt, "docker config was not populated properly") 27 }) 28 29 t.Run("extension missing", func(t *testing.T) { 30 t.Parallel() 31 32 ext := ProcessedExtensions{} 33 34 dockerExt, dockerRequired, err := ext.GetDocker() 35 require.NoError(t, err, "GetDocker failed") 36 assert.False(t, dockerRequired, "docker should NOT be a required extension") 37 assert.Equal(t, Docker{}, dockerExt, "Docker config should default to empty when not required") 38 }) 39 40 t.Run("extension invalid", func(t *testing.T) { 41 t.Parallel() 42 43 ext := ProcessedExtensions{ 44 DockerExtensionKey: map[string]string{"ponies": "are great"}, 45 } 46 47 dockerExt, dockerRequired, err := ext.GetDocker() 48 require.Error(t, err, "GetDocker should have failed") 49 assert.True(t, dockerRequired, "docker should be a required extension") 50 assert.Equal(t, Docker{}, dockerExt, "Docker config should default to empty") 51 }) 52 } 53 54 func TestSupportsDocker(t *testing.T) { 55 t.Parallel() 56 57 t.Run("supported", func(t *testing.T) { 58 b := NewBundle(bundle.Bundle{ 59 RequiredExtensions: []string{DockerExtensionKey}, 60 }) 61 62 assert.True(t, b.SupportsDocker()) 63 }) 64 t.Run("unsupported", func(t *testing.T) { 65 b := NewBundle(bundle.Bundle{}) 66 67 assert.False(t, b.SupportsDocker()) 68 }) 69 }