milvus/pkg/objectstorage/huawei/huawei_test.go
Chun Han 85c8cca094
feat: milvus support huawei cloud iam verification(#45298) (#45312)
related: #45298
pr: https://github.com/milvus-io/milvus/pull/45457

Signed-off-by: MrPresent-Han <chun.han@gmail.com>
Co-authored-by: MrPresent-Han <chun.han@gmail.com>
2025-11-11 15:11:36 +08:00

71 lines
2.0 KiB
Go

package huawei
import (
"testing"
"time"
"github.com/cockroachdb/errors"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"github.com/stretchr/testify/assert"
)
const OBSDefaultAddress = "obs.cn-east-3.myhuaweicloud.com"
func TestNewMinioClient(t *testing.T) {
t.Run("ak sk ok", func(t *testing.T) {
minioCli, err := NewMinioClient(OBSDefaultAddress+":443", &minio.Options{
Creds: credentials.NewStaticV4("ak", "sk", ""),
Secure: true,
})
assert.NoError(t, err)
assert.Equal(t, OBSDefaultAddress+":443", minioCli.EndpointURL().Host)
assert.Equal(t, "https", minioCli.EndpointURL().Scheme)
})
t.Run("iam ok", func(t *testing.T) {
minioCli, err := NewMinioClient("", &minio.Options{Region: "cn-east-3"})
assert.NoError(t, err)
assert.Equal(t, "obs.cn-east-3.myhuaweicloud.com", minioCli.EndpointURL().Host)
assert.Equal(t, "https", minioCli.EndpointURL().Scheme)
})
}
func TestHuaweiCredentialProvider_Retrieve(t *testing.T) {
// Skip detailed mocking tests for now, as they require complex setup
// This test focuses on the basic functionality
t.Run("init error", func(t *testing.T) {
c := &HuaweiCredentialProvider{
initErr: errors.New("init failed"),
}
c.initOnce.Do(func() {}) // Mark as initialized
_, err := c.Retrieve()
assert.Error(t, err)
assert.Contains(t, err.Error(), "init failed")
})
}
func TestHuaweiCredentialProvider_IsExpired(t *testing.T) {
c := &HuaweiCredentialProvider{}
t.Run("expired - zero time", func(t *testing.T) {
assert.True(t, c.IsExpired())
})
t.Run("expired - past time", func(t *testing.T) {
c.expiration = time.Now().UTC().Add(-10 * time.Minute)
assert.True(t, c.IsExpired())
})
t.Run("expired - within refresh window", func(t *testing.T) {
c.expiration = time.Now().UTC().Add(3 * time.Minute)
assert.True(t, c.IsExpired())
})
t.Run("not expired", func(t *testing.T) {
c.expiration = time.Now().UTC().Add(10 * time.Minute)
assert.False(t, c.IsExpired())
})
}