code.gitea.io/gitea@v1.22.3/modules/packages/maven/metadata_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package maven 5 6 import ( 7 "strings" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 "golang.org/x/text/encoding/charmap" 12 ) 13 14 const ( 15 groupID = "org.gitea" 16 artifactID = "my-project" 17 version = "1.0.1" 18 name = "My Gitea Project" 19 description = "Package Description" 20 projectURL = "https://gitea.io" 21 license = "MIT" 22 dependencyGroupID = "org.gitea.core" 23 dependencyArtifactID = "git" 24 dependencyVersion = "5.0.0" 25 ) 26 27 const pomContent = `<?xml version="1.0"?> 28 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 29 <groupId>` + groupID + `</groupId> 30 <artifactId>` + artifactID + `</artifactId> 31 <version>` + version + `</version> 32 <name>` + name + `</name> 33 <description>` + description + `</description> 34 <url>` + projectURL + `</url> 35 <licenses> 36 <license> 37 <name>` + license + `</name> 38 </license> 39 </licenses> 40 <dependencies> 41 <dependency> 42 <groupId>` + dependencyGroupID + `</groupId> 43 <artifactId>` + dependencyArtifactID + `</artifactId> 44 <version>` + dependencyVersion + `</version> 45 </dependency> 46 </dependencies> 47 </project>` 48 49 func TestParsePackageMetaData(t *testing.T) { 50 t.Run("InvalidFile", func(t *testing.T) { 51 m, err := ParsePackageMetaData(strings.NewReader("")) 52 assert.Nil(t, m) 53 assert.Error(t, err) 54 }) 55 56 t.Run("Valid", func(t *testing.T) { 57 m, err := ParsePackageMetaData(strings.NewReader(pomContent)) 58 assert.NoError(t, err) 59 assert.NotNil(t, m) 60 61 assert.Equal(t, groupID, m.GroupID) 62 assert.Equal(t, artifactID, m.ArtifactID) 63 assert.Equal(t, name, m.Name) 64 assert.Equal(t, description, m.Description) 65 assert.Equal(t, projectURL, m.ProjectURL) 66 assert.Len(t, m.Licenses, 1) 67 assert.Equal(t, license, m.Licenses[0]) 68 assert.Len(t, m.Dependencies, 1) 69 assert.Equal(t, dependencyGroupID, m.Dependencies[0].GroupID) 70 assert.Equal(t, dependencyArtifactID, m.Dependencies[0].ArtifactID) 71 assert.Equal(t, dependencyVersion, m.Dependencies[0].Version) 72 }) 73 74 t.Run("Encoding", func(t *testing.T) { 75 // UTF-8 is default but the metadata could be encoded differently 76 pomContent8859_1, err := charmap.ISO8859_1.NewEncoder().String( 77 strings.ReplaceAll( 78 pomContent, 79 `<?xml version="1.0"?>`, 80 `<?xml version="1.0" encoding="ISO-8859-1"?>`, 81 ), 82 ) 83 assert.NoError(t, err) 84 85 m, err := ParsePackageMetaData(strings.NewReader(pomContent8859_1)) 86 assert.NoError(t, err) 87 assert.NotNil(t, m) 88 }) 89 }