customizations_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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/awstesting/unit"
  10. "github.com/aws/aws-sdk-go/service/s3"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func assertMD5(t *testing.T, req *request.Request) {
  14. err := req.Build()
  15. assert.NoError(t, err)
  16. b, _ := ioutil.ReadAll(req.HTTPRequest.Body)
  17. out := md5.Sum(b)
  18. assert.NotEmpty(t, b)
  19. assert.Equal(t, base64.StdEncoding.EncodeToString(out[:]), req.HTTPRequest.Header.Get("Content-MD5"))
  20. }
  21. func TestMD5InPutBucketCors(t *testing.T) {
  22. svc := s3.New(unit.Session)
  23. req, _ := svc.PutBucketCorsRequest(&s3.PutBucketCorsInput{
  24. Bucket: aws.String("bucketname"),
  25. CORSConfiguration: &s3.CORSConfiguration{
  26. CORSRules: []*s3.CORSRule{
  27. {
  28. AllowedMethods: []*string{aws.String("GET")},
  29. AllowedOrigins: []*string{aws.String("*")},
  30. },
  31. },
  32. },
  33. })
  34. assertMD5(t, req)
  35. }
  36. func TestMD5InPutBucketLifecycle(t *testing.T) {
  37. svc := s3.New(unit.Session)
  38. req, _ := svc.PutBucketLifecycleRequest(&s3.PutBucketLifecycleInput{
  39. Bucket: aws.String("bucketname"),
  40. LifecycleConfiguration: &s3.LifecycleConfiguration{
  41. Rules: []*s3.Rule{
  42. {
  43. ID: aws.String("ID"),
  44. Prefix: aws.String("Prefix"),
  45. Status: aws.String("Enabled"),
  46. },
  47. },
  48. },
  49. })
  50. assertMD5(t, req)
  51. }
  52. func TestMD5InPutBucketPolicy(t *testing.T) {
  53. svc := s3.New(unit.Session)
  54. req, _ := svc.PutBucketPolicyRequest(&s3.PutBucketPolicyInput{
  55. Bucket: aws.String("bucketname"),
  56. Policy: aws.String("{}"),
  57. })
  58. assertMD5(t, req)
  59. }
  60. func TestMD5InPutBucketTagging(t *testing.T) {
  61. svc := s3.New(unit.Session)
  62. req, _ := svc.PutBucketTaggingRequest(&s3.PutBucketTaggingInput{
  63. Bucket: aws.String("bucketname"),
  64. Tagging: &s3.Tagging{
  65. TagSet: []*s3.Tag{
  66. {Key: aws.String("KEY"), Value: aws.String("VALUE")},
  67. },
  68. },
  69. })
  70. assertMD5(t, req)
  71. }
  72. func TestMD5InDeleteObjects(t *testing.T) {
  73. svc := s3.New(unit.Session)
  74. req, _ := svc.DeleteObjectsRequest(&s3.DeleteObjectsInput{
  75. Bucket: aws.String("bucketname"),
  76. Delete: &s3.Delete{
  77. Objects: []*s3.ObjectIdentifier{
  78. {Key: aws.String("key")},
  79. },
  80. },
  81. })
  82. assertMD5(t, req)
  83. }
  84. func TestMD5InPutBucketLifecycleConfiguration(t *testing.T) {
  85. svc := s3.New(unit.Session)
  86. req, _ := svc.PutBucketLifecycleConfigurationRequest(&s3.PutBucketLifecycleConfigurationInput{
  87. Bucket: aws.String("bucketname"),
  88. LifecycleConfiguration: &s3.BucketLifecycleConfiguration{
  89. Rules: []*s3.LifecycleRule{
  90. {Prefix: aws.String("prefix"), Status: aws.String(s3.ExpirationStatusEnabled)},
  91. },
  92. },
  93. })
  94. assertMD5(t, req)
  95. }