ae325d4bec
Signed-off-by: Martijn van der Kleijn <martijn.niji@gmail.com>
112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package forgejo
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// create an org with a single package for testing purposes
|
|
func createTestPackage(t *testing.T, c *Client) error {
|
|
_, _ = c.DeletePackage("PackageOrg", "generic", "MyPackage", "v1")
|
|
_, _ = c.DeleteOrg("PackageOrg")
|
|
_, _, _ = c.CreateOrg(CreateOrgOption{Name: "PackageOrg"})
|
|
|
|
client := &http.Client{
|
|
Timeout: time.Second * 10,
|
|
}
|
|
|
|
reader := bytes.NewReader([]byte("Hello world!"))
|
|
|
|
url := fmt.Sprintf("%s/api/packages/PackageOrg/generic/MyPackage/v1/file1.txt", os.Getenv("FORGEJO_SDK_TEST_URL"))
|
|
req, err := http.NewRequest(http.MethodPut, url, reader)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return err
|
|
}
|
|
|
|
req.SetBasicAuth(os.Getenv("FORGEJO_SDK_TEST_USERNAME"), os.Getenv("FORGEJO_SDK_TEST_PASSWORD"))
|
|
response, err := client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer response.Body.Close()
|
|
|
|
return nil
|
|
}
|
|
|
|
func TestListPackages(t *testing.T) {
|
|
log.Println("== TestListPackages ==")
|
|
c := newTestClient()
|
|
err := createTestPackage(t, c)
|
|
assert.NoError(t, err)
|
|
|
|
packagesList, _, err := c.ListPackages("PackageOrg", ListPackagesOptions{
|
|
ListOptions{
|
|
Page: 1,
|
|
PageSize: 1000,
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, packagesList, 1)
|
|
}
|
|
|
|
func TestGetPackage(t *testing.T) {
|
|
log.Println("== TestGetPackage ==")
|
|
c := newTestClient()
|
|
err := createTestPackage(t, c)
|
|
assert.NoError(t, err)
|
|
|
|
pkg, _, err := c.GetPackage("PackageOrg", "generic", "MyPackage", "v1")
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, pkg)
|
|
assert.True(t, pkg.Name == "MyPackage")
|
|
assert.True(t, pkg.Version == "v1")
|
|
assert.NotEmpty(t, pkg.CreatedAt)
|
|
}
|
|
|
|
func TestDeletePackage(t *testing.T) {
|
|
log.Println("== TestDeletePackage ==")
|
|
c := newTestClient()
|
|
err := createTestPackage(t, c)
|
|
assert.NoError(t, err)
|
|
|
|
_, err = c.DeletePackage("PackageOrg", "generic", "MyPackage", "v1")
|
|
assert.NoError(t, err)
|
|
|
|
// no packages should be listed following deletion
|
|
packagesList, _, err := c.ListPackages("PackageOrg", ListPackagesOptions{
|
|
ListOptions{
|
|
Page: 1,
|
|
PageSize: 1000,
|
|
},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, packagesList, 0)
|
|
}
|
|
|
|
func TestListPackageFiles(t *testing.T) {
|
|
log.Println("== TestListPackageFiles ==")
|
|
c := newTestClient()
|
|
err := createTestPackage(t, c)
|
|
assert.NoError(t, err)
|
|
|
|
packageFiles, _, err := c.ListPackageFiles("PackageOrg", "generic", "MyPackage", "v1")
|
|
assert.NoError(t, err)
|
|
assert.Len(t, packageFiles, 1)
|
|
assert.True(t, packageFiles[0].Name == "file1.txt")
|
|
}
|