github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/apistest/apis_test.go (about) 1 //go:build integration 2 // +build integration 3 4 package apistest_test 5 6 import ( 7 "bytes" 8 "context" 9 "math/rand" 10 "os" 11 "testing" 12 "time" 13 14 "github.com/qiniu/go-sdk/v7/client" 15 internal_io "github.com/qiniu/go-sdk/v7/internal/io" 16 "github.com/qiniu/go-sdk/v7/storagev2/apis" 17 "github.com/qiniu/go-sdk/v7/storagev2/credentials" 18 "github.com/qiniu/go-sdk/v7/storagev2/errors" 19 "github.com/qiniu/go-sdk/v7/storagev2/http_client" 20 "github.com/qiniu/go-sdk/v7/storagev2/uptoken" 21 "github.com/stretchr/testify/require" 22 ) 23 24 var ( 25 testAK = os.Getenv("accessKey") 26 testSK = os.Getenv("secretKey") 27 testBucket = os.Getenv("QINIU_TEST_BUCKET") 28 testDebug = os.Getenv("QINIU_SDK_DEBUG") 29 30 testKey = "qiniu.png" 31 ) 32 33 func init() { 34 if testDebug == "true" { 35 client.TurnOnDebug() 36 } 37 } 38 39 func TestMkBlk(t *testing.T) { 40 credentials := credentials.NewCredentials(testAK, testSK) 41 storageClient := apis.NewStorage(&http_client.Options{ 42 Credentials: credentials, 43 }) 44 putPolicy, err := uptoken.NewPutPolicy(testBucket, time.Now().Add(30*time.Minute)) 45 if err != nil { 46 t.Fatal(err) 47 } 48 49 r := rand.New(rand.NewSource(time.Now().UnixNano())) 50 buf := make([]byte, 4*1024*1024) 51 if _, err = r.Read(buf); err != nil { 52 t.Fatal(err) 53 } 54 bufReader := bytes.NewReader(buf) 55 56 if _, err = storageClient.ResumableUploadV1MakeBlock(context.Background(), &apis.ResumableUploadV1MakeBlockRequest{ 57 BlockSize: 4 * 1024 * 1024, 58 UpToken: uptoken.NewSigner(putPolicy, credentials), 59 Body: internal_io.NewReadSeekableNopCloser(bufReader), 60 }, nil); err != nil { 61 t.Fatal(err) 62 } 63 64 if _, err = storageClient.ResumableUploadV1MakeBlock(context.Background(), &apis.ResumableUploadV1MakeBlockRequest{ 65 BlockSize: 4 * 1024 * 1024, 66 Body: internal_io.NewReadSeekableNopCloser(bufReader), 67 }, nil); err != nil { 68 if err.(errors.MissingRequiredFieldError).Name != "UpToken" { 69 t.FailNow() 70 } 71 } 72 } 73 74 func TestCreateBucket(t *testing.T) { 75 credentials := credentials.NewCredentials(testAK, testSK) 76 _, err := apis.NewStorage(&http_client.Options{Credentials: credentials}).CreateBucket(context.Background(), &apis.CreateBucketRequest{ 77 Bucket: testBucket, 78 Region: "z0", 79 }, nil) 80 if err != nil { 81 if err.Error() != "the bucket already exists and you own it." { 82 t.Fatal(err) 83 } 84 } else { 85 t.FailNow() 86 } 87 88 _, err = apis.NewStorage(nil).CreateBucket(context.Background(), &apis.CreateBucketRequest{ 89 Bucket: testBucket, 90 Credentials: credentials, 91 Region: "z0", 92 }, nil) 93 if err != nil { 94 if err.Error() != "the bucket already exists and you own it." { 95 t.Fatal(err) 96 } 97 } else { 98 t.FailNow() 99 } 100 101 _, err = apis.NewStorage(nil).CreateBucket(context.Background(), &apis.CreateBucketRequest{ 102 Bucket: testBucket, 103 Region: "z0", 104 }, nil) 105 if err == nil || err.(errors.MissingRequiredFieldError).Name != "Credentials" { 106 t.FailNow() 107 } 108 } 109 110 func TestQuery(t *testing.T) { 111 credentials := credentials.NewCredentials(testAK, testSK) 112 113 storage := apis.NewStorage(&http_client.Options{Credentials: credentials}) 114 115 response, err := storage.QueryBucketV4(context.Background(), &apis.QueryBucketV4Request{ 116 Bucket: testBucket, 117 AccessKey: testAK, 118 }, nil) 119 120 require.NoError(t, err) 121 122 for _, host := range response.Hosts { 123 require.NotNil(t, host.S3Domains) 124 require.NotEmpty(t, host.S3Domains.RegionAlias) 125 require.NotEmpty(t, host.S3Domains.PreferedApiDomains) 126 } 127 }