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 }