roa_signature_composer_test.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package auth
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
  6. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers"
  7. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  8. )
  9. func mockDate(fn func() string) string {
  10. return "mock date"
  11. }
  12. func TestRoaSignatureComposer_buildRoaStringToSign(t *testing.T) {
  13. request := requests.NewCommonRequest()
  14. request.PathPattern = "/users/:user"
  15. request.TransToAcsRequest()
  16. stringToSign := buildRoaStringToSign(request)
  17. assert.Equal(t, "GET\nx-acs-version:\n/users/:user", stringToSign)
  18. request.Headers["Accept"] = "application/json;charset=utf8"
  19. stringToSign = buildRoaStringToSign(request)
  20. assert.Equal(t, "GET\napplication/json;charset=utf8\nx-acs-version:\n/users/:user", stringToSign)
  21. request.SetContentType("application/json")
  22. request.Headers["x-acs-custom-header"] = "value"
  23. stringToSign = buildRoaStringToSign(request)
  24. assert.Equal(t, "GET\napplication/json;charset=utf8\napplication/json\nx-acs-custom-header:value\nx-acs-version:\n/users/:user", stringToSign)
  25. request.QueryParams["q"] = "value"
  26. stringToSign = buildRoaStringToSign(request)
  27. assert.Equal(t, "GET\napplication/json;charset=utf8\napplication/json\nx-acs-custom-header:value\nx-acs-version:\n/users/:user?q=value", stringToSign)
  28. request.QueryParams["q"] = "http://domain/?q=value&q2=value2"
  29. stringToSign = buildRoaStringToSign(request)
  30. assert.Equal(t, "GET\napplication/json;charset=utf8\napplication/json\nx-acs-custom-header:value\nx-acs-version:\n/users/:user?q=http://domain/?q=value&q2=value2", stringToSign)
  31. }
  32. func TestRoaSignatureComposer(t *testing.T) {
  33. request := requests.NewCommonRequest()
  34. request.PathPattern = "/users/:user"
  35. request.TransToAcsRequest()
  36. c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
  37. signer := signers.NewAccessKeySigner(c)
  38. origTestHookGetDate := hookGetDate
  39. defer func() { hookGetDate = origTestHookGetDate }()
  40. hookGetDate = mockDate
  41. signRoaRequest(request, signer, "regionId")
  42. assert.Equal(t, "mock date", request.GetHeaders()["Date"])
  43. assert.Equal(t, "acs accessKeyId:degLHXLEN6rMojj+bOlK74U9iic=", request.GetHeaders()["Authorization"])
  44. }
  45. func TestRoaSignatureComposer2(t *testing.T) {
  46. request := requests.NewCommonRequest()
  47. request.PathPattern = "/users/:user"
  48. request.FormParams["key"] = "value"
  49. request.AcceptFormat = "XML"
  50. request.TransToAcsRequest()
  51. c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
  52. signer := signers.NewAccessKeySigner(c)
  53. origTestHookLookupIP := hookGetDate
  54. defer func() { hookGetDate = origTestHookLookupIP }()
  55. hookGetDate = mockDate
  56. signRoaRequest(request, signer, "regionId")
  57. assert.Equal(t, "application/x-www-form-urlencoded", request.GetHeaders()["Content-Type"])
  58. assert.Equal(t, "mock date", request.GetHeaders()["Date"])
  59. assert.Equal(t, "application/xml", request.GetHeaders()["Accept"])
  60. assert.Equal(t, "acs accessKeyId:U9uA3ftRZKixHPB08Z7Z4GOlpTY=", request.GetHeaders()["Authorization"])
  61. }
  62. func TestRoaSignatureComposer3(t *testing.T) {
  63. request := requests.NewCommonRequest()
  64. request.PathPattern = "/users/:user"
  65. request.AcceptFormat = "RAW"
  66. request.TransToAcsRequest()
  67. c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
  68. signer := signers.NewAccessKeySigner(c)
  69. origTestHookGetDate := hookGetDate
  70. defer func() { hookGetDate = origTestHookGetDate }()
  71. hookGetDate = mockDate
  72. signRoaRequest(request, signer, "regionId")
  73. assert.Equal(t, "mock date", request.GetHeaders()["Date"])
  74. }