Some checks failed
cache-seeder / prune (push) Has been skipped
cache-seeder / frontend (push) Failing after 3s
cache-seeder / python (push) Failing after 3s
cache-seeder / gobuild (push) Failing after 4s
cache-seeder / lint (bindata, lint-backend) (push) Failing after 3s
giteabot backport / giteabot (push) Has been skipped
giteabot / giteabot (push) Has been skipped
cache-prune / prune (push) Has been skipped
release-nightly-snapcraft / build-and-publish (ubuntu-24.04) (push) Has been cancelled
release-nightly-snapcraft / build-and-publish (ubuntu-24.04-arm) (push) Has been cancelled
release-nightly / nightly-binary (push) Has been cancelled
release-nightly / nightly-container (push) Has been cancelled
cron-renovate / cron-renovate (push) Has been skipped
67 lines
2.4 KiB
Go
67 lines
2.4 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package npm
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
packages_model "gitea.dev/models/packages"
|
|
user_model "gitea.dev/models/user"
|
|
"gitea.dev/modules/json"
|
|
npm_module "gitea.dev/modules/packages/npm"
|
|
"gitea.dev/modules/timeutil"
|
|
|
|
"github.com/hashicorp/go-version"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCreatePackageMetadataResponse(t *testing.T) {
|
|
repository := npm_module.Repository{Type: "git", URL: "https://gitea.dev/alice/test.git"}
|
|
descriptor := func(v string, publishedUnix int64, repo npm_module.Repository) *packages_model.PackageDescriptor {
|
|
return &packages_model.PackageDescriptor{
|
|
Package: &packages_model.Package{Name: "@scope/test"},
|
|
Owner: &user_model.User{Name: "alice"},
|
|
Version: &packages_model.PackageVersion{Version: v, CreatedUnix: timeutil.TimeStamp(publishedUnix)},
|
|
SemVer: version.Must(version.NewVersion(v)),
|
|
Metadata: &npm_module.Metadata{Keywords: []string{"gitea"}, Repository: repo},
|
|
Files: []*packages_model.PackageFileDescriptor{{
|
|
File: &packages_model.PackageFile{LowerName: "test-" + v + ".tgz"},
|
|
Blob: &packages_model.PackageBlob{},
|
|
}},
|
|
}
|
|
}
|
|
|
|
result := createPackageMetadataResponse("https://gitea.dev/api/packages/alice/npm", []*packages_model.PackageDescriptor{
|
|
descriptor("1.1.0", 1000, npm_module.Repository{}),
|
|
descriptor("1.0.0", 2000, repository),
|
|
})
|
|
|
|
assert.Equal(t, map[string]time.Time{
|
|
"1.0.0": time.Unix(2000, 0).UTC(),
|
|
"1.1.0": time.Unix(1000, 0).UTC(),
|
|
"created": time.Unix(1000, 0).UTC(),
|
|
"modified": time.Unix(2000, 0).UTC(),
|
|
}, result.Time)
|
|
assert.Equal(t, []npm_module.User{{Name: "alice"}}, result.Maintainers)
|
|
assert.Equal(t, []string{"gitea"}, result.Keywords)
|
|
assert.Equal(t, []string{"gitea"}, result.Versions["1.0.0"].Keywords)
|
|
assert.Equal(t, []npm_module.User{{Name: "alice"}}, result.Versions["1.0.0"].Maintainers)
|
|
assert.Equal(t,
|
|
"https://gitea.dev/api/packages/alice/npm/@scope%2Ftest/-/1.0.0/test-1.0.0.tgz",
|
|
result.Versions["1.0.0"].Dist.Tarball,
|
|
)
|
|
assert.Equal(t, repository, result.Versions["1.0.0"].Repository)
|
|
|
|
withoutRepository, err := json.Marshal(result.Versions["1.1.0"])
|
|
assert.NoError(t, err)
|
|
assert.NotContains(t, string(withoutRepository), `"repository"`)
|
|
|
|
raw, err := json.Marshal(result)
|
|
assert.NoError(t, err)
|
|
doc := map[string]any{}
|
|
assert.NoError(t, json.Unmarshal(raw, &doc))
|
|
assert.NotContains(t, doc, "repository")
|
|
}
|