rpc_signature_composer_test.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package auth
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
  6. )
  7. func mockRpcDate(fn func() string) string {
  8. return "mock date"
  9. }
  10. func TestRpcSignatureComposer_buildRpcStringToSign(t *testing.T) {
  11. request := requests.NewCommonRequest()
  12. request.TransToAcsRequest()
  13. stringToSign := buildRpcStringToSign(request)
  14. assert.Equal(t, "GET&%2F&", stringToSign)
  15. request.FormParams["key"] = "value"
  16. stringToSign = buildRpcStringToSign(request)
  17. assert.Equal(t, "GET&%2F&key%3Dvalue", stringToSign)
  18. request.QueryParams["q"] = "value"
  19. stringToSign = buildRpcStringToSign(request)
  20. assert.Equal(t, "GET&%2F&key%3Dvalue%26q%3Dvalue", stringToSign)
  21. request.QueryParams["q"] = "http://domain/?q=value&q2=value2"
  22. stringToSign = buildRpcStringToSign(request)
  23. assert.Equal(t, "GET&%2F&key%3Dvalue%26q%3Dhttp%253A%252F%252Fdomain%252F%253Fq%253Dvalue%2526q2%253Dvalue2", stringToSign)
  24. }
  25. // func TestRpcSignatureComposer(t *testing.T) {
  26. // request := requests.NewCommonRequest()
  27. // request.TransToAcsRequest()
  28. // c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
  29. // signer := signers.NewAccessKeySigner(c)
  30. // origTestHookLookupIP := hookGetDate
  31. // defer func() { hookGetDate = origTestHookLookupIP }()
  32. // hookGetDate = mockDate
  33. // signRpcRequest(request, signer, "regionId")
  34. // assert.Equal(t, "mock date", request.GetHeaders()["Date"])
  35. // assert.Equal(t, "acs accessKeyId:degLHXLEN6rMojj+bOlK74U9iic=", request.GetQueryParams()["Signature"])
  36. // }
  37. // func TestRpcSignatureComposer2(t *testing.T) {
  38. // request := requests.NewCommonRequest()
  39. // request.PathPattern = "/users/:user"
  40. // request.FormParams["key"] = "value"
  41. // request.AcceptFormat = "XML"
  42. // request.TransToAcsRequest()
  43. // c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
  44. // signer := signers.NewAccessKeySigner(c)
  45. // origTestHookLookupIP := hookGetDate
  46. // defer func() { hookGetDate = origTestHookLookupIP }()
  47. // hookGetDate = mockDate
  48. // signRpcRequest(request, signer, "regionId")
  49. // assert.Equal(t, "application/x-www-form-urlencoded", request.GetHeaders()["Content-Type"])
  50. // assert.Equal(t, "mock date", request.GetHeaders()["Date"])
  51. // assert.Equal(t, "application/xml", request.GetHeaders()["Accept"])
  52. // assert.Equal(t, "acs accessKeyId:U9uA3ftRZKixHPB08Z7Z4GOlpTY=", request.GetQueryParams()["Signature"])
  53. // }