mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-11 00:52:25 +08:00
152 lines
2.7 KiB
Go
152 lines
2.7 KiB
Go
package kodo
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"os"
|
|
"strconv"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
key = "aa"
|
|
keyFetch = "afetch"
|
|
newkey1 = "bbbb"
|
|
newkey2 = "cccc"
|
|
fetchURL = "http://www-static.u.qiniucdn.com/public/v1645/img/css-sprite.png"
|
|
bucketName string
|
|
domain string
|
|
client *Client
|
|
bucket = newBucket()
|
|
|
|
QINIU_KODO_TEST string
|
|
)
|
|
|
|
func init() {
|
|
|
|
if skipTest() {
|
|
return
|
|
}
|
|
rand.Seed(time.Now().UnixNano())
|
|
key += strconv.Itoa(rand.Int())
|
|
keyFetch += strconv.Itoa(rand.Int())
|
|
newkey1 += strconv.Itoa(rand.Int())
|
|
newkey2 += strconv.Itoa(rand.Int())
|
|
bucket.BatchDelete(nil, key, keyFetch, newkey1, newkey2)
|
|
}
|
|
|
|
func newBucket() (bucket Bucket) {
|
|
|
|
QINIU_KODO_TEST = os.Getenv("QINIU_KODO_TEST")
|
|
if skipTest() {
|
|
println("[INFO] QINIU_KODO_TEST: skipping to test github.com/qiniu/api.v7")
|
|
return
|
|
}
|
|
|
|
ak := os.Getenv("QINIU_ACCESS_KEY")
|
|
sk := os.Getenv("QINIU_SECRET_KEY")
|
|
if ak == "" || sk == "" {
|
|
panic("require ACCESS_KEY & SECRET_KEY")
|
|
}
|
|
SetMac(ak, sk)
|
|
|
|
bucketName = os.Getenv("QINIU_TEST_BUCKET")
|
|
domain = os.Getenv("QINIU_TEST_DOMAIN")
|
|
if bucketName == "" || domain == "" {
|
|
panic("require test env")
|
|
}
|
|
client = NewWithoutZone(nil)
|
|
|
|
return client.Bucket(bucketName)
|
|
}
|
|
|
|
func skipTest() bool {
|
|
|
|
return QINIU_KODO_TEST == ""
|
|
}
|
|
|
|
func upFile(localFile, key string) error {
|
|
|
|
return bucket.PutFile(nil, nil, key, localFile, nil)
|
|
}
|
|
|
|
func TestFetch(t *testing.T) {
|
|
|
|
if skipTest() {
|
|
return
|
|
}
|
|
|
|
err := bucket.Fetch(nil, keyFetch, fetchURL)
|
|
if err != nil {
|
|
t.Fatal("bucket.Fetch failed:", err)
|
|
}
|
|
|
|
entry, err := bucket.Stat(nil, keyFetch)
|
|
if err != nil || entry.MimeType != "image/png" {
|
|
t.Fatal("bucket.Fetch: Stat failed -", err, "entry:", entry)
|
|
}
|
|
fmt.Println(entry)
|
|
}
|
|
|
|
func TestEntry(t *testing.T) {
|
|
|
|
if skipTest() {
|
|
return
|
|
}
|
|
|
|
//上传一个文件用用于测试
|
|
err := upFile("doc.go", key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer bucket.Delete(nil, key)
|
|
|
|
einfo, err := bucket.Stat(nil, key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
mime := "text/plain"
|
|
err = bucket.ChangeMime(nil, key, mime)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
einfo, err = bucket.Stat(nil, key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if einfo.MimeType != mime {
|
|
t.Fatal("mime type did not change")
|
|
}
|
|
|
|
err = bucket.Copy(nil, key, newkey1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
enewinfo, err := bucket.Stat(nil, newkey1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if einfo.Hash != enewinfo.Hash {
|
|
t.Fatal("invalid entryinfo:", einfo, enewinfo)
|
|
}
|
|
err = bucket.Move(nil, newkey1, newkey2)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
enewinfo2, err := bucket.Stat(nil, newkey2)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if enewinfo.Hash != enewinfo2.Hash {
|
|
t.Fatal("invalid entryinfo:", enewinfo, enewinfo2)
|
|
}
|
|
|
|
err = bucket.Delete(nil, newkey2)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|