49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
|
package s3crypto_test
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/aws/aws-sdk-go/aws"
|
||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||
|
"github.com/aws/aws-sdk-go/service/s3"
|
||
|
"github.com/aws/aws-sdk-go/service/s3/s3crypto"
|
||
|
)
|
||
|
|
||
|
func TestHeaderV2SaveStrategy(t *testing.T) {
|
||
|
env := s3crypto.Envelope{
|
||
|
CipherKey: "Foo",
|
||
|
IV: "Bar",
|
||
|
MatDesc: "{}",
|
||
|
WrapAlg: s3crypto.KMSWrap,
|
||
|
CEKAlg: s3crypto.AESGCMNoPadding,
|
||
|
TagLen: "128",
|
||
|
UnencryptedMD5: "hello",
|
||
|
UnencryptedContentLen: "0",
|
||
|
}
|
||
|
params := &s3.PutObjectInput{}
|
||
|
req := &request.Request{
|
||
|
Params: params,
|
||
|
}
|
||
|
strat := s3crypto.HeaderV2SaveStrategy{}
|
||
|
err := strat.Save(env, req)
|
||
|
if err != nil {
|
||
|
t.Errorf("expected no error, but received %v", err)
|
||
|
}
|
||
|
|
||
|
expected := map[string]*string{
|
||
|
"X-Amz-Key-V2": aws.String("Foo"),
|
||
|
"X-Amz-Iv": aws.String("Bar"),
|
||
|
"X-Amz-Matdesc": aws.String("{}"),
|
||
|
"X-Amz-Wrap-Alg": aws.String(s3crypto.KMSWrap),
|
||
|
"X-Amz-Cek-Alg": aws.String(s3crypto.AESGCMNoPadding),
|
||
|
"X-Amz-Tag-Len": aws.String("128"),
|
||
|
"X-Amz-Unencrypted-Content-Md5": aws.String("hello"),
|
||
|
"X-Amz-Unencrypted-Content-Length": aws.String("0"),
|
||
|
}
|
||
|
|
||
|
if !reflect.DeepEqual(expected, params.Metadata) {
|
||
|
t.Errorf("expected %v, but received %v", expected, params.Metadata)
|
||
|
}
|
||
|
}
|