mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-12 07:30:27 +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:
parent
ddfa2e4a3e
commit
f88800d545
@ -37,6 +37,14 @@ type PackageVersion struct {
|
|||||||
DownloadCount int64 `xorm:"NOT NULL DEFAULT 0"`
|
DownloadCount int64 `xorm:"NOT NULL DEFAULT 0"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsPrerelease checks if the version is a prerelease version according to semantic versioning
|
||||||
|
func (pv *PackageVersion) IsPrerelease() bool {
|
||||||
|
if pv == nil || pv.Version == "" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return strings.Contains(pv.Version, "-")
|
||||||
|
}
|
||||||
|
|
||||||
// GetOrInsertVersion inserts a version. If the same version exist already ErrDuplicatePackageVersion is returned
|
// GetOrInsertVersion inserts a version. If the same version exist already ErrDuplicatePackageVersion is returned
|
||||||
func GetOrInsertVersion(ctx context.Context, pv *PackageVersion) (*PackageVersion, error) {
|
func GetOrInsertVersion(ctx context.Context, pv *PackageVersion) (*PackageVersion, error) {
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
|
@ -71,6 +71,7 @@ type Metadata struct {
|
|||||||
ReleaseNotes string `json:"release_notes,omitempty"`
|
ReleaseNotes string `json:"release_notes,omitempty"`
|
||||||
RepositoryURL string `json:"repository_url,omitempty"`
|
RepositoryURL string `json:"repository_url,omitempty"`
|
||||||
RequireLicenseAcceptance bool `json:"require_license_acceptance"`
|
RequireLicenseAcceptance bool `json:"require_license_acceptance"`
|
||||||
|
Summary string `json:"summary,omitempty"`
|
||||||
Tags string `json:"tags,omitempty"`
|
Tags string `json:"tags,omitempty"`
|
||||||
Title string `json:"title,omitempty"`
|
Title string `json:"title,omitempty"`
|
||||||
|
|
||||||
@ -105,6 +106,7 @@ type nuspecPackage struct {
|
|||||||
Readme string `xml:"readme"`
|
Readme string `xml:"readme"`
|
||||||
ReleaseNotes string `xml:"releaseNotes"`
|
ReleaseNotes string `xml:"releaseNotes"`
|
||||||
RequireLicenseAcceptance bool `xml:"requireLicenseAcceptance"`
|
RequireLicenseAcceptance bool `xml:"requireLicenseAcceptance"`
|
||||||
|
Summary string `xml:"summary"`
|
||||||
Tags string `xml:"tags"`
|
Tags string `xml:"tags"`
|
||||||
Title string `xml:"title"`
|
Title string `xml:"title"`
|
||||||
|
|
||||||
@ -204,6 +206,7 @@ func ParseNuspecMetaData(archive *zip.Reader, r io.Reader) (*Package, error) {
|
|||||||
ReleaseNotes: p.Metadata.ReleaseNotes,
|
ReleaseNotes: p.Metadata.ReleaseNotes,
|
||||||
RepositoryURL: p.Metadata.Repository.URL,
|
RepositoryURL: p.Metadata.Repository.URL,
|
||||||
RequireLicenseAcceptance: p.Metadata.RequireLicenseAcceptance,
|
RequireLicenseAcceptance: p.Metadata.RequireLicenseAcceptance,
|
||||||
|
Summary: p.Metadata.Summary,
|
||||||
Tags: p.Metadata.Tags,
|
Tags: p.Metadata.Tags,
|
||||||
Title: p.Metadata.Title,
|
Title: p.Metadata.Title,
|
||||||
|
|
||||||
|
@ -53,15 +53,23 @@ type RegistrationIndexPageItem struct {
|
|||||||
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#catalog-entry
|
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#catalog-entry
|
||||||
type CatalogEntry struct {
|
type CatalogEntry struct {
|
||||||
CatalogLeafURL string `json:"@id"`
|
CatalogLeafURL string `json:"@id"`
|
||||||
PackageContentURL string `json:"packageContent"`
|
|
||||||
ID string `json:"id"`
|
|
||||||
Version string `json:"version"`
|
|
||||||
Description string `json:"description"`
|
|
||||||
ReleaseNotes string `json:"releaseNotes"`
|
|
||||||
Authors string `json:"authors"`
|
Authors string `json:"authors"`
|
||||||
RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
|
Copyright string `json:"copyright"`
|
||||||
ProjectURL string `json:"projectURL"`
|
|
||||||
DependencyGroups []*PackageDependencyGroup `json:"dependencyGroups"`
|
DependencyGroups []*PackageDependencyGroup `json:"dependencyGroups"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
IconURL string `json:"iconUrl"`
|
||||||
|
ID string `json:"id"`
|
||||||
|
IsPrerelease bool `json:"isPrerelease"`
|
||||||
|
Language string `json:"language"`
|
||||||
|
LicenseURL string `json:"licenseUrl"`
|
||||||
|
PackageContentURL string `json:"packageContent"`
|
||||||
|
ProjectURL string `json:"projectUrl"`
|
||||||
|
RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
|
||||||
|
Summary string `json:"summary"`
|
||||||
|
Tags string `json:"tags"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
ReleaseNotes string `json:"releaseNotes"`
|
||||||
|
Published time.Time `json:"published"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#package-dependency-group
|
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#package-dependency-group
|
||||||
@ -109,15 +117,24 @@ func createRegistrationIndexPageItem(l *linkBuilder, pd *packages_model.PackageD
|
|||||||
RegistrationLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
RegistrationLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
||||||
PackageContentURL: l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version),
|
PackageContentURL: l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version),
|
||||||
CatalogEntry: &CatalogEntry{
|
CatalogEntry: &CatalogEntry{
|
||||||
CatalogLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
CatalogLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
||||||
PackageContentURL: l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version),
|
Authors: metadata.Authors,
|
||||||
ID: pd.Package.Name,
|
Copyright: metadata.Copyright,
|
||||||
Version: pd.Version.Version,
|
DependencyGroups: createDependencyGroups(pd),
|
||||||
Description: metadata.Description,
|
Description: metadata.Description,
|
||||||
ReleaseNotes: metadata.ReleaseNotes,
|
IconURL: metadata.IconURL,
|
||||||
Authors: metadata.Authors,
|
ID: pd.Package.Name,
|
||||||
ProjectURL: metadata.ProjectURL,
|
IsPrerelease: pd.Version.IsPrerelease(),
|
||||||
DependencyGroups: createDependencyGroups(pd),
|
Language: metadata.Language,
|
||||||
|
LicenseURL: metadata.LicenseURL,
|
||||||
|
PackageContentURL: l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version),
|
||||||
|
ProjectURL: metadata.ProjectURL,
|
||||||
|
RequireLicenseAcceptance: metadata.RequireLicenseAcceptance,
|
||||||
|
Summary: metadata.Summary,
|
||||||
|
Tags: metadata.Tags,
|
||||||
|
Version: pd.Version.Version,
|
||||||
|
ReleaseNotes: metadata.ReleaseNotes,
|
||||||
|
Published: pd.Version.CreatedUnix.AsLocalTime(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -145,22 +162,42 @@ func createDependencyGroups(pd *packages_model.PackageDescriptor) []*PackageDepe
|
|||||||
|
|
||||||
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-leaf
|
// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-leaf
|
||||||
type RegistrationLeafResponse struct {
|
type RegistrationLeafResponse struct {
|
||||||
RegistrationLeafURL string `json:"@id"`
|
RegistrationLeafURL string `json:"@id"`
|
||||||
Type []string `json:"@type"`
|
Type []string `json:"@type"`
|
||||||
Listed bool `json:"listed"`
|
PackageContentURL string `json:"packageContent"`
|
||||||
PackageContentURL string `json:"packageContent"`
|
RegistrationIndexURL string `json:"registration"`
|
||||||
Published time.Time `json:"published"`
|
CatalogEntry CatalogEntry `json:"catalogEntry"`
|
||||||
RegistrationIndexURL string `json:"registration"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func createRegistrationLeafResponse(l *linkBuilder, pd *packages_model.PackageDescriptor) *RegistrationLeafResponse {
|
func createRegistrationLeafResponse(l *linkBuilder, pd *packages_model.PackageDescriptor) *RegistrationLeafResponse {
|
||||||
|
registrationLeafURL := l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version)
|
||||||
|
packageDownloadURL := l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version)
|
||||||
|
metadata := pd.Metadata.(*nuget_module.Metadata)
|
||||||
return &RegistrationLeafResponse{
|
return &RegistrationLeafResponse{
|
||||||
Type: []string{"Package", "http://schema.nuget.org/catalog#Permalink"},
|
RegistrationLeafURL: registrationLeafURL,
|
||||||
Listed: true,
|
|
||||||
Published: pd.Version.CreatedUnix.AsLocalTime(),
|
|
||||||
RegistrationLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
|
||||||
PackageContentURL: l.GetPackageDownloadURL(pd.Package.Name, pd.Version.Version),
|
|
||||||
RegistrationIndexURL: l.GetRegistrationIndexURL(pd.Package.Name),
|
RegistrationIndexURL: l.GetRegistrationIndexURL(pd.Package.Name),
|
||||||
|
PackageContentURL: packageDownloadURL,
|
||||||
|
Type: []string{"Package", "http://schema.nuget.org/catalog#Permalink"},
|
||||||
|
CatalogEntry: CatalogEntry{
|
||||||
|
CatalogLeafURL: registrationLeafURL,
|
||||||
|
Authors: metadata.Authors,
|
||||||
|
Copyright: metadata.Copyright,
|
||||||
|
DependencyGroups: createDependencyGroups(pd),
|
||||||
|
Description: metadata.Description,
|
||||||
|
IconURL: metadata.IconURL,
|
||||||
|
ID: pd.Package.Name,
|
||||||
|
IsPrerelease: pd.Version.IsPrerelease(),
|
||||||
|
Language: metadata.Language,
|
||||||
|
LicenseURL: metadata.LicenseURL,
|
||||||
|
PackageContentURL: packageDownloadURL,
|
||||||
|
ProjectURL: metadata.ProjectURL,
|
||||||
|
RequireLicenseAcceptance: metadata.RequireLicenseAcceptance,
|
||||||
|
Summary: metadata.Summary,
|
||||||
|
Tags: metadata.Tags,
|
||||||
|
Version: pd.Version.Version,
|
||||||
|
ReleaseNotes: metadata.ReleaseNotes,
|
||||||
|
Published: pd.Version.CreatedUnix.AsLocalTime(),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,13 +225,24 @@ type SearchResultResponse struct {
|
|||||||
|
|
||||||
// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
|
// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
|
||||||
type SearchResult struct {
|
type SearchResult struct {
|
||||||
ID string `json:"id"`
|
Authors string `json:"authors"`
|
||||||
Version string `json:"version"`
|
Copyright string `json:"copyright"`
|
||||||
Versions []*SearchResultVersion `json:"versions"`
|
DependencyGroups []*PackageDependencyGroup `json:"dependencyGroups"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
Authors string `json:"authors"`
|
IconURL string `json:"iconUrl"`
|
||||||
ProjectURL string `json:"projectURL"`
|
ID string `json:"id"`
|
||||||
RegistrationIndexURL string `json:"registration"`
|
IsPrerelease bool `json:"isPrerelease"`
|
||||||
|
Language string `json:"language"`
|
||||||
|
LicenseURL string `json:"licenseUrl"`
|
||||||
|
ProjectURL string `json:"projectUrl"`
|
||||||
|
RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
|
||||||
|
Summary string `json:"summary"`
|
||||||
|
Tags string `json:"tags"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
TotalDownloads int64 `json:"totalDownloads"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
Versions []*SearchResultVersion `json:"versions"`
|
||||||
|
RegistrationIndexURL string `json:"registration"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
|
// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
|
||||||
@ -230,11 +278,12 @@ func createSearchResultResponse(l *linkBuilder, totalHits int64, pds []*packages
|
|||||||
func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor) *SearchResult {
|
func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor) *SearchResult {
|
||||||
latest := pds[0]
|
latest := pds[0]
|
||||||
versions := make([]*SearchResultVersion, 0, len(pds))
|
versions := make([]*SearchResultVersion, 0, len(pds))
|
||||||
|
totalDownloads := int64(0)
|
||||||
for _, pd := range pds {
|
for _, pd := range pds {
|
||||||
if latest.SemVer.LessThan(pd.SemVer) {
|
if latest.SemVer.LessThan(pd.SemVer) {
|
||||||
latest = pd
|
latest = pd
|
||||||
}
|
}
|
||||||
|
totalDownloads += pd.Version.DownloadCount
|
||||||
versions = append(versions, &SearchResultVersion{
|
versions = append(versions, &SearchResultVersion{
|
||||||
RegistrationLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
RegistrationLeafURL: l.GetRegistrationLeafURL(pd.Package.Name, pd.Version.Version),
|
||||||
Version: pd.Version.Version,
|
Version: pd.Version.Version,
|
||||||
@ -244,12 +293,23 @@ func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor)
|
|||||||
metadata := latest.Metadata.(*nuget_module.Metadata)
|
metadata := latest.Metadata.(*nuget_module.Metadata)
|
||||||
|
|
||||||
return &SearchResult{
|
return &SearchResult{
|
||||||
ID: latest.Package.Name,
|
Authors: metadata.Authors,
|
||||||
Version: latest.Version.Version,
|
Copyright: metadata.Copyright,
|
||||||
Versions: versions,
|
Description: metadata.Description,
|
||||||
Description: metadata.Description,
|
DependencyGroups: createDependencyGroups(latest),
|
||||||
Authors: metadata.Authors,
|
IconURL: metadata.IconURL,
|
||||||
ProjectURL: metadata.ProjectURL,
|
ID: latest.Package.Name,
|
||||||
RegistrationIndexURL: l.GetRegistrationIndexURL(latest.Package.Name),
|
IsPrerelease: latest.Version.IsPrerelease(),
|
||||||
|
Language: metadata.Language,
|
||||||
|
LicenseURL: metadata.LicenseURL,
|
||||||
|
ProjectURL: metadata.ProjectURL,
|
||||||
|
RequireLicenseAcceptance: metadata.RequireLicenseAcceptance,
|
||||||
|
Summary: metadata.Summary,
|
||||||
|
Tags: metadata.Tags,
|
||||||
|
Title: metadata.Title,
|
||||||
|
TotalDownloads: totalDownloads,
|
||||||
|
Version: latest.Version.Version,
|
||||||
|
Versions: versions,
|
||||||
|
RegistrationIndexURL: l.GetRegistrationIndexURL(latest.Package.Name),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
neturl "net/url"
|
neturl "net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -100,6 +101,7 @@ func TestPackageNuGet(t *testing.T) {
|
|||||||
packageVersion := "1.0.3"
|
packageVersion := "1.0.3"
|
||||||
packageAuthors := "KN4CK3R"
|
packageAuthors := "KN4CK3R"
|
||||||
packageDescription := "Gitea Test Package"
|
packageDescription := "Gitea Test Package"
|
||||||
|
isPrerelease := strings.Contains(packageVersion, "-")
|
||||||
|
|
||||||
symbolFilename := "test.pdb"
|
symbolFilename := "test.pdb"
|
||||||
symbolID := "d910bb6948bd4c6cb40155bcf52c3c94"
|
symbolID := "d910bb6948bd4c6cb40155bcf52c3c94"
|
||||||
@ -112,11 +114,17 @@ func TestPackageNuGet(t *testing.T) {
|
|||||||
packageOwners := "Package Owners"
|
packageOwners := "Package Owners"
|
||||||
packageProjectURL := "https://gitea.io"
|
packageProjectURL := "https://gitea.io"
|
||||||
packageReleaseNotes := "Package Release Notes"
|
packageReleaseNotes := "Package Release Notes"
|
||||||
|
summary := "This is a test package."
|
||||||
packageTags := "tag_1 tag_2 tag_3"
|
packageTags := "tag_1 tag_2 tag_3"
|
||||||
packageTitle := "Package Title"
|
packageTitle := "Package Title"
|
||||||
packageDevelopmentDependency := true
|
packageDevelopmentDependency := true
|
||||||
packageRequireLicenseAcceptance := true
|
packageRequireLicenseAcceptance := true
|
||||||
|
|
||||||
|
dependencyCount := 1
|
||||||
|
dependencyTargetFramework := ".NETStandard2.0"
|
||||||
|
dependencyID := "Microsoft.CSharp"
|
||||||
|
dependencyVersion := "4.5.0"
|
||||||
|
|
||||||
createNuspec := func(id, version string) string {
|
createNuspec := func(id, version string) string {
|
||||||
return `<?xml version="1.0" encoding="utf-8"?>
|
return `<?xml version="1.0" encoding="utf-8"?>
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
||||||
@ -133,12 +141,13 @@ func TestPackageNuGet(t *testing.T) {
|
|||||||
<projectUrl>` + packageProjectURL + `</projectUrl>
|
<projectUrl>` + packageProjectURL + `</projectUrl>
|
||||||
<releaseNotes>` + packageReleaseNotes + `</releaseNotes>
|
<releaseNotes>` + packageReleaseNotes + `</releaseNotes>
|
||||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||||
|
<summary>` + summary + `</summary>
|
||||||
<tags>` + packageTags + `</tags>
|
<tags>` + packageTags + `</tags>
|
||||||
<title>` + packageTitle + `</title>
|
<title>` + packageTitle + `</title>
|
||||||
<version>` + version + `</version>
|
<version>` + version + `</version>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<group targetFramework=".NETStandard2.0">
|
<group targetFramework="` + dependencyTargetFramework + `">
|
||||||
<dependency id="Microsoft.CSharp" version="4.5.0" />
|
<dependency id="` + dependencyID + `" version="` + dependencyVersion + `" />
|
||||||
</group>
|
</group>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
@ -428,7 +437,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
|||||||
|
|
||||||
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
||||||
assert.NoError(t, err)
|
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):
|
case fmt.Sprintf("%s.%s.snupkg", packageName, packageVersion):
|
||||||
assert.False(t, pf.IsLead)
|
assert.False(t, pf.IsLead)
|
||||||
|
|
||||||
@ -440,7 +449,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
|||||||
|
|
||||||
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, int64(996), pb.Size)
|
assert.Equal(t, int64(1043), pb.Size)
|
||||||
case symbolFilename:
|
case symbolFilename:
|
||||||
assert.False(t, pf.IsLead)
|
assert.False(t, pf.IsLead)
|
||||||
|
|
||||||
@ -747,17 +756,39 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
|||||||
assert.Equal(t, indexURL, result.RegistrationIndexURL)
|
assert.Equal(t, indexURL, result.RegistrationIndexURL)
|
||||||
assert.Equal(t, 1, result.Count)
|
assert.Equal(t, 1, result.Count)
|
||||||
assert.Len(t, result.Pages, 1)
|
assert.Len(t, result.Pages, 1)
|
||||||
assert.Equal(t, indexURL, result.Pages[0].RegistrationPageURL)
|
|
||||||
assert.Equal(t, packageVersion, result.Pages[0].Lower)
|
page := result.Pages[0]
|
||||||
assert.Equal(t, packageVersion, result.Pages[0].Upper)
|
assert.Equal(t, indexURL, page.RegistrationPageURL)
|
||||||
assert.Equal(t, 1, result.Pages[0].Count)
|
assert.Equal(t, packageVersion, page.Lower)
|
||||||
assert.Len(t, result.Pages[0].Items, 1)
|
assert.Equal(t, packageVersion, page.Upper)
|
||||||
assert.Equal(t, packageName, result.Pages[0].Items[0].CatalogEntry.ID)
|
assert.Equal(t, 1, page.Count)
|
||||||
assert.Equal(t, packageVersion, result.Pages[0].Items[0].CatalogEntry.Version)
|
assert.Len(t, page.Items, 1)
|
||||||
assert.Equal(t, packageAuthors, result.Pages[0].Items[0].CatalogEntry.Authors)
|
|
||||||
assert.Equal(t, packageDescription, result.Pages[0].Items[0].CatalogEntry.Description)
|
item := page.Items[0]
|
||||||
assert.Equal(t, leafURL, result.Pages[0].Items[0].CatalogEntry.CatalogLeafURL)
|
assert.Equal(t, packageName, item.CatalogEntry.ID)
|
||||||
assert.Equal(t, contentURL, result.Pages[0].Items[0].CatalogEntry.PackageContentURL)
|
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) {
|
t.Run("RegistrationLeaf", func(t *testing.T) {
|
||||||
@ -789,7 +820,8 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
|||||||
assert.Equal(t, packageTags, result.Properties.Tags)
|
assert.Equal(t, packageTags, result.Properties.Tags)
|
||||||
assert.Equal(t, packageTitle, result.Properties.Title)
|
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) {
|
t.Run("v3", func(t *testing.T) {
|
||||||
@ -803,8 +835,30 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
|
|||||||
DecodeJSON(t, resp, &result)
|
DecodeJSON(t, resp, &result)
|
||||||
|
|
||||||
assert.Equal(t, leafURL, result.RegistrationLeafURL)
|
assert.Equal(t, leafURL, result.RegistrationLeafURL)
|
||||||
assert.Equal(t, contentURL, result.PackageContentURL)
|
|
||||||
assert.Equal(t, indexURL, result.RegistrationIndexURL)
|
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)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user