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  }