(t *testing.T)
| 78 | } |
| 79 | |
| 80 | func Test_SSEHeaders(t *testing.T) { |
| 81 | rt := &InterceptRouteTripper{} |
| 82 | c, err := New("s3.amazonaws.com", &Options{ |
| 83 | Transport: rt, |
| 84 | }) |
| 85 | if err != nil { |
| 86 | t.Error(err) |
| 87 | } |
| 88 | |
| 89 | testCases := map[string]struct { |
| 90 | sse func() encrypt.ServerSide |
| 91 | initiateMultipartUploadHeaders http.Header |
| 92 | headerNotAllowedAfterInit []string |
| 93 | }{ |
| 94 | "noEncryption": { |
| 95 | sse: func() encrypt.ServerSide { return nil }, |
| 96 | initiateMultipartUploadHeaders: http.Header{}, |
| 97 | }, |
| 98 | "sse": { |
| 99 | sse: func() encrypt.ServerSide { |
| 100 | s, err := encrypt.NewSSEKMS("keyId", nil) |
| 101 | if err != nil { |
| 102 | t.Error(err) |
| 103 | } |
| 104 | return s |
| 105 | }, |
| 106 | initiateMultipartUploadHeaders: http.Header{ |
| 107 | encrypt.SseGenericHeader: []string{"aws:kms"}, |
| 108 | encrypt.SseKmsKeyID: []string{"keyId"}, |
| 109 | }, |
| 110 | headerNotAllowedAfterInit: []string{encrypt.SseGenericHeader, encrypt.SseKmsKeyID, encrypt.SseEncryptionContext}, |
| 111 | }, |
| 112 | "sse with context": { |
| 113 | sse: func() encrypt.ServerSide { |
| 114 | s, err := encrypt.NewSSEKMS("keyId", "context") |
| 115 | if err != nil { |
| 116 | t.Error(err) |
| 117 | } |
| 118 | return s |
| 119 | }, |
| 120 | initiateMultipartUploadHeaders: http.Header{ |
| 121 | encrypt.SseGenericHeader: []string{"aws:kms"}, |
| 122 | encrypt.SseKmsKeyID: []string{"keyId"}, |
| 123 | encrypt.SseEncryptionContext: []string{base64.StdEncoding.EncodeToString([]byte("\"context\""))}, |
| 124 | }, |
| 125 | headerNotAllowedAfterInit: []string{encrypt.SseGenericHeader, encrypt.SseKmsKeyID, encrypt.SseEncryptionContext}, |
| 126 | }, |
| 127 | } |
| 128 | |
| 129 | for name, tc := range testCases { |
| 130 | t.Run(name, func(t *testing.T) { |
| 131 | opts := PutObjectOptions{ |
| 132 | ServerSideEncryption: tc.sse(), |
| 133 | } |
| 134 | c.bucketLocCache.Set("test", "region") |
| 135 | c.initiateMultipartUpload(context.Background(), "test", "test", opts) |
| 136 | for s, vls := range tc.initiateMultipartUploadHeaders { |
| 137 | if !reflect.DeepEqual(rt.request.Header[s], vls) { |
nothing calls this directly
no test coverage detected