summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/minio/minio-go/utils_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/minio/minio-go/utils_test.go')
-rw-r--r--vendor/github.com/minio/minio-go/utils_test.go280
1 files changed, 30 insertions, 250 deletions
diff --git a/vendor/github.com/minio/minio-go/utils_test.go b/vendor/github.com/minio/minio-go/utils_test.go
index 1a30d5441..99bdea329 100644
--- a/vendor/github.com/minio/minio-go/utils_test.go
+++ b/vendor/github.com/minio/minio-go/utils_test.go
@@ -17,11 +17,27 @@ package minio
import (
"fmt"
+ "net/http"
"net/url"
"testing"
"time"
)
+// Tests filter header function by filtering out
+// some custom header keys.
+func TestFilterHeader(t *testing.T) {
+ header := http.Header{}
+ header.Set("Content-Type", "binary/octet-stream")
+ header.Set("Content-Encoding", "gzip")
+ newHeader := filterHeader(header, []string{"Content-Type"})
+ if len(newHeader) > 1 {
+ t.Fatalf("Unexpected size of the returned header, should be 1, got %d", len(newHeader))
+ }
+ if newHeader.Get("Content-Encoding") != "gzip" {
+ t.Fatalf("Unexpected content-encoding value, expected 'gzip', got %s", newHeader.Get("Content-Encoding"))
+ }
+}
+
// Tests for 'getEndpointURL(endpoint string, inSecure bool)'.
func TestGetEndpointURL(t *testing.T) {
testCases := []struct {
@@ -74,35 +90,6 @@ func TestGetEndpointURL(t *testing.T) {
}
}
-// Tests for 'isValidDomain(host string) bool'.
-func TestIsValidDomain(t *testing.T) {
- testCases := []struct {
- // Input.
- host string
- // Expected result.
- result bool
- }{
- {"s3.amazonaws.com", true},
- {"s3.cn-north-1.amazonaws.com.cn", true},
- {"s3.amazonaws.com_", false},
- {"%$$$", false},
- {"s3.amz.test.com", true},
- {"s3.%%", false},
- {"localhost", true},
- {"-localhost", false},
- {"", false},
- {"\n \t", false},
- {" ", false},
- }
-
- for i, testCase := range testCases {
- result := isValidDomain(testCase.host)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isValidDomain test to be '%v', but found '%v' instead", i+1, testCase.result, result)
- }
- }
-}
-
// Tests validate end point validator.
func TestIsValidEndpointURL(t *testing.T) {
testCases := []struct {
@@ -125,161 +112,33 @@ func TestIsValidEndpointURL(t *testing.T) {
}
for i, testCase := range testCases {
- err := isValidEndpointURL(testCase.url)
+ var u url.URL
+ if testCase.url == "" {
+ u = sentinelURL
+ } else {
+ u1, err := url.Parse(testCase.url)
+ if err != nil {
+ t.Errorf("Test %d: Expected to pass, but failed with: <ERROR> %s", i+1, err)
+ }
+ u = *u1
+ }
+ err := isValidEndpointURL(u)
if err != nil && testCase.shouldPass {
- t.Errorf("Test %d: Expected to pass, but failed with: <ERROR> %s", i+1, err.Error())
+ t.Errorf("Test %d: Expected to pass, but failed with: <ERROR> %s", i+1, err)
}
if err == nil && !testCase.shouldPass {
- t.Errorf("Test %d: Expected to fail with <ERROR> \"%s\", but passed instead", i+1, testCase.err.Error())
+ t.Errorf("Test %d: Expected to fail with <ERROR> \"%s\", but passed instead", i+1, testCase.err)
}
// Failed as expected, but does it fail for the expected reason.
if err != nil && !testCase.shouldPass {
if err.Error() != testCase.err.Error() {
- t.Errorf("Test %d: Expected to fail with error \"%s\", but instead failed with error \"%s\" instead", i+1, testCase.err.Error(), err.Error())
+ t.Errorf("Test %d: Expected to fail with error \"%s\", but instead failed with error \"%s\" instead", i+1, testCase.err, err)
}
}
}
}
-// Tests validate IP address validator.
-func TestIsValidIP(t *testing.T) {
- testCases := []struct {
- // Input.
- ip string
- // Expected result.
- result bool
- }{
- {"192.168.1.1", true},
- {"192.168.1", false},
- {"192.168.1.1.1", false},
- {"-192.168.1.1", false},
- {"260.192.1.1", false},
- }
-
- for i, testCase := range testCases {
- result := isValidIP(testCase.ip)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isValidIP to be '%v' for input \"%s\", but found it to be '%v' instead", i+1, testCase.result, testCase.ip, result)
- }
- }
-
-}
-
-// Tests validate virtual host validator.
-func TestIsVirtualHostSupported(t *testing.T) {
- testCases := []struct {
- url string
- bucket string
- // Expeceted result.
- result bool
- }{
- {"https://s3.amazonaws.com", "my-bucket", true},
- {"https://s3.cn-north-1.amazonaws.com.cn", "my-bucket", true},
- {"https://s3.amazonaws.com", "my-bucket.", false},
- {"https://amazons3.amazonaws.com", "my-bucket.", false},
- {"https://storage.googleapis.com/", "my-bucket", true},
- {"https://mystorage.googleapis.com/", "my-bucket", false},
- }
-
- for i, testCase := range testCases {
- result := isVirtualHostSupported(testCase.url, testCase.bucket)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isVirtualHostSupported to be '%v' for input url \"%s\" and bucket \"%s\", but found it to be '%v' instead", i+1, testCase.result, testCase.url, testCase.bucket, result)
- }
- }
-}
-
-// Tests validate Amazon endpoint validator.
-func TestIsAmazonEndpoint(t *testing.T) {
- testCases := []struct {
- url string
- // Expected result.
- result bool
- }{
- {"https://192.168.1.1", false},
- {"192.168.1.1", false},
- {"http://storage.googleapis.com", false},
- {"https://storage.googleapis.com", false},
- {"storage.googleapis.com", false},
- {"s3.amazonaws.com", false},
- {"https://amazons3.amazonaws.com", false},
- {"-192.168.1.1", false},
- {"260.192.1.1", false},
- // valid inputs.
- {"https://s3.amazonaws.com", true},
- {"https://s3.cn-north-1.amazonaws.com.cn", true},
- }
-
- for i, testCase := range testCases {
- result := isAmazonEndpoint(testCase.url)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isAmazonEndpoint to be '%v' for input \"%s\", but found it to be '%v' instead", i+1, testCase.result, testCase.url, result)
- }
- }
-
-}
-
-// Tests validate Amazon S3 China endpoint validator.
-func TestIsAmazonChinaEndpoint(t *testing.T) {
- testCases := []struct {
- url string
- // Expected result.
- result bool
- }{
- {"https://192.168.1.1", false},
- {"192.168.1.1", false},
- {"http://storage.googleapis.com", false},
- {"https://storage.googleapis.com", false},
- {"storage.googleapis.com", false},
- {"s3.amazonaws.com", false},
- {"https://amazons3.amazonaws.com", false},
- {"-192.168.1.1", false},
- {"260.192.1.1", false},
- // s3.amazonaws.com is not a valid Amazon S3 China end point.
- {"https://s3.amazonaws.com", false},
- // valid input.
- {"https://s3.cn-north-1.amazonaws.com.cn", true},
- }
-
- for i, testCase := range testCases {
- result := isAmazonChinaEndpoint(testCase.url)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isAmazonEndpoint to be '%v' for input \"%s\", but found it to be '%v' instead", i+1, testCase.result, testCase.url, result)
- }
- }
-
-}
-
-// Tests validate Google Cloud end point validator.
-func TestIsGoogleEndpoint(t *testing.T) {
- testCases := []struct {
- url string
- // Expected result.
- result bool
- }{
- {"192.168.1.1", false},
- {"https://192.168.1.1", false},
- {"s3.amazonaws.com", false},
- {"http://s3.amazonaws.com", false},
- {"https://s3.amazonaws.com", false},
- {"https://s3.cn-north-1.amazonaws.com.cn", false},
- {"-192.168.1.1", false},
- {"260.192.1.1", false},
- // valid inputs.
- {"http://storage.googleapis.com", true},
- {"https://storage.googleapis.com", true},
- }
-
- for i, testCase := range testCases {
- result := isGoogleEndpoint(testCase.url)
- if testCase.result != result {
- t.Errorf("Test %d: Expected isGoogleEndpoint to be '%v' for input \"%s\", but found it to be '%v' instead", i+1, testCase.result, testCase.url, result)
- }
- }
-
-}
-
// Tests validate the expiry time validator.
func TestIsValidExpiry(t *testing.T) {
testCases := []struct {
@@ -355,82 +214,3 @@ func TestIsValidBucketName(t *testing.T) {
}
}
-
-func TestPercentEncodeSlash(t *testing.T) {
- testCases := []struct {
- input string
- output string
- }{
- {"test123", "test123"},
- {"abc,+_1", "abc,+_1"},
- {"%40prefix=test%40123", "%40prefix=test%40123"},
- {"key1=val1/val2", "key1=val1%2Fval2"},
- {"%40prefix=test%40123/", "%40prefix=test%40123%2F"},
- }
-
- for i, testCase := range testCases {
- receivedOutput := percentEncodeSlash(testCase.input)
- if testCase.output != receivedOutput {
- t.Errorf(
- "Test %d: Input: \"%s\" --> Expected percentEncodeSlash to return \"%s\", but it returned \"%s\" instead!",
- i+1, testCase.input, testCase.output,
- receivedOutput,
- )
-
- }
- }
-}
-
-// Tests validate the query encoder.
-func TestQueryEncode(t *testing.T) {
- testCases := []struct {
- queryKey string
- valueToEncode []string
- // Expected result.
- result string
- }{
- {"prefix", []string{"test@123", "test@456"}, "prefix=test%40123&prefix=test%40456"},
- {"@prefix", []string{"test@123"}, "%40prefix=test%40123"},
- {"@prefix", []string{"a/b/c/"}, "%40prefix=a%2Fb%2Fc%2F"},
- {"prefix", []string{"test#123"}, "prefix=test%23123"},
- {"prefix#", []string{"test#123"}, "prefix%23=test%23123"},
- {"prefix", []string{"test123"}, "prefix=test123"},
- {"prefix", []string{"test本語123", "test123"}, "prefix=test%E6%9C%AC%E8%AA%9E123&prefix=test123"},
- }
-
- for i, testCase := range testCases {
- urlValues := make(url.Values)
- for _, valueToEncode := range testCase.valueToEncode {
- urlValues.Add(testCase.queryKey, valueToEncode)
- }
- result := queryEncode(urlValues)
- if testCase.result != result {
- t.Errorf("Test %d: Expected queryEncode result to be \"%s\", but found it to be \"%s\" instead", i+1, testCase.result, result)
- }
- }
-}
-
-// Tests validate the URL path encoder.
-func TestUrlEncodePath(t *testing.T) {
- testCases := []struct {
- // Input.
- inputStr string
- // Expected result.
- result string
- }{
- {"thisisthe%url", "thisisthe%25url"},
- {"本語", "%E6%9C%AC%E8%AA%9E"},
- {"本語.1", "%E6%9C%AC%E8%AA%9E.1"},
- {">123", "%3E123"},
- {"myurl#link", "myurl%23link"},
- {"space in url", "space%20in%20url"},
- {"url+path", "url%2Bpath"},
- }
-
- for i, testCase := range testCases {
- result := urlEncodePath(testCase.inputStr)
- if testCase.result != result {
- t.Errorf("Test %d: Expected queryEncode result to be \"%s\", but found it to be \"%s\" instead", i+1, testCase.result, result)
- }
- }
-}