summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/minio/minio-go/core_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/minio/minio-go/core_test.go')
-rw-r--r--vendor/github.com/minio/minio-go/core_test.go771
1 files changed, 0 insertions, 771 deletions
diff --git a/vendor/github.com/minio/minio-go/core_test.go b/vendor/github.com/minio/minio-go/core_test.go
deleted file mode 100644
index 8cf810465..000000000
--- a/vendor/github.com/minio/minio-go/core_test.go
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- * Minio Go Library for Amazon S3 Compatible Cloud Storage
- * Copyright 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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
- * limitations under the License.
- */
-
-package minio
-
-import (
- "bytes"
- "io"
- "log"
- "os"
- "reflect"
- "testing"
- "time"
-
- "math/rand"
-)
-
-const (
- serverEndpoint = "SERVER_ENDPOINT"
- accessKey = "ACCESS_KEY"
- secretKey = "SECRET_KEY"
- enableSecurity = "ENABLE_HTTPS"
-)
-
-// Minimum part size
-const MinPartSize = 1024 * 1024 * 64
-const letterBytes = "abcdefghijklmnopqrstuvwxyz01234569"
-const (
- letterIdxBits = 6 // 6 bits to represent a letter index
- letterIdxMask = 1<<letterIdxBits - 1 // All 1-bits, as many as letterIdxBits
- letterIdxMax = 63 / letterIdxBits // # of letter indices fitting in 63 bits
-)
-
-// randString generates random names and prepends them with a known prefix.
-func randString(n int, src rand.Source, prefix string) string {
- b := make([]byte, n)
- // A rand.Int63() generates 63 random bits, enough for letterIdxMax letters!
- for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {
- if remain == 0 {
- cache, remain = src.Int63(), letterIdxMax
- }
- if idx := int(cache & letterIdxMask); idx < len(letterBytes) {
- b[i] = letterBytes[idx]
- i--
- }
- cache >>= letterIdxBits
- remain--
- }
- return prefix + string(b[0:30-len(prefix)])
-}
-
-// Tests for Core GetObject() function.
-func TestGetObjectCore(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for the short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio core client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable tracing, write to stderr.
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- // Generate data more than 32K
- buf := bytes.Repeat([]byte("3"), rand.Intn(1<<20)+32*1024)
-
- // Save the data
- objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
- n, err := c.Client.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), PutObjectOptions{
- ContentType: "binary/octet-stream",
- })
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if n != int64(len(buf)) {
- t.Fatalf("Error: number of bytes does not match, want %v, got %v\n", len(buf), n)
- }
-
- offset := int64(2048)
-
- // read directly
- buf1 := make([]byte, 512)
- buf2 := make([]byte, 512)
- buf3 := make([]byte, n)
- buf4 := make([]byte, 1)
-
- opts := GetObjectOptions{}
- opts.SetRange(offset, offset+int64(len(buf1))-1)
- reader, objectInfo, err := c.GetObject(bucketName, objectName, opts)
- if err != nil {
- t.Fatal(err)
- }
- m, err := io.ReadFull(reader, buf1)
- reader.Close()
- if err != nil {
- t.Fatal(err)
- }
-
- if objectInfo.Size != int64(m) {
- t.Fatalf("Error: GetObject read shorter bytes before reaching EOF, want %v, got %v\n", objectInfo.Size, m)
- }
- if !bytes.Equal(buf1, buf[offset:offset+512]) {
- t.Fatal("Error: Incorrect read between two GetObject from same offset.")
- }
- offset += 512
-
- opts.SetRange(offset, offset+int64(len(buf2))-1)
- reader, objectInfo, err = c.GetObject(bucketName, objectName, opts)
- if err != nil {
- t.Fatal(err)
- }
-
- m, err = io.ReadFull(reader, buf2)
- reader.Close()
- if err != nil {
- t.Fatal(err)
- }
-
- if objectInfo.Size != int64(m) {
- t.Fatalf("Error: GetObject read shorter bytes before reaching EOF, want %v, got %v\n", objectInfo.Size, m)
- }
- if !bytes.Equal(buf2, buf[offset:offset+512]) {
- t.Fatal("Error: Incorrect read between two GetObject from same offset.")
- }
-
- opts.SetRange(0, int64(len(buf3)))
- reader, objectInfo, err = c.GetObject(bucketName, objectName, opts)
- if err != nil {
- t.Fatal(err)
- }
-
- m, err = io.ReadFull(reader, buf3)
- if err != nil {
- reader.Close()
- t.Fatal(err)
- }
- reader.Close()
-
- if objectInfo.Size != int64(m) {
- t.Fatalf("Error: GetObject read shorter bytes before reaching EOF, want %v, got %v\n", objectInfo.Size, m)
- }
- if !bytes.Equal(buf3, buf) {
- t.Fatal("Error: Incorrect data read in GetObject, than what was previously upoaded.")
- }
-
- opts = GetObjectOptions{}
- opts.SetMatchETag("etag")
- _, _, err = c.GetObject(bucketName, objectName, opts)
- if err == nil {
- t.Fatal("Unexpected GetObject should fail with mismatching etags")
- }
- if errResp := ToErrorResponse(err); errResp.Code != "PreconditionFailed" {
- t.Fatalf("Expected \"PreconditionFailed\" as code, got %s instead", errResp.Code)
- }
-
- opts = GetObjectOptions{}
- opts.SetMatchETagExcept("etag")
- reader, objectInfo, err = c.GetObject(bucketName, objectName, opts)
- if err != nil {
- t.Fatal(err)
- }
-
- m, err = io.ReadFull(reader, buf3)
- reader.Close()
- if err != nil {
- t.Fatal(err)
- }
-
- if objectInfo.Size != int64(m) {
- t.Fatalf("Error: GetObject read shorter bytes before reaching EOF, want %v, got %v\n", objectInfo.Size, m)
- }
- if !bytes.Equal(buf3, buf) {
- t.Fatal("Error: Incorrect data read in GetObject, than what was previously upoaded.")
- }
-
- opts = GetObjectOptions{}
- opts.SetRange(0, 0)
- reader, objectInfo, err = c.GetObject(bucketName, objectName, opts)
- if err != nil {
- t.Fatal(err)
- }
-
- m, err = io.ReadFull(reader, buf4)
- reader.Close()
- if err != nil {
- t.Fatal(err)
- }
-
- if objectInfo.Size != int64(m) {
- t.Fatalf("Error: GetObject read shorter bytes before reaching EOF, want %v, got %v\n", objectInfo.Size, m)
- }
-
- err = c.RemoveObject(bucketName, objectName)
- if err != nil {
- t.Fatal("Error: ", err)
- }
- err = c.RemoveBucket(bucketName)
- if err != nil {
- t.Fatal("Error:", err)
- }
-}
-
-// Tests GetObject to return Content-Encoding properly set
-// and overrides any auto decoding.
-func TestGetObjectContentEncoding(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for the short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio core client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable tracing, write to stderr.
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- // Generate data more than 32K
- buf := bytes.Repeat([]byte("3"), rand.Intn(1<<20)+32*1024)
-
- // Save the data
- objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
- n, err := c.Client.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), PutObjectOptions{
- ContentEncoding: "gzip",
- })
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if n != int64(len(buf)) {
- t.Fatalf("Error: number of bytes does not match, want %v, got %v\n", len(buf), n)
- }
-
- rwc, objInfo, err := c.GetObject(bucketName, objectName, GetObjectOptions{})
- if err != nil {
- t.Fatalf("Error: %v", err)
- }
- rwc.Close()
- if objInfo.Size <= 0 {
- t.Fatalf("Unexpected size of the object %v, expected %v", objInfo.Size, n)
- }
- value, ok := objInfo.Metadata["Content-Encoding"]
- if !ok {
- t.Fatalf("Expected Content-Encoding metadata to be set.")
- }
- if value[0] != "gzip" {
- t.Fatalf("Unexpected content-encoding found, want gzip, got %v", value)
- }
-}
-
-// Tests get bucket policy core API.
-func TestGetBucketPolicy(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable to debug
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- // Verify if bucket exits and you have access.
- var exists bool
- exists, err = c.BucketExists(bucketName)
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
- if !exists {
- t.Fatal("Error: could not find ", bucketName)
- }
-
- // Asserting the default bucket policy.
- bucketPolicy, err := c.GetBucketPolicy(bucketName)
- if err != nil {
- errResp := ToErrorResponse(err)
- if errResp.Code != "NoSuchBucketPolicy" {
- t.Error("Error:", err, bucketName)
- }
- }
- if !reflect.DeepEqual(bucketPolicy, emptyBucketAccessPolicy) {
- t.Errorf("Bucket policy expected %#v, got %#v", emptyBucketAccessPolicy, bucketPolicy)
- }
-
- err = c.RemoveBucket(bucketName)
- if err != nil {
- t.Fatal("Error:", err)
- }
-}
-
-// Tests Core CopyObject API implementation.
-func TestCoreCopyObject(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable tracing, write to stderr.
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- buf := bytes.Repeat([]byte("a"), 32*1024)
-
- // Save the data
- objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
- objInfo, err := c.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), "", "", map[string]string{
- "Content-Type": "binary/octet-stream",
- })
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if objInfo.Size != int64(len(buf)) {
- t.Fatalf("Error: number of bytes does not match, want %v, got %v\n", len(buf), objInfo.Size)
- }
-
- destBucketName := bucketName
- destObjectName := objectName + "-dest"
-
- cobjInfo, err := c.CopyObject(bucketName, objectName, destBucketName, destObjectName, map[string]string{
- "X-Amz-Metadata-Directive": "REPLACE",
- "Content-Type": "application/javascript",
- })
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName, destBucketName, destObjectName)
- }
- if cobjInfo.ETag != objInfo.ETag {
- t.Fatalf("Error: expected etag to be same as source object %s, but found different etag :%s", objInfo.ETag, cobjInfo.ETag)
- }
-
- // Attempt to read from destBucketName and object name.
- r, err := c.Client.GetObject(destBucketName, destObjectName, GetObjectOptions{})
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- st, err := r.Stat()
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if st.Size != int64(len(buf)) {
- t.Fatalf("Error: number of bytes in stat does not match, want %v, got %v\n",
- len(buf), st.Size)
- }
-
- if st.ContentType != "application/javascript" {
- t.Fatalf("Error: Content types don't match, expected: application/javascript, found: %+v\n", st.ContentType)
- }
-
- if st.ETag != objInfo.ETag {
- t.Fatalf("Error: expected etag to be same as source object %s, but found different etag :%s", objInfo.ETag, st.ETag)
- }
-
- if err := r.Close(); err != nil {
- t.Fatal("Error:", err)
- }
-
- if err := r.Close(); err == nil {
- t.Fatal("Error: object is already closed, should return error")
- }
-
- err = c.RemoveObject(bucketName, objectName)
- if err != nil {
- t.Fatal("Error: ", err)
- }
-
- err = c.RemoveObject(destBucketName, destObjectName)
- if err != nil {
- t.Fatal("Error: ", err)
- }
-
- err = c.RemoveBucket(bucketName)
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Do not need to remove destBucketName its same as bucketName.
-}
-
-// Test Core CopyObjectPart implementation
-func TestCoreCopyObjectPart(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable tracing, write to stderr.
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- // Make a buffer with 5MB of data
- buf := bytes.Repeat([]byte("abcde"), 1024*1024)
-
- // Save the data
- objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
- objInfo, err := c.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), "", "", map[string]string{
- "Content-Type": "binary/octet-stream",
- })
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if objInfo.Size != int64(len(buf)) {
- t.Fatalf("Error: number of bytes does not match, want %v, got %v\n", len(buf), objInfo.Size)
- }
-
- destBucketName := bucketName
- destObjectName := objectName + "-dest"
-
- uploadID, err := c.NewMultipartUpload(destBucketName, destObjectName, PutObjectOptions{})
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- // Content of the destination object will be two copies of
- // `objectName` concatenated, followed by first byte of
- // `objectName`.
-
- // First of three parts
- fstPart, err := c.CopyObjectPart(bucketName, objectName, destBucketName, destObjectName, uploadID, 1, 0, -1, nil)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
-
- // Second of three parts
- sndPart, err := c.CopyObjectPart(bucketName, objectName, destBucketName, destObjectName, uploadID, 2, 0, -1, nil)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
-
- // Last of three parts
- lstPart, err := c.CopyObjectPart(bucketName, objectName, destBucketName, destObjectName, uploadID, 3, 0, 1, nil)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
-
- // Complete the multipart upload
- err = c.CompleteMultipartUpload(destBucketName, destObjectName, uploadID, []CompletePart{fstPart, sndPart, lstPart})
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
-
- // Stat the object and check its length matches
- objInfo, err = c.StatObject(destBucketName, destObjectName, StatObjectOptions{})
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
-
- if objInfo.Size != (5*1024*1024)*2+1 {
- t.Fatal("Destination object has incorrect size!")
- }
-
- // Now we read the data back
- getOpts := GetObjectOptions{}
- getOpts.SetRange(0, 5*1024*1024-1)
- r, _, err := c.GetObject(destBucketName, destObjectName, getOpts)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
- getBuf := make([]byte, 5*1024*1024)
- _, err = io.ReadFull(r, getBuf)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
- if !bytes.Equal(getBuf, buf) {
- t.Fatal("Got unexpected data in first 5MB")
- }
-
- getOpts.SetRange(5*1024*1024, 0)
- r, _, err = c.GetObject(destBucketName, destObjectName, getOpts)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
- getBuf = make([]byte, 5*1024*1024+1)
- _, err = io.ReadFull(r, getBuf)
- if err != nil {
- t.Fatal("Error:", err, destBucketName, destObjectName)
- }
- if !bytes.Equal(getBuf[:5*1024*1024], buf) {
- t.Fatal("Got unexpected data in second 5MB")
- }
- if getBuf[5*1024*1024] != buf[0] {
- t.Fatal("Got unexpected data in last byte of copied object!")
- }
-
- if err := c.RemoveObject(destBucketName, destObjectName); err != nil {
- t.Fatal("Error: ", err)
- }
-
- if err := c.RemoveObject(bucketName, objectName); err != nil {
- t.Fatal("Error: ", err)
- }
-
- if err := c.RemoveBucket(bucketName); err != nil {
- t.Fatal("Error: ", err)
- }
-
- // Do not need to remove destBucketName its same as bucketName.
-}
-
-// Test Core PutObject.
-func TestCorePutObject(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for short runs")
- }
-
- // Seed random based on current time.
- rand.Seed(time.Now().Unix())
-
- // Instantiate new minio client object.
- c, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)),
- )
- if err != nil {
- t.Fatal("Error:", err)
- }
-
- // Enable tracing, write to stderr.
- // c.TraceOn(os.Stderr)
-
- // Set user agent.
- c.SetAppInfo("Minio-go-FunctionalTest", "0.1.0")
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = c.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- buf := bytes.Repeat([]byte("a"), 32*1024)
-
- // Save the data
- objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "")
- // Object content type
- objectContentType := "binary/octet-stream"
- metadata := make(map[string]string)
- metadata["Content-Type"] = objectContentType
-
- objInfo, err := c.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), "1B2M2Y8AsgTpgAmY7PhCfg==", "", metadata)
- if err == nil {
- t.Fatal("Error expected: error, got: nil(success)")
- }
-
- objInfo, err = c.PutObject(bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), "", "", metadata)
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if objInfo.Size != int64(len(buf)) {
- t.Fatalf("Error: number of bytes does not match, want %v, got %v\n", len(buf), objInfo.Size)
- }
-
- // Read the data back
- r, err := c.Client.GetObject(bucketName, objectName, GetObjectOptions{})
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- st, err := r.Stat()
- if err != nil {
- t.Fatal("Error:", err, bucketName, objectName)
- }
-
- if st.Size != int64(len(buf)) {
- t.Fatalf("Error: number of bytes in stat does not match, want %v, got %v\n",
- len(buf), st.Size)
- }
-
- if st.ContentType != objectContentType {
- t.Fatalf("Error: Content types don't match, expected: %+v, found: %+v\n", objectContentType, st.ContentType)
- }
-
- if err := r.Close(); err != nil {
- t.Fatal("Error:", err)
- }
-
- if err := r.Close(); err == nil {
- t.Fatal("Error: object is already closed, should return error")
- }
-
- err = c.RemoveObject(bucketName, objectName)
- if err != nil {
- t.Fatal("Error: ", err)
- }
-
- err = c.RemoveBucket(bucketName)
- if err != nil {
- t.Fatal("Error:", err)
- }
-}
-
-func TestCoreGetObjectMetadata(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping functional tests for the short runs")
- }
-
- core, err := NewCore(
- os.Getenv(serverEndpoint),
- os.Getenv(accessKey),
- os.Getenv(secretKey),
- mustParseBool(os.Getenv(enableSecurity)))
- if err != nil {
- log.Fatalln(err)
- }
-
- // Generate a new random bucket name.
- bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test")
-
- // Make a new bucket.
- err = core.MakeBucket(bucketName, "us-east-1")
- if err != nil {
- t.Fatal("Error:", err, bucketName)
- }
-
- metadata := map[string]string{
- "X-Amz-Meta-Key-1": "Val-1",
- }
-
- _, err = core.PutObject(bucketName, "my-objectname",
- bytes.NewReader([]byte("hello")), 5, "", "", metadata)
- if err != nil {
- log.Fatalln(err)
- }
-
- reader, objInfo, err := core.GetObject(bucketName, "my-objectname", GetObjectOptions{})
- if err != nil {
- log.Fatalln(err)
- }
- defer reader.Close()
-
- if objInfo.Metadata.Get("X-Amz-Meta-Key-1") != "Val-1" {
- log.Fatalln("Expected metadata to be available but wasn't")
- }
-}