github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/sse_test.go (about) 1 package s3_test 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/aavshr/aws-sdk-go/aws" 8 "github.com/aavshr/aws-sdk-go/aws/awserr" 9 "github.com/aavshr/aws-sdk-go/awstesting/unit" 10 "github.com/aavshr/aws-sdk-go/service/s3" 11 ) 12 13 func TestSSECustomerKeyOverHTTPError(t *testing.T) { 14 s := s3.New(unit.Session, &aws.Config{DisableSSL: aws.Bool(true)}) 15 req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ 16 Bucket: aws.String("bucket"), 17 CopySource: aws.String("bucket/source"), 18 Key: aws.String("dest"), 19 SSECustomerKey: aws.String("key"), 20 }) 21 err := req.Build() 22 23 if err == nil { 24 t.Error("expected an error") 25 } 26 if e, a := "ConfigError", err.(awserr.Error).Code(); e != a { 27 t.Errorf("expected %s, but received %s", e, a) 28 } 29 if !strings.Contains(err.(awserr.Error).Message(), "cannot send SSE keys over HTTP") { 30 t.Errorf("expected error to contain 'cannot send SSE keys over HTTP', but received %s", err.(awserr.Error).Message()) 31 } 32 } 33 34 func TestCopySourceSSECustomerKeyOverHTTPError(t *testing.T) { 35 s := s3.New(unit.Session, &aws.Config{DisableSSL: aws.Bool(true)}) 36 req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ 37 Bucket: aws.String("bucket"), 38 CopySource: aws.String("bucket/source"), 39 Key: aws.String("dest"), 40 CopySourceSSECustomerKey: aws.String("key"), 41 }) 42 err := req.Build() 43 44 if err == nil { 45 t.Error("expected an error") 46 } 47 if e, a := "ConfigError", err.(awserr.Error).Code(); e != a { 48 t.Errorf("expected %s, but received %s", e, a) 49 } 50 if !strings.Contains(err.(awserr.Error).Message(), "cannot send SSE keys over HTTP") { 51 t.Errorf("expected error to contain 'cannot send SSE keys over HTTP', but received %s", err.(awserr.Error).Message()) 52 } 53 } 54 55 func TestComputeSSEKeys(t *testing.T) { 56 s := s3.New(unit.Session) 57 req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ 58 Bucket: aws.String("bucket"), 59 CopySource: aws.String("bucket/source"), 60 Key: aws.String("dest"), 61 SSECustomerKey: aws.String("key"), 62 CopySourceSSECustomerKey: aws.String("key"), 63 }) 64 err := req.Build() 65 66 if err != nil { 67 t.Errorf("expected no error, but received %v", err) 68 } 69 if e, a := "a2V5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key"); e != a { 70 t.Errorf("expected %s, but received %s", e, a) 71 } 72 if e, a := "a2V5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key"); e != a { 73 t.Errorf("expected %s, but received %s", e, a) 74 } 75 if e, a := "PG4LipwVIkqCKLmpjKFTHQ==", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key-md5"); e != a { 76 t.Errorf("expected %s, but received %s", e, a) 77 } 78 if e, a := "PG4LipwVIkqCKLmpjKFTHQ==", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key-md5"); e != a { 79 t.Errorf("expected %s, but received %s", e, a) 80 } 81 } 82 83 func TestComputeSSEKeysShortcircuit(t *testing.T) { 84 s := s3.New(unit.Session) 85 req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ 86 Bucket: aws.String("bucket"), 87 CopySource: aws.String("bucket/source"), 88 Key: aws.String("dest"), 89 SSECustomerKey: aws.String("key"), 90 CopySourceSSECustomerKey: aws.String("key"), 91 SSECustomerKeyMD5: aws.String("MD5"), 92 CopySourceSSECustomerKeyMD5: aws.String("MD5"), 93 }) 94 err := req.Build() 95 96 if err != nil { 97 t.Errorf("expected no error, but received %v", err) 98 } 99 if e, a := "a2V5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key"); e != a { 100 t.Errorf("expected %s, but received %s", e, a) 101 } 102 if e, a := "a2V5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key"); e != a { 103 t.Errorf("expected %s, but received %s", e, a) 104 } 105 if e, a := "MD5", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key-md5"); e != a { 106 t.Errorf("expected %s, but received %s", e, a) 107 } 108 if e, a := "MD5", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key-md5"); e != a { 109 t.Errorf("expected %s, but received %s", e, a) 110 } 111 } 112 113 func TestSSECustomerKeysWithSpaces(t *testing.T) { 114 s := s3.New(unit.Session) 115 req, _ := s.CopyObjectRequest(&s3.CopyObjectInput{ 116 Bucket: aws.String("bucket"), 117 CopySource: aws.String("bucket/source"), 118 Key: aws.String("dest"), 119 SSECustomerKey: aws.String(" key "), 120 CopySourceSSECustomerKey: aws.String(" copykey "), 121 }) 122 err := req.Build() 123 if err != nil { 124 t.Errorf("expected no error, but received %v", err) 125 } 126 if e, a := "ICAga2V5ICAg", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key"); e != a { 127 t.Errorf("expected %s, but received %s", e, a) 128 } 129 if e, a := "ICAgY29weWtleSAgIA==", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key"); e != a { 130 t.Errorf("expected %s, but received %s", e, a) 131 } 132 if e, a := "13XiUSCa6ReZ3CHtCLiJLg==", req.HTTPRequest.Header.Get("x-amz-server-side-encryption-customer-key-md5"); e != a { 133 t.Errorf("expected %s, but received %s", e, a) 134 } 135 if e, a := "MHVtfmuml539o1871Vsc6w==", req.HTTPRequest.Header.Get("x-amz-copy-source-server-side-encryption-customer-key-md5"); e != a { 136 t.Errorf("expected %s, but received %s", e, a) 137 } 138 }