bucket_location_test.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package s3_test
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "net/http"
  6. "testing"
  7. "github.com/aws/aws-sdk-go/aws"
  8. "github.com/aws/aws-sdk-go/aws/awsutil"
  9. "github.com/aws/aws-sdk-go/aws/request"
  10. "github.com/aws/aws-sdk-go/internal/test/unit"
  11. "github.com/aws/aws-sdk-go/service/s3"
  12. "github.com/stretchr/testify/assert"
  13. )
  14. var _ = unit.Imported
  15. var s3LocationTests = []struct {
  16. body string
  17. loc string
  18. }{
  19. {`<?xml version="1.0" encoding="UTF-8"?><LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/"/>`, ``},
  20. {`<?xml version="1.0" encoding="UTF-8"?><LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">EU</LocationConstraint>`, `EU`},
  21. }
  22. func TestGetBucketLocation(t *testing.T) {
  23. for _, test := range s3LocationTests {
  24. s := s3.New(nil)
  25. s.Handlers.Send.Clear()
  26. s.Handlers.Send.PushBack(func(r *request.Request) {
  27. reader := ioutil.NopCloser(bytes.NewReader([]byte(test.body)))
  28. r.HTTPResponse = &http.Response{StatusCode: 200, Body: reader}
  29. })
  30. resp, err := s.GetBucketLocation(&s3.GetBucketLocationInput{Bucket: aws.String("bucket")})
  31. assert.NoError(t, err)
  32. if test.loc == "" {
  33. assert.Nil(t, resp.LocationConstraint)
  34. } else {
  35. assert.Equal(t, test.loc, *resp.LocationConstraint)
  36. }
  37. }
  38. }
  39. func TestPopulateLocationConstraint(t *testing.T) {
  40. s := s3.New(nil)
  41. in := &s3.CreateBucketInput{
  42. Bucket: aws.String("bucket"),
  43. }
  44. req, _ := s.CreateBucketRequest(in)
  45. err := req.Build()
  46. assert.NoError(t, err)
  47. assert.Equal(t, "mock-region", awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint")[0])
  48. assert.Nil(t, in.CreateBucketConfiguration) // don't modify original params
  49. }
  50. func TestNoPopulateLocationConstraintIfProvided(t *testing.T) {
  51. s := s3.New(nil)
  52. req, _ := s.CreateBucketRequest(&s3.CreateBucketInput{
  53. Bucket: aws.String("bucket"),
  54. CreateBucketConfiguration: &s3.CreateBucketConfiguration{},
  55. })
  56. err := req.Build()
  57. assert.NoError(t, err)
  58. assert.Equal(t, 0, len(awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint")))
  59. }
  60. func TestNoPopulateLocationConstraintIfClassic(t *testing.T) {
  61. s := s3.New(&aws.Config{Region: aws.String("us-east-1")})
  62. req, _ := s.CreateBucketRequest(&s3.CreateBucketInput{
  63. Bucket: aws.String("bucket"),
  64. })
  65. err := req.Build()
  66. assert.NoError(t, err)
  67. assert.Equal(t, 0, len(awsutil.ValuesAtPath(req.Params, "CreateBucketConfiguration.LocationConstraint")))
  68. }