gitea/tests/integration/api_packages_arch_test.go

354 lines
19 KiB
Go
Raw Normal View History

// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package integration
import (
"bytes"
"encoding/base64"
"encoding/hex"
"fmt"
"io"
"net/http"
"path"
"testing"
"time"
"bou.ke/monkey"
auth_model "code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
)
func TestPackageArch(t *testing.T) {
const pkg = `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
sLkw6hyju9t3QVfqi0JGZ5xa1ZTRwVQEIQH6LQ==`
const signature = `iQGzBAABCAAdFiEEQ6WNuVKuWHQJqhdSETT46/mKoG8FAmSi2NYACgkQETT46/mKoG8ccgwAiyWE
lWTZ11Ah5AzQruNwVrC8FjW5EVP4BmWnpppuTF4pNlCaBNKh1saj2WMY3UYjwqsRGFuxJXrREU0O
l8m376ilOzoHMd4T5WBCOoJnuLu17HNElwe0YtnKbImwM2oYy/QdQP26GC6kiZ0Rmwia+tK9CvgI
epmK9MOacjs/TakA0z1+1itD+nVYpb3YEDTyHu0eMMtKeBwVIco26fmFa4ilyhIU2PzwxQnUd6sB
csrS4nvqPAS/a6Ubp9N1g3DYlz/Tzxz1F0zpBuSToQ1k/XEONI8HW4QkUpc3XFnAXNgw/ipAyC1j
3dmAfEV5lT93cCdjoxQ4vrygoWbuAfAyCcgs8iiDsXl+4tRhc0aMM+/CyYh8cUiVemldgCqEcFLF
Ta5/MiibmkmseToY8VFmNJiMDaey7Pu2smpbQXpOVhHUBQBru1VGm7G9N1QP6tp57z+xw7ombXzz
7R/6iYoqN7CdRK5IstoWoNV1qYdxmlpf1zZBYU7NFm/9OyRnHfhy`
const mdsign = `iQGzBAABCAAdFiEEQ6WNuVKuWHQJqhdSETT46/mKoG8FAmSkT2UACgkQETT46/mKoG8s+wv/URHr
D7IvXVzcXzaaQhRKRDdywUPey4Yb+QSHl4eJ93qnaRslTdDc1wR4PGpZBahXGhXKGIBf9C+MSsmB
bUWIL05Bia3myBC1/oivm8or29vL6elt0Q+rNaOACMmVpGIRt6MxnI5KPhCPstv14p2y09ROf6/r
dQvFc1jeoNeS4JbcuA4bzABCMjZm822Z3ywYDtIJzGGMqbsGNSChYrY1NKdf60e24cJH9enRJUNX
k/qv2tUToChe+trVjx2EAOlbaenGHd1RjpRQk+CmEwNdhk8OKR6SEayynVYvU04QoTc/w170YXQp
G9oBJsMHOjlSIiZSByLe1kj1qsyGHfgZSg+C/igfGl2PXA4smgbEem4Y+P0j/i5Db6nQ81vZKZH0
sNBESpX3kvN8rAR0cmHnGlelCklILv93SWZHL6+4yZaXVcm78Dfc905B1HPONb/zY5hqQ/CDuMK8
ej9Z9qp6STZxDfr6HUNNMWCKgel/li9ptNlp3dOONEJHpJvGSGCk`
const gpgkey = `-----BEGIN PGP PUBLIC KEY BLOCK-----
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
8Iu2wss37Re8PI2n7enU+iNe1UN81ZMojf/V
=5NFR
-----END PGP PUBLIC KEY BLOCK-----`
const db = `H4sIAAAAAAAA/+yST2/TQBDFc55PkcscY++s9y9CCGO71CIpyCYcuKC1106sUNeyXanw6REpgjZX
VCHU/C6zs3rat293Rtf74bBb0YpC30z14glgjDGt9bEyxk4rUw/Wx30iraPFkj3FZU65nWY3Lthf
e52G+0/Ai3ydXcWbDOHBKKzujPqiRDAcdsHsxuD7NAPgIxkAvonLR/2nrCjz91cItCIATLMyQUib
qR67Ye5uegBMyvxzhmB0JAEwv+8YAG5SWW43CIaT9555LmsvIm+0p4i3kVMtk5o5B4DlZcylOqpt
xdsqIuddY4wgEtLbujbklbaSN0aTJE6iqrhVnjQXUWvIukbYynhuBABuizXCfp6H6UUYttf9XTDd
ht719b7ZWR3+SRcXySXC/cP8DL/N12kaf8wQSBkjjLKkAPBDnLyL32YFQur67qtbXtxcd/23w375
8vepr3/5vAL41/9/5syZ58uPAAAA///ViF8vAAgAAA==`
assert.NoError(t, unittest.PrepareTestDatabase())
user := &user_model.User{
Name: "dancheg97",
Email: "dancheg97@fmnx.su",
Passwd: "password",
IsAdmin: false,
Theme: setting.UI.DefaultTheme,
MustChangePassword: false,
}
err := user_model.CreateUser(user)
assert.NoError(t, err)
session := loginUser(t, "dancheg97")
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeAll)
req := NewRequestWithJSON(t, "POST", "/api/v1/user/gpg_keys?token="+token, api.CreateGPGKeyOption{
ArmoredKey: gpgkey,
})
MakeRequest(t, req, http.StatusOK)
pkgData, err := base64.StdEncoding.DecodeString(pkg)
assert.NoError(t, err)
sigData, err := base64.StdEncoding.DecodeString(signature)
assert.NoError(t, err)
mdSigData, err := base64.StdEncoding.DecodeString(mdsign)
assert.NoError(t, err)
dbData, err := base64.StdEncoding.DecodeString(db)
assert.NoError(t, err)
rootURL := fmt.Sprintf("/api/packages/%s/arch", user.Name)
wayback, err := time.Parse(time.RFC3339, "2023-07-04T19:57:09+03:00")
assert.NoError(t, err)
patch := monkey.Patch(time.Now, func() time.Time { return wayback })
defer patch.Unpatch()
t.Run("Push", func(t *testing.T) {
2023-07-06 20:44:09 +00:00
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "PUT", path.Join(rootURL, "/push"))
req.Header.Set("filename", "randpkg-1-1-x86_64.pkg.tar.zst")
req.Header.Set("email", "dancheg97@fmnx.su")
req.Header.Set("time", "2023-07-04T19:57:09+03:00")
req.Header.Set("distro", "archlinux")
req.Header.Set("metasign", hex.EncodeToString(mdSigData))
req.Header.Set("pkgsign", hex.EncodeToString(sigData))
req.Header.Set("Content-Type", "application/octet-stream")
req.Body = io.NopCloser(bytes.NewReader(pkgData))
MakeRequest(t, req, http.StatusOK)
})
t.Run("Get", func(t *testing.T) {
2023-07-06 20:44:09 +00:00
defer tests.PrintCurrentTest(t)()
t.Run("Package", func(t *testing.T) {
2023-07-06 20:44:09 +00:00
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "GET", path.Join(rootURL, "/archlinux/x86_64/randpkg-1-1-x86_64.pkg.tar.zst"))
req.Body = io.NopCloser(bytes.NewReader(pkgData))
resp := MakeRequest(t, req, http.StatusOK)
assert.Equal(t, resp.Body.Bytes(), pkgData)
})
t.Run("Database", func(t *testing.T) {
2023-07-06 20:44:09 +00:00
defer tests.PrintCurrentTest(t)()
dbname := fmt.Sprintf("%s.%s.db", user.Name, setting.Domain)
req := NewRequest(t, "GET", path.Join(rootURL, "/archlinux/x86_64/"+dbname))
req.Body = io.NopCloser(bytes.NewReader(pkgData))
resp := MakeRequest(t, req, http.StatusOK)
assert.Equal(t, resp.Body.Bytes(), dbData)
})
})
t.Run("Remove", func(t *testing.T) {
2023-07-06 20:44:09 +00:00
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "PUT", path.Join(rootURL, "/push"))
req.Header.Set("username", "dancheg97")
req.Header.Set("email", "dancheg97@fmnx.su")
req.Header.Set("target", "randpkg")
req.Header.Set("time", "2023-07-04T19:57:09+03:00")
req.Header.Set("version", "1-1")
req.Header.Set("Content-Type", "application/octet-stream")
req.Body = io.NopCloser(bytes.NewReader(mdSigData))
MakeRequest(t, req, http.StatusOK)
})
}