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  }