github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/error_test.go (about) 1 package oss 2 3 import ( 4 "math" 5 "net/http" 6 "strings" 7 8 . "gopkg.in/check.v1" 9 ) 10 11 type OssErrorSuite struct{} 12 13 var _ = Suite(&OssErrorSuite{}) 14 15 func (s *OssErrorSuite) TestCheckCRCHasCRCInResp(c *C) { 16 headers := http.Header{ 17 "Expires": {"-1"}, 18 "Content-Length": {"0"}, 19 "Content-Encoding": {"gzip"}, 20 "X-Oss-Hash-Crc64ecma": {"0"}, 21 } 22 23 resp := &Response{ 24 StatusCode: 200, 25 Headers: headers, 26 Body: nil, 27 ClientCRC: math.MaxUint64, 28 ServerCRC: math.MaxUint64, 29 } 30 31 err := CheckCRC(resp, "test") 32 c.Assert(err, IsNil) 33 } 34 35 func (s *OssErrorSuite) TestCheckCRCNotHasCRCInResp(c *C) { 36 headers := http.Header{ 37 "Expires": {"-1"}, 38 "Content-Length": {"0"}, 39 "Content-Encoding": {"gzip"}, 40 } 41 42 resp := &Response{ 43 StatusCode: 200, 44 Headers: headers, 45 Body: nil, 46 ClientCRC: math.MaxUint64, 47 ServerCRC: math.MaxUint32, 48 } 49 50 err := CheckCRC(resp, "test") 51 c.Assert(err, IsNil) 52 } 53 54 func (s *OssErrorSuite) TestCheckCRCCNegative(c *C) { 55 headers := http.Header{ 56 "Expires": {"-1"}, 57 "Content-Length": {"0"}, 58 "Content-Encoding": {"gzip"}, 59 "X-Oss-Hash-Crc64ecma": {"0"}, 60 } 61 62 resp := &Response{ 63 StatusCode: 200, 64 Headers: headers, 65 Body: nil, 66 ClientCRC: 0, 67 ServerCRC: math.MaxUint64, 68 } 69 70 err := CheckCRC(resp, "test") 71 c.Assert(err, NotNil) 72 testLogger.Println("error:", err) 73 } 74 75 func (s *OssErrorSuite) TestCheckDownloadCRC(c *C) { 76 err := CheckDownloadCRC(0xFBF9D9603A6FA020, 0xFBF9D9603A6FA020) 77 c.Assert(err, IsNil) 78 79 err = CheckDownloadCRC(0, 0) 80 c.Assert(err, IsNil) 81 82 err = CheckDownloadCRC(0xDB6EFFF26AA94946, 0) 83 c.Assert(err, NotNil) 84 testLogger.Println("error:", err) 85 } 86 87 func (s *OssErrorSuite) TestServiceErrorEndPoint(c *C) { 88 xmlBody := `<?xml version="1.0" encoding="UTF-8"?> 89 <Error> 90 <Code>AccessDenied</Code> 91 <Message>The bucket you visit is not belong to you.</Message> 92 <RequestId>5C1B5E9BD79A6B9B6466166E</RequestId> 93 <HostId>oss-c-sdk-test-verify-b.oss-cn-shenzhen.aliyuncs.com</HostId> 94 </Error>` 95 serverError, _ := serviceErrFromXML([]byte(xmlBody), 403, "5C1B5E9BD79A6B9B6466166E") 96 errMsg := serverError.Error() 97 c.Assert(strings.Contains(errMsg, "Endpoint="), Equals, false) 98 99 xmlBodyWithEndPoint := `<?xml version="1.0" encoding="UTF-8"?> 100 <Error> 101 <Code>AccessDenied</Code> 102 <Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message> 103 <RequestId>5C1B595ED51820B569C6A12F</RequestId> 104 <HostId>hello-hangzws.oss-cn-qingdao.aliyuncs.com</HostId> 105 <Bucket>hello-hangzws</Bucket> 106 <Endpoint>oss-cn-shenzhen.aliyuncs.com</Endpoint> 107 </Error>` 108 serverError, _ = serviceErrFromXML([]byte(xmlBodyWithEndPoint), 406, "5C1B595ED51820B569C6A12F") 109 errMsg = serverError.Error() 110 c.Assert(strings.Contains(errMsg, "Endpoint=oss-cn-shenzhen.aliyuncs.com"), Equals, true) 111 }