Skip to content

Commit cb649e7

Browse files
xiaobing.mengmenglingwei
authored andcommitted
add http mock
1 parent 3dce9c8 commit cb649e7

File tree

6 files changed

+229
-55
lines changed

6 files changed

+229
-55
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.idea/
2+
vendor
3+
oss/*.log

go.mod

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module github.com/aliyun/aliyun-oss-go-sdk
2+
3+
go 1.11
4+
5+
require (
6+
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1263
7+
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f
8+
github.com/magiconair/properties v1.8.5 // indirect
9+
github.com/satori/go.uuid v1.2.0 // indirect
10+
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac
11+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
12+
)

go.sum

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1263 h1:4LvG//QeqQLO8teWN8XQYEE2kNnor+FyCQtpfYdX1T4=
2+
github.com/aliyun/alibaba-cloud-sdk-go v1.61.1263/go.mod h1:9CMdKNL3ynIGPpfTcdwTvIm8SGuAZYYC4jFVSSvE1YQ=
3+
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
4+
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
5+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
6+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
7+
github.com/denverdino/aliyungo v0.0.0-20210910083501-4f11020c0bfb h1:w0Y6orfArgN0EGUOXqa3heTmPwUzZS9oV79ddQqkVP4=
8+
github.com/denverdino/aliyungo v0.0.0-20210910083501-4f11020c0bfb/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
9+
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
10+
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
11+
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
12+
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
13+
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
14+
github.com/json-iterator/go v1.1.5 h1:gL2yXlmiIo4+t+y32d4WGwOjKGYcGOuyrg46vadswDE=
15+
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
16+
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
17+
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
18+
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
19+
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
20+
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
21+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
22+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
23+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
24+
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
25+
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
26+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
27+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
28+
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
29+
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
30+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
31+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
32+
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
33+
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
34+
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
35+
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
36+
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
37+
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
38+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
39+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
40+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
41+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
42+
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
43+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
44+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
45+
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
46+
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
47+
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
48+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
49+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
50+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
51+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
52+
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
53+
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
54+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
55+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
56+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

oss/bucket_test.go

Lines changed: 53 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import (
1616
"strings"
1717
"time"
1818

19-
"github.com/baiyubin/aliyun-sts-go-sdk/sts"
20-
2119
. "gopkg.in/check.v1"
2220
)
2321

@@ -2060,59 +2058,59 @@ func (s *OssBucketSuite) TestGetConfig(c *C) {
20602058
c.Assert(bucket.GetConfig().IsEnableMD5, Equals, false)
20612059
}
20622060

2063-
func (s *OssBucketSuite) TestSTSToken(c *C) {
2064-
objectName := objectNamePrefix + RandStr(8)
2065-
objectValue := "红藕香残玉簟秋。轻解罗裳,独上兰舟。云中谁寄锦书来?雁字回时,月满西楼。"
2066-
2067-
stsClient := sts.NewClient(stsaccessID, stsaccessKey, stsARN, "oss_test_sess")
2068-
2069-
resp, err := stsClient.AssumeRole(1800)
2070-
c.Assert(err, IsNil)
2071-
2072-
client, err := New(endpoint, resp.Credentials.AccessKeyId, resp.Credentials.AccessKeySecret,
2073-
SecurityToken(resp.Credentials.SecurityToken))
2074-
c.Assert(err, IsNil)
2075-
2076-
bucket, err := client.Bucket(bucketName)
2077-
c.Assert(err, IsNil)
2078-
2079-
// Put
2080-
err = bucket.PutObject(objectName, strings.NewReader(objectValue))
2081-
c.Assert(err, IsNil)
2082-
2083-
// Get
2084-
body, err := bucket.GetObject(objectName)
2085-
c.Assert(err, IsNil)
2086-
str, err := readBody(body)
2087-
c.Assert(err, IsNil)
2088-
c.Assert(str, Equals, objectValue)
2089-
2090-
// List
2091-
lor, err := bucket.ListObjects()
2092-
c.Assert(err, IsNil)
2093-
testLogger.Println("Objects:", lor.Objects)
2094-
2095-
// Put with URL
2096-
signedURL, err := bucket.SignURL(objectName, HTTPPut, 3600)
2097-
c.Assert(err, IsNil)
2098-
2099-
err = bucket.PutObjectWithURL(signedURL, strings.NewReader(objectValue))
2100-
c.Assert(err, IsNil)
2101-
2102-
// Get with URL
2103-
signedURL, err = bucket.SignURL(objectName, HTTPGet, 3600)
2104-
c.Assert(err, IsNil)
2105-
2106-
body, err = bucket.GetObjectWithURL(signedURL)
2107-
c.Assert(err, IsNil)
2108-
str, err = readBody(body)
2109-
c.Assert(err, IsNil)
2110-
c.Assert(str, Equals, objectValue)
2111-
2112-
// Delete
2113-
err = bucket.DeleteObject(objectName)
2114-
c.Assert(err, IsNil)
2115-
}
2061+
//func (s *OssBucketSuite) TestSTSToken(c *C) {
2062+
// objectName := objectNamePrefix + RandStr(8)
2063+
// objectValue := "红藕香残玉簟秋。轻解罗裳,独上兰舟。云中谁寄锦书来?雁字回时,月满西楼。"
2064+
//
2065+
// stsClient := sts.NewClient(stsaccessID, stsaccessKey, stsARN, "oss_test_sess")
2066+
//
2067+
// resp, err := stsClient.AssumeRole(1800)
2068+
// c.Assert(err, IsNil)
2069+
//
2070+
// client, err := New(endpoint, resp.Credentials.AccessKeyId, resp.Credentials.AccessKeySecret,
2071+
// SecurityToken(resp.Credentials.SecurityToken))
2072+
// c.Assert(err, IsNil)
2073+
//
2074+
// bucket, err := client.Bucket(bucketName)
2075+
// c.Assert(err, IsNil)
2076+
//
2077+
// // Put
2078+
// err = bucket.PutObject(objectName, strings.NewReader(objectValue))
2079+
// c.Assert(err, IsNil)
2080+
//
2081+
// // Get
2082+
// body, err := bucket.GetObject(objectName)
2083+
// c.Assert(err, IsNil)
2084+
// str, err := readBody(body)
2085+
// c.Assert(err, IsNil)
2086+
// c.Assert(str, Equals, objectValue)
2087+
//
2088+
// // List
2089+
// lor, err := bucket.ListObjects()
2090+
// c.Assert(err, IsNil)
2091+
// testLogger.Println("Objects:", lor.Objects)
2092+
//
2093+
// // Put with URL
2094+
// signedURL, err := bucket.SignURL(objectName, HTTPPut, 3600)
2095+
// c.Assert(err, IsNil)
2096+
//
2097+
// err = bucket.PutObjectWithURL(signedURL, strings.NewReader(objectValue))
2098+
// c.Assert(err, IsNil)
2099+
//
2100+
// // Get with URL
2101+
// signedURL, err = bucket.SignURL(objectName, HTTPGet, 3600)
2102+
// c.Assert(err, IsNil)
2103+
//
2104+
// body, err = bucket.GetObjectWithURL(signedURL)
2105+
// c.Assert(err, IsNil)
2106+
// str, err = readBody(body)
2107+
// c.Assert(err, IsNil)
2108+
// c.Assert(str, Equals, objectValue)
2109+
//
2110+
// // Delete
2111+
// err = bucket.DeleteObject(objectName)
2112+
// c.Assert(err, IsNil)
2113+
//}
21162114

21172115
func (s *OssBucketSuite) TestSTSTonekNegative(c *C) {
21182116
objectName := objectNamePrefix + RandStr(8)

oss/client.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ func (client Client) Bucket(bucketName string) (*Bucket, error) {
9797
}, nil
9898
}
9999

100+
func (client Client) SetTransport(roundTripper http.RoundTripper) {
101+
client.Conn.client.Transport = roundTripper
102+
}
103+
100104
// CreateBucket creates a bucket.
101105
//
102106
// bucketName the bucket name, it's globably unique and immutable. The bucket name can only consist of lowercase letters, numbers and dash ('-').

oss/client_transport_test.go

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package oss
2+
3+
import (
4+
"bytes"
5+
"io/ioutil"
6+
"net/http"
7+
"testing"
8+
)
9+
10+
func Test_ClientTransPort_CreateBucket(t *testing.T) {
11+
t.Logf("ok")
12+
13+
rt := &tripper{}
14+
rt.AddResponse(200)
15+
16+
client, err := New("cn-beijing", "abc", "dfe")
17+
if err != nil {
18+
t.Fatalf("New Error %v", err)
19+
}
20+
21+
if client.HTTPClient == nil {
22+
client.HTTPClient = &http.Client{
23+
Transport: rt,
24+
}
25+
} else {
26+
client.HTTPClient.Transport = rt
27+
}
28+
client.SetTransport(rt)
29+
30+
// Create Bucket
31+
err = client.CreateBucket("abc")
32+
if err != nil {
33+
t.Fatalf("CreateBucket Error %v", err)
34+
} else {
35+
t.Logf("CreateBucket Success")
36+
}
37+
38+
}
39+
40+
func Test_ClientTransPort_DeleteBucket(t *testing.T) {
41+
t.Logf("ok")
42+
43+
rt := &tripper{}
44+
rt.AddResponse(204)
45+
46+
client, err := New("cn-beijing", "abc", "dfe")
47+
if err != nil {
48+
t.Fatalf("New Error %v", err)
49+
}
50+
51+
if client.HTTPClient == nil {
52+
client.HTTPClient = &http.Client{
53+
Transport: rt,
54+
}
55+
} else {
56+
client.HTTPClient.Transport = rt
57+
}
58+
client.SetTransport(rt)
59+
60+
// Delete Bucket
61+
err = client.DeleteBucket("abc")
62+
if err != nil {
63+
t.Fatalf("DeleteBucket Error %v", err)
64+
} else {
65+
t.Logf("DeleteBucket Success")
66+
}
67+
}
68+
69+
type tripper struct {
70+
req int
71+
reqBodies [][]byte
72+
responseCodes []int
73+
}
74+
75+
func (r *tripper) RoundTrip(req *http.Request) (*http.Response, error) {
76+
defer func() {
77+
r.req++
78+
}()
79+
80+
if req.Body != nil {
81+
dt, err := ioutil.ReadAll(req.Body)
82+
if err != nil {
83+
return nil, err
84+
}
85+
r.reqBodies = append(r.reqBodies, dt)
86+
}
87+
88+
code := http.StatusOK
89+
if r.req < len(r.responseCodes) {
90+
code = r.responseCodes[r.req]
91+
}
92+
93+
return &http.Response{
94+
StatusCode: code,
95+
Body: ioutil.NopCloser(bytes.NewBufferString("{}")),
96+
}, nil
97+
}
98+
99+
func (r *tripper) AddResponse(code int) {
100+
r.responseCodes = append(r.responseCodes, code)
101+
}

0 commit comments

Comments
 (0)