2023-05-14 06:33:25 +08:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package storage
import (
2023-09-12 04:19:39 +02:00
"context"
"net/http"
2023-05-17 18:00:58 +08:00
"os"
2023-05-14 06:33:25 +08:00
"testing"
2023-06-14 11:42:38 +08:00
"code.gitea.io/gitea/modules/setting"
2023-09-12 04:19:39 +02:00
"github.com/minio/minio-go/v7"
"github.com/stretchr/testify/assert"
2023-05-14 06:33:25 +08:00
)
func TestMinioStorageIterator ( t * testing . T ) {
2023-05-17 18:00:58 +08:00
if os . Getenv ( "CI" ) == "" {
2023-05-17 18:22:17 +02:00
t . Skip ( "minioStorage not present outside of CI" )
2023-05-17 18:00:58 +08:00
return
}
2023-06-14 11:42:38 +08:00
testStorageIterator ( t , setting . MinioStorageType , & setting . Storage {
MinioConfig : setting . MinioStorageConfig {
2023-05-28 15:31:52 +02:00
Endpoint : "minio:9000" ,
2023-06-14 11:42:38 +08:00
AccessKeyID : "123456" ,
SecretAccessKey : "12345678" ,
Bucket : "gitea" ,
Location : "us-east-1" ,
} ,
2023-05-14 06:33:25 +08:00
} )
}
2023-09-12 04:19:39 +02:00
2024-03-04 11:13:59 +08:00
func TestVirtualHostMinioStorage ( 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" ,
BucketLookup : "dns" ,
} ,
} )
}
2023-09-13 09:18:52 +08:00
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/" ) )
}
2023-09-12 04:19:39 +02:00
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 )
}