code.gitea.io/gitea@v1.22.3/modules/packages/goproxy/metadata_test.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package goproxy 5 6 import ( 7 "archive/zip" 8 "bytes" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 const ( 15 packageName = "gitea.com/go-gitea/gitea" 16 packageVersion = "v0.0.1" 17 ) 18 19 func TestParsePackage(t *testing.T) { 20 createArchive := func(files map[string][]byte) *bytes.Reader { 21 var buf bytes.Buffer 22 zw := zip.NewWriter(&buf) 23 for name, content := range files { 24 w, _ := zw.Create(name) 25 w.Write(content) 26 } 27 zw.Close() 28 return bytes.NewReader(buf.Bytes()) 29 } 30 31 t.Run("EmptyPackage", func(t *testing.T) { 32 data := createArchive(nil) 33 34 p, err := ParsePackage(data, int64(data.Len())) 35 assert.Nil(t, p) 36 assert.ErrorIs(t, err, ErrInvalidStructure) 37 }) 38 39 t.Run("InvalidNameOrVersionStructure", func(t *testing.T) { 40 data := createArchive(map[string][]byte{ 41 packageName + "/" + packageVersion + "/go.mod": {}, 42 }) 43 44 p, err := ParsePackage(data, int64(data.Len())) 45 assert.Nil(t, p) 46 assert.ErrorIs(t, err, ErrInvalidStructure) 47 }) 48 49 t.Run("GoModFileInWrongDirectory", func(t *testing.T) { 50 data := createArchive(map[string][]byte{ 51 packageName + "@" + packageVersion + "/subdir/go.mod": {}, 52 }) 53 54 p, err := ParsePackage(data, int64(data.Len())) 55 assert.NotNil(t, p) 56 assert.NoError(t, err) 57 assert.Equal(t, packageName, p.Name) 58 assert.Equal(t, packageVersion, p.Version) 59 assert.Equal(t, "module gitea.com/go-gitea/gitea", p.GoMod) 60 }) 61 62 t.Run("Valid", func(t *testing.T) { 63 data := createArchive(map[string][]byte{ 64 packageName + "@" + packageVersion + "/subdir/go.mod": []byte("invalid"), 65 packageName + "@" + packageVersion + "/go.mod": []byte("valid"), 66 }) 67 68 p, err := ParsePackage(data, int64(data.Len())) 69 assert.NotNil(t, p) 70 assert.NoError(t, err) 71 assert.Equal(t, packageName, p.Name) 72 assert.Equal(t, packageVersion, p.Version) 73 assert.Equal(t, "valid", p.GoMod) 74 }) 75 }