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  }