diff options
Diffstat (limited to 'tests/integration/api_packages_nuget_test.go')
-rw-r--r-- | tests/integration/api_packages_nuget_test.go | 177 |
1 files changed, 140 insertions, 37 deletions
diff --git a/tests/integration/api_packages_nuget_test.go b/tests/integration/api_packages_nuget_test.go index c0e69a82cd..529b540062 100644 --- a/tests/integration/api_packages_nuget_test.go +++ b/tests/integration/api_packages_nuget_test.go @@ -14,6 +14,7 @@ import ( "net/http/httptest" neturl "net/url" "strconv" + "strings" "testing" "time" @@ -46,21 +47,30 @@ func TestPackageNuGet(t *testing.T) { defer tests.PrepareTestEnv(t)() type FeedEntryProperties struct { - Version string `xml:"Version"` - NormalizedVersion string `xml:"NormalizedVersion"` Authors string `xml:"Authors"` + Copyright string `xml:"Copyright,omitempty"` + Created nuget.TypedValue[time.Time] `xml:"Created"` Dependencies string `xml:"Dependencies"` Description string `xml:"Description"` - VersionDownloadCount nuget.TypedValue[int64] `xml:"VersionDownloadCount"` + DevelopmentDependency nuget.TypedValue[bool] `xml:"DevelopmentDependency"` DownloadCount nuget.TypedValue[int64] `xml:"DownloadCount"` - PackageSize nuget.TypedValue[int64] `xml:"PackageSize"` - Created nuget.TypedValue[time.Time] `xml:"Created"` + ID string `xml:"Id"` + IconURL string `xml:"IconUrl,omitempty"` + Language string `xml:"Language,omitempty"` LastUpdated nuget.TypedValue[time.Time] `xml:"LastUpdated"` - Published nuget.TypedValue[time.Time] `xml:"Published"` + LicenseURL string `xml:"LicenseUrl,omitempty"` + MinClientVersion string `xml:"MinClientVersion,omitempty"` + NormalizedVersion string `xml:"NormalizedVersion"` + Owners string `xml:"Owners,omitempty"` + PackageSize nuget.TypedValue[int64] `xml:"PackageSize"` ProjectURL string `xml:"ProjectUrl,omitempty"` + Published nuget.TypedValue[time.Time] `xml:"Published"` ReleaseNotes string `xml:"ReleaseNotes,omitempty"` RequireLicenseAcceptance nuget.TypedValue[bool] `xml:"RequireLicenseAcceptance"` + Tags string `xml:"Tags,omitempty"` Title string `xml:"Title"` + Version string `xml:"Version"` + VersionDownloadCount nuget.TypedValue[int64] `xml:"VersionDownloadCount"` } type FeedEntry struct { @@ -86,28 +96,62 @@ func TestPackageNuGet(t *testing.T) { readToken := getUserToken(t, user.Name, auth_model.AccessTokenScopeReadPackage) badToken := getUserToken(t, user.Name, auth_model.AccessTokenScopeReadNotification) - packageName := "test.package" + packageName := "test.package" // id + packageID := packageName packageVersion := "1.0.3" packageAuthors := "KN4CK3R" packageDescription := "Gitea Test Package" + isPrerelease := strings.Contains(packageVersion, "-") + symbolFilename := "test.pdb" symbolID := "d910bb6948bd4c6cb40155bcf52c3c94" + packageCopyright := "Package Copyright" + packageIconURL := "https://gitea.io/favicon.png" + packageLanguage := "Package Language" + packageLicenseURL := "https://gitea.io/license" + packageMinClientVersion := "1.0.0.0" + 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"> - <metadata> - <id>` + id + `</id> - <version>` + version + `</version> - <authors>` + packageAuthors + `</authors> - <description>` + packageDescription + `</description> - <dependencies> - <group targetFramework=".NETStandard2.0"> - <dependency id="Microsoft.CSharp" version="4.5.0" /> - </group> - </dependencies> - </metadata> -</package>` + <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> + <metadata minClientVersion="` + packageMinClientVersion + `"> + <authors>` + packageAuthors + `</authors> + <copyright>` + packageCopyright + `</copyright> + <description>` + packageDescription + `</description> + <developmentDependency>true</developmentDependency> + <iconUrl>` + packageIconURL + `</iconUrl> + <id>` + id + `</id> + <language>` + packageLanguage + `</language> + <licenseUrl>` + packageLicenseURL + `</licenseUrl> + <owners>` + packageOwners + `</owners> + <projectUrl>` + packageProjectURL + `</projectUrl> + <releaseNotes>` + packageReleaseNotes + `</releaseNotes> + <requireLicenseAcceptance>true</requireLicenseAcceptance> + <summary>` + summary + `</summary> + <tags>` + packageTags + `</tags> + <title>` + packageTitle + `</title> + <version>` + version + `</version> + <dependencies> + <group targetFramework="` + dependencyTargetFramework + `"> + <dependency id="` + dependencyID + `" version="` + dependencyVersion + `" /> + </group> + </dependencies> + </metadata> + </package>` } createPackage := func(id, version string) *bytes.Buffer { @@ -393,7 +437,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`) pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID) assert.NoError(t, err) - assert.Equal(t, int64(412), pb.Size) + assert.Equal(t, int64(633), pb.Size) case fmt.Sprintf("%s.%s.snupkg", packageName, packageVersion): assert.False(t, pf.IsLead) @@ -405,7 +449,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`) pb, err := packages.GetBlobByID(db.DefaultContext, pf.BlobID) assert.NoError(t, err) - assert.Equal(t, int64(427), pb.Size) + assert.Equal(t, int64(1043), pb.Size) case symbolFilename: assert.False(t, pf.IsLead) @@ -712,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) { @@ -736,11 +802,26 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`) var result FeedEntry decodeXML(t, resp, &result) - assert.Equal(t, packageName, result.Properties.Title) - assert.Equal(t, packageVersion, result.Properties.Version) assert.Equal(t, packageAuthors, result.Properties.Authors) assert.Equal(t, packageDescription, result.Properties.Description) - assert.Equal(t, "Microsoft.CSharp:4.5.0:.NETStandard2.0", result.Properties.Dependencies) + assert.Equal(t, packageID, result.Properties.ID) + assert.Equal(t, packageVersion, result.Properties.Version) + + assert.Equal(t, packageCopyright, result.Properties.Copyright) + assert.Equal(t, packageDevelopmentDependency, result.Properties.DevelopmentDependency.Value) + assert.Equal(t, packageIconURL, result.Properties.IconURL) + assert.Equal(t, packageLanguage, result.Properties.Language) + assert.Equal(t, packageLicenseURL, result.Properties.LicenseURL) + assert.Equal(t, packageMinClientVersion, result.Properties.MinClientVersion) + assert.Equal(t, packageOwners, result.Properties.Owners) + assert.Equal(t, packageProjectURL, result.Properties.ProjectURL) + assert.Equal(t, packageReleaseNotes, result.Properties.ReleaseNotes) + assert.Equal(t, packageRequireLicenseAcceptance, result.Properties.RequireLicenseAcceptance.Value) + assert.Equal(t, packageTags, result.Properties.Tags) + assert.Equal(t, packageTitle, result.Properties.Title) + + packageVersion := strings.Join([]string{dependencyID, dependencyVersion, dependencyTargetFramework}, ":") + assert.Equal(t, packageVersion, result.Properties.Dependencies) }) t.Run("v3", func(t *testing.T) { @@ -754,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) }) }) }) |