github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/internal/packager/fork_test.go (about)

     1  package packager
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/docker/app/types/metadata"
     7  	"gotest.tools/assert"
     8  )
     9  
    10  func TestSplitPackageName(t *testing.T) {
    11  	ns, name := splitPackageName("foo/bar")
    12  	assert.Equal(t, ns, "foo")
    13  	assert.Equal(t, name, "bar")
    14  
    15  	ns, name = splitPackageName("nonamespace")
    16  	assert.Equal(t, ns, "")
    17  	assert.Equal(t, name, "nonamespace")
    18  
    19  	ns, name = splitPackageName("some.repo.tk/v3/foo/bar")
    20  	assert.Equal(t, ns, "some.repo.tk/v3/foo")
    21  	assert.Equal(t, name, "bar")
    22  }
    23  
    24  var sampleMetadata = `
    25  name: machine
    26  namespace: heavy.metal
    27  version: "2000"
    28  maintainers:
    29    - name: Billy Corgan
    30      email: billy@pumpkins.net
    31  `
    32  
    33  var decodedSampleMetadata = metadata.AppMetadata{
    34  	Name:      "machine",
    35  	Namespace: "heavy.metal",
    36  	Version:   "2000",
    37  	Maintainers: []metadata.Maintainer{
    38  		{Name: "Billy Corgan", Email: "billy@pumpkins.net"},
    39  	},
    40  }
    41  
    42  func TestLoadMetadata(t *testing.T) {
    43  	appmeta, err := loadMetadata([]byte(sampleMetadata))
    44  	assert.NilError(t, err)
    45  	assert.DeepEqual(t, appmeta, metadata.AppMetadata{
    46  		Name:      "machine",
    47  		Namespace: "heavy.metal",
    48  		Version:   "2000",
    49  		Maintainers: []metadata.Maintainer{
    50  			{Name: "Billy Corgan", Email: "billy@pumpkins.net"},
    51  		},
    52  	})
    53  }
    54  
    55  func TestLoadEmptyMetadata(t *testing.T) {
    56  	appmeta, err := loadMetadata([]byte(""))
    57  	assert.NilError(t, err)
    58  	assert.DeepEqual(t, appmeta, metadata.AppMetadata{})
    59  }
    60  
    61  func TestLoadInvalidMetadata(t *testing.T) {
    62  	_, err := loadMetadata([]byte("'rootstring'"))
    63  	assert.ErrorContains(t, err, "failed to parse application metadata")
    64  }
    65  
    66  func TestUpdateMetadata(t *testing.T) {
    67  	newNamespace := "frog"
    68  	newName := "machine"
    69  	maintainers := []string{"infected mushroom:im@psy.net"}
    70  
    71  	output, err := updateMetadata([]byte(sampleMetadata), newNamespace, newName, maintainers)
    72  	assert.NilError(t, err)
    73  	decodedOutput, err := loadMetadata(output)
    74  	assert.NilError(t, err)
    75  	assert.DeepEqual(t, decodedOutput, metadata.AppMetadata{
    76  		Name:      "machine",
    77  		Namespace: "frog",
    78  		Version:   decodedSampleMetadata.Version,
    79  		Maintainers: []metadata.Maintainer{
    80  			{Name: "infected mushroom", Email: "im@psy.net"},
    81  		},
    82  		Parents: metadata.Parents{
    83  			{
    84  				Name:        decodedSampleMetadata.Name,
    85  				Namespace:   decodedSampleMetadata.Namespace,
    86  				Version:     decodedSampleMetadata.Version,
    87  				Maintainers: decodedSampleMetadata.Maintainers,
    88  			},
    89  		},
    90  	})
    91  }
    92  
    93  func TestUpdateMetadataInvalidOrigin(t *testing.T) {
    94  	_, err := updateMetadata([]byte("'rootstring'"), "", "", []string{})
    95  	assert.ErrorContains(t, err, "failed to parse application metadata")
    96  }