summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/minio/minio-go/api-error-response_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/minio/minio-go/api-error-response_test.go')
-rw-r--r--vendor/github.com/minio/minio-go/api-error-response_test.go108
1 files changed, 60 insertions, 48 deletions
diff --git a/vendor/github.com/minio/minio-go/api-error-response_test.go b/vendor/github.com/minio/minio-go/api-error-response_test.go
index 595cb50bd..bf10941b4 100644
--- a/vendor/github.com/minio/minio-go/api-error-response_test.go
+++ b/vendor/github.com/minio/minio-go/api-error-response_test.go
@@ -1,5 +1,6 @@
/*
- * Minio Go Library for Amazon S3 Compatible Cloud Storage (C) 2015 Minio, Inc.
+ * Minio Go Library for Amazon S3 Compatible Cloud Storage
+ * Copyright 2015-2017 Minio, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -7,7 +8,7 @@
*
* http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required bZy applicable law or agreed to in writing, software
+ * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
@@ -32,20 +33,23 @@ func TestHttpRespToErrorResponse(t *testing.T) {
// 'genAPIErrorResponse' generates ErrorResponse for given APIError.
// provides a encodable populated response values.
genAPIErrorResponse := func(err APIError, bucketName string) ErrorResponse {
- var errResp = ErrorResponse{}
- errResp.Code = err.Code
- errResp.Message = err.Description
- errResp.BucketName = bucketName
- return errResp
+ return ErrorResponse{
+ Code: err.Code,
+ Message: err.Description,
+ BucketName: bucketName,
+ }
}
// Encodes the response headers into XML format.
- encodeErr := func(response interface{}) []byte {
- var bytesBuffer bytes.Buffer
- bytesBuffer.WriteString(xml.Header)
- encode := xml.NewEncoder(&bytesBuffer)
- encode.Encode(response)
- return bytesBuffer.Bytes()
+ encodeErr := func(response ErrorResponse) []byte {
+ buf := &bytes.Buffer{}
+ buf.WriteString(xml.Header)
+ encoder := xml.NewEncoder(buf)
+ err := encoder.Encode(response)
+ if err != nil {
+ t.Fatalf("error encoding response: %v", err)
+ }
+ return buf.Bytes()
}
// `createAPIErrorResponse` Mocks XML error response from the server.
@@ -65,6 +69,7 @@ func TestHttpRespToErrorResponse(t *testing.T) {
// 'genErrResponse' contructs error response based http Status Code
genErrResponse := func(resp *http.Response, code, message, bucketName, objectName string) ErrorResponse {
errResp := ErrorResponse{
+ StatusCode: resp.StatusCode,
Code: code,
Message: message,
BucketName: bucketName,
@@ -80,9 +85,10 @@ func TestHttpRespToErrorResponse(t *testing.T) {
// Generate invalid argument error.
genInvalidError := func(message string) error {
errResp := ErrorResponse{
- Code: "InvalidArgument",
- Message: message,
- RequestID: "minio",
+ StatusCode: http.StatusBadRequest,
+ Code: "InvalidArgument",
+ Message: message,
+ RequestID: "minio",
}
return errResp
}
@@ -101,22 +107,22 @@ func TestHttpRespToErrorResponse(t *testing.T) {
// Set the StatusCode to the argument supplied.
// Sets common headers.
genEmptyBodyResponse := func(statusCode int) *http.Response {
- resp := &http.Response{}
- // set empty response body.
- resp.Body = ioutil.NopCloser(bytes.NewBuffer([]byte("")))
- // set headers.
+ resp := &http.Response{
+ StatusCode: statusCode,
+ Body: ioutil.NopCloser(bytes.NewReader(nil)),
+ }
setCommonHeaders(resp)
- // set status code.
- resp.StatusCode = statusCode
return resp
}
// Decode XML error message from the http response body.
- decodeXMLError := func(resp *http.Response, t *testing.T) error {
- var errResp ErrorResponse
+ decodeXMLError := func(resp *http.Response) error {
+ errResp := ErrorResponse{
+ StatusCode: resp.StatusCode,
+ }
err := xmlDecoder(resp.Body, &errResp)
if err != nil {
- t.Fatal("XML decoding of response body failed")
+ t.Fatalf("XML decoding of response body failed: %v", err)
}
return errResp
}
@@ -134,12 +140,12 @@ func TestHttpRespToErrorResponse(t *testing.T) {
// Used for asserting the actual response.
expectedErrResponse := []error{
genInvalidError("Response is empty. " + "Please report this issue at https://github.com/minio/minio-go/issues."),
- decodeXMLError(createAPIErrorResponse(APIErrors[0], "minio-bucket"), t),
- genErrResponse(setCommonHeaders(&http.Response{}), "NoSuchBucket", "The specified bucket does not exist.", "minio-bucket", ""),
- genErrResponse(setCommonHeaders(&http.Response{}), "NoSuchKey", "The specified key does not exist.", "minio-bucket", "Asia/"),
- genErrResponse(setCommonHeaders(&http.Response{}), "AccessDenied", "Access Denied.", "minio-bucket", ""),
- genErrResponse(setCommonHeaders(&http.Response{}), "Conflict", "Bucket not empty.", "minio-bucket", ""),
- genErrResponse(setCommonHeaders(&http.Response{}), "Bad Request", "Bad Request", "minio-bucket", ""),
+ decodeXMLError(createAPIErrorResponse(APIErrors[0], "minio-bucket")),
+ genErrResponse(setCommonHeaders(&http.Response{StatusCode: http.StatusNotFound}), "NoSuchBucket", "The specified bucket does not exist.", "minio-bucket", ""),
+ genErrResponse(setCommonHeaders(&http.Response{StatusCode: http.StatusNotFound}), "NoSuchKey", "The specified key does not exist.", "minio-bucket", "Asia/"),
+ genErrResponse(setCommonHeaders(&http.Response{StatusCode: http.StatusForbidden}), "AccessDenied", "Access Denied.", "minio-bucket", ""),
+ genErrResponse(setCommonHeaders(&http.Response{StatusCode: http.StatusConflict}), "Conflict", "Bucket not empty.", "minio-bucket", ""),
+ genErrResponse(setCommonHeaders(&http.Response{StatusCode: http.StatusBadRequest}), "Bad Request", "Bad Request", "minio-bucket", ""),
}
// List of http response to be used as input.
@@ -182,6 +188,7 @@ func TestHttpRespToErrorResponse(t *testing.T) {
func TestErrEntityTooLarge(t *testing.T) {
msg := fmt.Sprintf("Your proposed upload size ‘%d’ exceeds the maximum allowed object size ‘%d’ for single PUT operation.", 1000000, 99999)
expectedResult := ErrorResponse{
+ StatusCode: http.StatusBadRequest,
Code: "EntityTooLarge",
Message: msg,
BucketName: "minio-bucket",
@@ -189,22 +196,23 @@ func TestErrEntityTooLarge(t *testing.T) {
}
actualResult := ErrEntityTooLarge(1000000, 99999, "minio-bucket", "Asia/")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}
// Test validates 'ErrEntityTooSmall' error response.
func TestErrEntityTooSmall(t *testing.T) {
- msg := fmt.Sprintf("Your proposed upload size ‘%d’ is below the minimum allowed object size '0B' for single PUT operation.", -1)
+ msg := fmt.Sprintf("Your proposed upload size ‘%d’ is below the minimum allowed object size ‘0B’ for single PUT operation.", -1)
expectedResult := ErrorResponse{
- Code: "EntityTooLarge",
+ StatusCode: http.StatusBadRequest,
+ Code: "EntityTooSmall",
Message: msg,
BucketName: "minio-bucket",
Key: "Asia/",
}
actualResult := ErrEntityTooSmall(-1, "minio-bucket", "Asia/")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}
@@ -213,6 +221,7 @@ func TestErrUnexpectedEOF(t *testing.T) {
msg := fmt.Sprintf("Data read ‘%s’ is not equal to the size ‘%s’ of the input Reader.",
strconv.FormatInt(100, 10), strconv.FormatInt(101, 10))
expectedResult := ErrorResponse{
+ StatusCode: http.StatusBadRequest,
Code: "UnexpectedEOF",
Message: msg,
BucketName: "minio-bucket",
@@ -220,46 +229,49 @@ func TestErrUnexpectedEOF(t *testing.T) {
}
actualResult := ErrUnexpectedEOF(100, 101, "minio-bucket", "Asia/")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}
// Test validates 'ErrInvalidBucketName' error response.
func TestErrInvalidBucketName(t *testing.T) {
expectedResult := ErrorResponse{
- Code: "InvalidBucketName",
- Message: "Invalid Bucket name",
- RequestID: "minio",
+ StatusCode: http.StatusBadRequest,
+ Code: "InvalidBucketName",
+ Message: "Invalid Bucket name",
+ RequestID: "minio",
}
actualResult := ErrInvalidBucketName("Invalid Bucket name")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}
// Test validates 'ErrInvalidObjectName' error response.
func TestErrInvalidObjectName(t *testing.T) {
expectedResult := ErrorResponse{
- Code: "NoSuchKey",
- Message: "Invalid Object Key",
- RequestID: "minio",
+ StatusCode: http.StatusNotFound,
+ Code: "NoSuchKey",
+ Message: "Invalid Object Key",
+ RequestID: "minio",
}
actualResult := ErrInvalidObjectName("Invalid Object Key")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}
// Test validates 'ErrInvalidArgument' response.
func TestErrInvalidArgument(t *testing.T) {
expectedResult := ErrorResponse{
- Code: "InvalidArgument",
- Message: "Invalid Argument",
- RequestID: "minio",
+ StatusCode: http.StatusBadRequest,
+ Code: "InvalidArgument",
+ Message: "Invalid Argument",
+ RequestID: "minio",
}
actualResult := ErrInvalidArgument("Invalid Argument")
if !reflect.DeepEqual(expectedResult, actualResult) {
- t.Errorf("Expected result to be '%+v', but instead got '%+v'", expectedResult, actualResult)
+ t.Errorf("Expected result to be '%#v', but instead got '%#v'", expectedResult, actualResult)
}
}