mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-10-24 11:02:42 +00:00
(cherry picked from commitf9d75d4705) (cherry picked from commit64f76f4ab2) (cherry picked from commit5d02454155) [CI] Forgejo Actions workflows (cherry picked from commit3ff59b5379) (cherry picked from commit8af826a6f7) (cherry picked from commitd7c09d9cc8) [CI] use the docker label instead of ubuntu-latest (cherry picked from commitb6a6470db6) [CI] all tests need compliance before proceeding (cherry picked from commitb35c496f2c) (cherry picked from commit36a4148a8e) (cherry picked from commit7ffcffa653) (cherry picked from commit8a246d296e) (cherry picked from commitdd0b6e1826) [CI] Forgejo Actions based release process (squash) MySQL optimization Refs: https://codeberg.org/forgejo/forgejo/issues/976 (cherry picked from commitb4b8c489e6) (cherry picked from commit1e861db4af) (cherry picked from commita6c0e00330) (cherry picked from commitf97b336465) (cherry picked from commit 6d65d5f0d6f798556a8f9e547896be03a5ee2f87) (cherry picked from commit79bfbadbed) (cherry picked from commite86c40a34a) (cherry picked from commitda0c454adb) (cherry picked from commitb49d892cda) [CI] enable minio tests (cherry picked from commit4d8f438031) (cherry picked from commitc4eeb0a61e) [CI] Forgejo Actions based CI for PR & branches (squash) cleanup (cherry picked from commit80eb20e842) (cherry picked from commitd2ff589858) (cherry picked from commitf6eedecb67) (cherry picked from commitcf458091e2) (cherry picked from commitddd322cb2d) (cherry picked from commitf0f5729b64) Conflicts: .github/workflows/pull-db-tests.yml https://codeberg.org/forgejo/forgejo/pulls/1573 (cherry picked from commitbb347aedd4) (cherry picked from commit0f5ebe8c3e) (cherry picked from commit9101cb4715) (cherry picked from commitab118fe4ef) [CI] Forgejo Actions based CI for PR & branches (squash) use node:20-bookworm No longer use the custom test-env image, it is unecessary technical debt. Also upgrade to bitnami/minio:2023.8.31 to align with what Gitea tests (cherry picked from commitd9b77fd273) (cherry picked from commitef8f099f9e) (cherry picked from commit6d3c675d20) (cherry picked from commitfc00ff45f2) (cherry picked from commitb7f02b9846) (cherry picked from commitd23d86e567) (cherry picked from commite68e65460c) (cherry picked from commit96f93a1fdb) (cherry picked from commit2ff3080018) (cherry picked from commit8ea00bcff4) (cherry picked from commit85be961970) (cherry picked from commit387b279fc3) (cherry picked from commit219be7aa85)
94 lines
2.8 KiB
Go
94 lines
2.8 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package storage
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"os"
|
|
"testing"
|
|
|
|
"code.gitea.io/gitea/modules/setting"
|
|
|
|
"github.com/minio/minio-go/v7"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestMinioStorageIterator(t *testing.T) {
|
|
if os.Getenv("CI") == "" {
|
|
t.Skip("minioStorage not present outside of CI")
|
|
return
|
|
}
|
|
testStorageIterator(t, setting.MinioStorageType, &setting.Storage{
|
|
MinioConfig: setting.MinioStorageConfig{
|
|
Endpoint: "minio:9000",
|
|
AccessKeyID: "123456",
|
|
SecretAccessKey: "12345678",
|
|
Bucket: "gitea",
|
|
Location: "us-east-1",
|
|
},
|
|
})
|
|
}
|
|
|
|
func TestMinioStoragePath(t *testing.T) {
|
|
m := &MinioStorage{basePath: ""}
|
|
assert.Equal(t, "", m.buildMinioPath("/"))
|
|
assert.Equal(t, "", m.buildMinioPath("."))
|
|
assert.Equal(t, "a", m.buildMinioPath("/a"))
|
|
assert.Equal(t, "a/b", m.buildMinioPath("/a/b/"))
|
|
assert.Equal(t, "", m.buildMinioDirPrefix(""))
|
|
assert.Equal(t, "a/", m.buildMinioDirPrefix("/a/"))
|
|
|
|
m = &MinioStorage{basePath: "/"}
|
|
assert.Equal(t, "", m.buildMinioPath("/"))
|
|
assert.Equal(t, "", m.buildMinioPath("."))
|
|
assert.Equal(t, "a", m.buildMinioPath("/a"))
|
|
assert.Equal(t, "a/b", m.buildMinioPath("/a/b/"))
|
|
assert.Equal(t, "", m.buildMinioDirPrefix(""))
|
|
assert.Equal(t, "a/", m.buildMinioDirPrefix("/a/"))
|
|
|
|
m = &MinioStorage{basePath: "/base"}
|
|
assert.Equal(t, "base", m.buildMinioPath("/"))
|
|
assert.Equal(t, "base", m.buildMinioPath("."))
|
|
assert.Equal(t, "base/a", m.buildMinioPath("/a"))
|
|
assert.Equal(t, "base/a/b", m.buildMinioPath("/a/b/"))
|
|
assert.Equal(t, "base/", m.buildMinioDirPrefix(""))
|
|
assert.Equal(t, "base/a/", m.buildMinioDirPrefix("/a/"))
|
|
|
|
m = &MinioStorage{basePath: "/base/"}
|
|
assert.Equal(t, "base", m.buildMinioPath("/"))
|
|
assert.Equal(t, "base", m.buildMinioPath("."))
|
|
assert.Equal(t, "base/a", m.buildMinioPath("/a"))
|
|
assert.Equal(t, "base/a/b", m.buildMinioPath("/a/b/"))
|
|
assert.Equal(t, "base/", m.buildMinioDirPrefix(""))
|
|
assert.Equal(t, "base/a/", m.buildMinioDirPrefix("/a/"))
|
|
}
|
|
|
|
func TestS3StorageBadRequest(t *testing.T) {
|
|
if os.Getenv("CI") == "" {
|
|
t.Skip("S3Storage not present outside of CI")
|
|
return
|
|
}
|
|
cfg := &setting.Storage{
|
|
MinioConfig: setting.MinioStorageConfig{
|
|
Endpoint: "minio:9000",
|
|
AccessKeyID: "123456",
|
|
SecretAccessKey: "12345678",
|
|
Bucket: "bucket",
|
|
Location: "us-east-1",
|
|
},
|
|
}
|
|
message := "ERROR"
|
|
old := getBucketVersioning
|
|
defer func() { getBucketVersioning = old }()
|
|
getBucketVersioning = func(ctx context.Context, minioClient *minio.Client, bucket string) error {
|
|
return minio.ErrorResponse{
|
|
StatusCode: http.StatusBadRequest,
|
|
Code: "FixtureError",
|
|
Message: message,
|
|
}
|
|
}
|
|
_, err := NewStorage(setting.MinioStorageType, cfg)
|
|
assert.ErrorContains(t, err, message)
|
|
}
|