functional_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package v4_test
  2. import (
  3. "net/url"
  4. "testing"
  5. "time"
  6. "github.com/aws/aws-sdk-go/aws"
  7. "github.com/aws/aws-sdk-go/internal/test/unit"
  8. "github.com/aws/aws-sdk-go/service/s3"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. var _ = unit.Imported
  12. func TestPresignHandler(t *testing.T) {
  13. svc := s3.New(nil)
  14. req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
  15. Bucket: aws.String("bucket"),
  16. Key: aws.String("key"),
  17. ContentDisposition: aws.String("a+b c$d"),
  18. ACL: aws.String("public-read"),
  19. })
  20. req.Time = time.Unix(0, 0)
  21. urlstr, err := req.Presign(5 * time.Minute)
  22. assert.NoError(t, err)
  23. expectedDate := "19700101T000000Z"
  24. expectedHeaders := "host;x-amz-acl"
  25. expectedSig := "7edcb4e3a1bf12f4989018d75acbe3a7f03df24bd6f3112602d59fc551f0e4e2"
  26. expectedCred := "AKID/19700101/mock-region/s3/aws4_request"
  27. u, _ := url.Parse(urlstr)
  28. urlQ := u.Query()
  29. assert.Equal(t, expectedSig, urlQ.Get("X-Amz-Signature"))
  30. assert.Equal(t, expectedCred, urlQ.Get("X-Amz-Credential"))
  31. assert.Equal(t, expectedHeaders, urlQ.Get("X-Amz-SignedHeaders"))
  32. assert.Equal(t, expectedDate, urlQ.Get("X-Amz-Date"))
  33. assert.Equal(t, "300", urlQ.Get("X-Amz-Expires"))
  34. assert.NotContains(t, urlstr, "+") // + encoded as %20
  35. }