mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 10:18:38 +00:00
Fixes #21291, allowing icons and other missing attributes to appear for NuGet packages from inside Visual Studio like they do with GitHub Nuget packages. Adds additional NuGet package information, particularly `IconURL`, to bring the Gitea NuGet API more in-line with GitHub's NuGet API. ref: https://learn.microsoft.com/en-us/nuget/api/search-query-service-resource
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"net/http/httptest"
|
||||
neturl "net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -100,6 +101,7 @@ func TestPackageNuGet(t *testing.T) {
|
||||
packageVersion := "1.0.3"
|
||||
packageAuthors := "KN4CK3R"
|
||||
packageDescription := "Gitea Test Package"
|
||||
isPrerelease := strings.Contains(packageVersion, "-")
|
||||
|
||||
symbolFilename := "test.pdb"
|
||||
symbolID := "d910bb6948bd4c6cb40155bcf52c3c94"
|
||||
@@ -112,11 +114,17 @@ func TestPackageNuGet(t *testing.T) {
|
||||
packageOwners := "Package Owners"
|
||||
packageProjectURL := "https://gitea.io"
|
||||
packageReleaseNotes := "Package Release Notes"
|
||||
summary := "This is a test package."
|
||||
packageTags := "tag_1 tag_2 tag_3"
|
||||
packageTitle := "Package Title"
|
||||
packageDevelopmentDependency := true
|
||||
packageRequireLicenseAcceptance := true
|
||||
|
||||
dependencyCount := 1
|
||||
dependencyTargetFramework := ".NETStandard2.0"
|
||||
dependencyID := "Microsoft.CSharp"
|
||||
dependencyVersion := "4.5.0"
|
||||
|
||||
createNuspec := func(id, version string) string {
|
||||
return `<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
||||
@@ -133,12 +141,13 @@ func TestPackageNuGet(t *testing.T) {
|
||||
<projectUrl>` + packageProjectURL + `</projectUrl>
|
||||
<releaseNotes>` + packageReleaseNotes + `</releaseNotes>
|
||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||
<summary>` + summary + `</summary>
|
||||
<tags>` + packageTags + `</tags>
|
||||
<title>` + packageTitle + `</title>
|
||||
<version>` + version + `</version>
|
||||
<dependencies>
|
||||
<group targetFramework=".NETStandard2.0">
|
||||
<dependency id="Microsoft.CSharp" version="4.5.0" />
|
||||
<group targetFramework="` + dependencyTargetFramework + `">
|
||||
<dependency id="` + dependencyID + `" version="` + dependencyVersion + `" />
|
||||
</group>
|
||||
</dependencies>
|
||||
</metadata>
|
||||
@@ -428,7 +437,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
||||
|
||||
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, int64(610), pb.Size)
|
||||
assert.Equal(t, int64(633), pb.Size)
|
||||
case fmt.Sprintf("%s.%s.snupkg", packageName, packageVersion):
|
||||
assert.False(t, pf.IsLead)
|
||||
|
||||
@@ -440,7 +449,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
||||
|
||||
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, int64(996), pb.Size)
|
||||
assert.Equal(t, int64(1043), pb.Size)
|
||||
case symbolFilename:
|
||||
assert.False(t, pf.IsLead)
|
||||
|
||||
@@ -747,17 +756,39 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
||||
assert.Equal(t, indexURL, result.RegistrationIndexURL)
|
||||
assert.Equal(t, 1, result.Count)
|
||||
assert.Len(t, result.Pages, 1)
|
||||
assert.Equal(t, indexURL, result.Pages[0].RegistrationPageURL)
|
||||
assert.Equal(t, packageVersion, result.Pages[0].Lower)
|
||||
assert.Equal(t, packageVersion, result.Pages[0].Upper)
|
||||
assert.Equal(t, 1, result.Pages[0].Count)
|
||||
assert.Len(t, result.Pages[0].Items, 1)
|
||||
assert.Equal(t, packageName, result.Pages[0].Items[0].CatalogEntry.ID)
|
||||
assert.Equal(t, packageVersion, result.Pages[0].Items[0].CatalogEntry.Version)
|
||||
assert.Equal(t, packageAuthors, result.Pages[0].Items[0].CatalogEntry.Authors)
|
||||
assert.Equal(t, packageDescription, result.Pages[0].Items[0].CatalogEntry.Description)
|
||||
assert.Equal(t, leafURL, result.Pages[0].Items[0].CatalogEntry.CatalogLeafURL)
|
||||
assert.Equal(t, contentURL, result.Pages[0].Items[0].CatalogEntry.PackageContentURL)
|
||||
|
||||
page := result.Pages[0]
|
||||
assert.Equal(t, indexURL, page.RegistrationPageURL)
|
||||
assert.Equal(t, packageVersion, page.Lower)
|
||||
assert.Equal(t, packageVersion, page.Upper)
|
||||
assert.Equal(t, 1, page.Count)
|
||||
assert.Len(t, page.Items, 1)
|
||||
|
||||
item := page.Items[0]
|
||||
assert.Equal(t, packageName, item.CatalogEntry.ID)
|
||||
assert.Equal(t, packageVersion, item.CatalogEntry.Version)
|
||||
assert.Equal(t, packageAuthors, item.CatalogEntry.Authors)
|
||||
assert.Equal(t, packageDescription, item.CatalogEntry.Description)
|
||||
assert.Equal(t, leafURL, item.CatalogEntry.CatalogLeafURL)
|
||||
assert.Equal(t, contentURL, item.CatalogEntry.PackageContentURL)
|
||||
assert.Equal(t, packageIconURL, item.CatalogEntry.IconURL)
|
||||
assert.Equal(t, packageLanguage, item.CatalogEntry.Language)
|
||||
assert.Equal(t, packageLicenseURL, item.CatalogEntry.LicenseURL)
|
||||
assert.Equal(t, packageProjectURL, item.CatalogEntry.ProjectURL)
|
||||
assert.Equal(t, packageReleaseNotes, item.CatalogEntry.ReleaseNotes)
|
||||
assert.Equal(t, packageRequireLicenseAcceptance, item.CatalogEntry.RequireLicenseAcceptance)
|
||||
assert.Equal(t, packageTags, item.CatalogEntry.Tags)
|
||||
assert.Equal(t, summary, item.CatalogEntry.Summary)
|
||||
assert.Equal(t, isPrerelease, item.CatalogEntry.IsPrerelease)
|
||||
assert.Len(t, item.CatalogEntry.DependencyGroups, dependencyCount)
|
||||
|
||||
dependencyGroup := item.CatalogEntry.DependencyGroups[0]
|
||||
assert.Equal(t, dependencyTargetFramework, dependencyGroup.TargetFramework)
|
||||
assert.Len(t, dependencyGroup.Dependencies, dependencyCount)
|
||||
|
||||
dependency := dependencyGroup.Dependencies[0]
|
||||
assert.Equal(t, dependencyID, dependency.ID)
|
||||
assert.Equal(t, dependencyVersion, dependency.Range)
|
||||
})
|
||||
|
||||
t.Run("RegistrationLeaf", func(t *testing.T) {
|
||||
@@ -789,7 +820,8 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
||||
assert.Equal(t, packageTags, result.Properties.Tags)
|
||||
assert.Equal(t, packageTitle, result.Properties.Title)
|
||||
|
||||
assert.Equal(t, "Microsoft.CSharp:4.5.0:.NETStandard2.0", result.Properties.Dependencies)
|
||||
packageVersion := strings.Join([]string{dependencyID, dependencyVersion, dependencyTargetFramework}, ":")
|
||||
assert.Equal(t, packageVersion, result.Properties.Dependencies)
|
||||
})
|
||||
|
||||
t.Run("v3", func(t *testing.T) {
|
||||
@@ -803,8 +835,30 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
||||
DecodeJSON(t, resp, &result)
|
||||
|
||||
assert.Equal(t, leafURL, result.RegistrationLeafURL)
|
||||
assert.Equal(t, contentURL, result.PackageContentURL)
|
||||
assert.Equal(t, indexURL, result.RegistrationIndexURL)
|
||||
assert.Equal(t, packageAuthors, result.CatalogEntry.Authors)
|
||||
assert.Equal(t, packageCopyright, result.CatalogEntry.Copyright)
|
||||
|
||||
dependencyGroup := result.CatalogEntry.DependencyGroups[0]
|
||||
assert.Equal(t, dependencyTargetFramework, dependencyGroup.TargetFramework)
|
||||
assert.Len(t, dependencyGroup.Dependencies, dependencyCount)
|
||||
|
||||
dependency := dependencyGroup.Dependencies[0]
|
||||
assert.Equal(t, dependencyID, dependency.ID)
|
||||
assert.Equal(t, dependencyVersion, dependency.Range)
|
||||
|
||||
assert.Equal(t, packageDescription, result.CatalogEntry.Description)
|
||||
assert.Equal(t, packageID, result.CatalogEntry.ID)
|
||||
assert.Equal(t, packageIconURL, result.CatalogEntry.IconURL)
|
||||
assert.Equal(t, isPrerelease, result.CatalogEntry.IsPrerelease)
|
||||
assert.Equal(t, packageLanguage, result.CatalogEntry.Language)
|
||||
assert.Equal(t, packageLicenseURL, result.CatalogEntry.LicenseURL)
|
||||
assert.Equal(t, contentURL, result.PackageContentURL)
|
||||
assert.Equal(t, packageProjectURL, result.CatalogEntry.ProjectURL)
|
||||
assert.Equal(t, packageRequireLicenseAcceptance, result.CatalogEntry.RequireLicenseAcceptance)
|
||||
assert.Equal(t, summary, result.CatalogEntry.Summary)
|
||||
assert.Equal(t, packageTags, result.CatalogEntry.Tags)
|
||||
assert.Equal(t, packageVersion, result.CatalogEntry.Version)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user