customizations_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package s3_test
  2. import (
  3. "crypto/md5"
  4. "encoding/base64"
  5. "io/ioutil"
  6. "testing"
  7. "github.com/aws/aws-sdk-go/aws"
  8. "github.com/aws/aws-sdk-go/aws/request"
  9. "github.com/aws/aws-sdk-go/internal/test/unit"
  10. "github.com/aws/aws-sdk-go/service/s3"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. var _ = unit.Imported
  14. func assertMD5(t *testing.T, req *request.Request) {
  15. err := req.Build()
  16. assert.NoError(t, err)
  17. b, _ := ioutil.ReadAll(req.HTTPRequest.Body)
  18. out := md5.Sum(b)
  19. assert.NotEmpty(t, b)
  20. assert.Equal(t, base64.StdEncoding.EncodeToString(out[:]), req.HTTPRequest.Header.Get("Content-MD5"))
  21. }
  22. func TestMD5InPutBucketCors(t *testing.T) {
  23. svc := s3.New(nil)
  24. req, _ := svc.PutBucketCorsRequest(&s3.PutBucketCorsInput{
  25. Bucket: aws.String("bucketname"),
  26. CORSConfiguration: &s3.CORSConfiguration{
  27. CORSRules: []*s3.CORSRule{
  28. {AllowedMethods: []*string{aws.String("GET")}},
  29. },
  30. },
  31. })
  32. assertMD5(t, req)
  33. }
  34. func TestMD5InPutBucketLifecycle(t *testing.T) {
  35. svc := s3.New(nil)
  36. req, _ := svc.PutBucketLifecycleRequest(&s3.PutBucketLifecycleInput{
  37. Bucket: aws.String("bucketname"),
  38. LifecycleConfiguration: &s3.LifecycleConfiguration{
  39. Rules: []*s3.LifecycleRule{
  40. {
  41. ID: aws.String("ID"),
  42. Prefix: aws.String("Prefix"),
  43. Status: aws.String("Enabled"),
  44. },
  45. },
  46. },
  47. })
  48. assertMD5(t, req)
  49. }
  50. func TestMD5InPutBucketPolicy(t *testing.T) {
  51. svc := s3.New(nil)
  52. req, _ := svc.PutBucketPolicyRequest(&s3.PutBucketPolicyInput{
  53. Bucket: aws.String("bucketname"),
  54. Policy: aws.String("{}"),
  55. })
  56. assertMD5(t, req)
  57. }
  58. func TestMD5InPutBucketTagging(t *testing.T) {
  59. svc := s3.New(nil)
  60. req, _ := svc.PutBucketTaggingRequest(&s3.PutBucketTaggingInput{
  61. Bucket: aws.String("bucketname"),
  62. Tagging: &s3.Tagging{
  63. TagSet: []*s3.Tag{
  64. {Key: aws.String("KEY"), Value: aws.String("VALUE")},
  65. },
  66. },
  67. })
  68. assertMD5(t, req)
  69. }
  70. func TestMD5InDeleteObjects(t *testing.T) {
  71. svc := s3.New(nil)
  72. req, _ := svc.DeleteObjectsRequest(&s3.DeleteObjectsInput{
  73. Bucket: aws.String("bucketname"),
  74. Delete: &s3.Delete{
  75. Objects: []*s3.ObjectIdentifier{
  76. {Key: aws.String("key")},
  77. },
  78. },
  79. })
  80. assertMD5(t, req)
  81. }