code.gitea.io/gitea@v1.19.3/modules/packages/cargo/parser_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package cargo 5 6 import ( 7 "bytes" 8 "encoding/binary" 9 "io" 10 "strings" 11 "testing" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 const ( 17 description = "Package Description" 18 author = "KN4CK3R" 19 homepage = "https://gitea.io/" 20 license = "MIT" 21 ) 22 23 func TestParsePackage(t *testing.T) { 24 createPackage := func(name, version string) io.Reader { 25 metadata := `{ 26 "name":"` + name + `", 27 "vers":"` + version + `", 28 "description":"` + description + `", 29 "authors": ["` + author + `"], 30 "deps":[ 31 { 32 "name":"dep", 33 "version_req":"1.0" 34 } 35 ], 36 "homepage":"` + homepage + `", 37 "license":"` + license + `" 38 }` 39 40 var buf bytes.Buffer 41 binary.Write(&buf, binary.LittleEndian, uint32(len(metadata))) 42 buf.WriteString(metadata) 43 binary.Write(&buf, binary.LittleEndian, uint32(4)) 44 buf.WriteString("test") 45 return &buf 46 } 47 48 t.Run("InvalidName", func(t *testing.T) { 49 for _, name := range []string{"", "0test", "-test", "_test", strings.Repeat("a", 65)} { 50 data := createPackage(name, "1.0.0") 51 52 cp, err := ParsePackage(data) 53 assert.Nil(t, cp) 54 assert.ErrorIs(t, err, ErrInvalidName) 55 } 56 }) 57 58 t.Run("InvalidVersion", func(t *testing.T) { 59 for _, version := range []string{"", "1.", "-1.0", "1.0.0/1"} { 60 data := createPackage("test", version) 61 62 cp, err := ParsePackage(data) 63 assert.Nil(t, cp) 64 assert.ErrorIs(t, err, ErrInvalidVersion) 65 } 66 }) 67 68 t.Run("Valid", func(t *testing.T) { 69 data := createPackage("test", "1.0.0") 70 71 cp, err := ParsePackage(data) 72 assert.NotNil(t, cp) 73 assert.NoError(t, err) 74 75 assert.Equal(t, "test", cp.Name) 76 assert.Equal(t, "1.0.0", cp.Version) 77 assert.Equal(t, description, cp.Metadata.Description) 78 assert.Equal(t, []string{author}, cp.Metadata.Authors) 79 assert.Len(t, cp.Metadata.Dependencies, 1) 80 assert.Equal(t, "dep", cp.Metadata.Dependencies[0].Name) 81 assert.Equal(t, homepage, cp.Metadata.ProjectURL) 82 assert.Equal(t, license, cp.Metadata.License) 83 content, _ := io.ReadAll(cp.Content) 84 assert.Equal(t, "test", string(content)) 85 }) 86 }