| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package auth
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
- "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/signers"
- "github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
- )
- func mockDate(fn func() string) string {
- return "mock date"
- }
- func TestRoaSignatureComposer_buildRoaStringToSign(t *testing.T) {
- request := requests.NewCommonRequest()
- request.PathPattern = "/users/:user"
- request.TransToAcsRequest()
- stringToSign := buildRoaStringToSign(request)
- assert.Equal(t, "GET\nx-acs-version:\n/users/:user", stringToSign)
- request.Headers["Accept"] = "application/json;charset=utf8"
- stringToSign = buildRoaStringToSign(request)
- assert.Equal(t, "GET\napplication/json;charset=utf8\nx-acs-version:\n/users/:user", stringToSign)
- request.SetContentType("application/json")
- request.Headers["x-acs-custom-header"] = "value"
- stringToSign = buildRoaStringToSign(request)
- assert.Equal(t, "GET\napplication/json;charset=utf8\napplication/json\nx-acs-custom-header:value\nx-acs-version:\n/users/:user", stringToSign)
- request.QueryParams["q"] = "value"
- stringToSign = buildRoaStringToSign(request)
- assert.Equal(t, "GET\napplication/json;charset=utf8\napplication/json\nx-acs-custom-header:value\nx-acs-version:\n/users/:user?q=value", stringToSign)
- request.QueryParams["q"] = "http://domain/?q=value&q2=value2"
- stringToSign = buildRoaStringToSign(request)
- 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)
- }
- func TestRoaSignatureComposer(t *testing.T) {
- request := requests.NewCommonRequest()
- request.PathPattern = "/users/:user"
- request.TransToAcsRequest()
- c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
- signer := signers.NewAccessKeySigner(c)
- origTestHookGetDate := hookGetDate
- defer func() { hookGetDate = origTestHookGetDate }()
- hookGetDate = mockDate
- signRoaRequest(request, signer, "regionId")
- assert.Equal(t, "mock date", request.GetHeaders()["Date"])
- assert.Equal(t, "acs accessKeyId:degLHXLEN6rMojj+bOlK74U9iic=", request.GetHeaders()["Authorization"])
- }
- func TestRoaSignatureComposer2(t *testing.T) {
- request := requests.NewCommonRequest()
- request.PathPattern = "/users/:user"
- request.FormParams["key"] = "value"
- request.AcceptFormat = "XML"
- request.TransToAcsRequest()
- c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
- signer := signers.NewAccessKeySigner(c)
- origTestHookLookupIP := hookGetDate
- defer func() { hookGetDate = origTestHookLookupIP }()
- hookGetDate = mockDate
- signRoaRequest(request, signer, "regionId")
- assert.Equal(t, "application/x-www-form-urlencoded", request.GetHeaders()["Content-Type"])
- assert.Equal(t, "mock date", request.GetHeaders()["Date"])
- assert.Equal(t, "application/xml", request.GetHeaders()["Accept"])
- assert.Equal(t, "acs accessKeyId:U9uA3ftRZKixHPB08Z7Z4GOlpTY=", request.GetHeaders()["Authorization"])
- }
- func TestRoaSignatureComposer3(t *testing.T) {
- request := requests.NewCommonRequest()
- request.PathPattern = "/users/:user"
- request.AcceptFormat = "RAW"
- request.TransToAcsRequest()
- c := credentials.NewAccessKeyCredential("accessKeyId", "accessKeySecret")
- signer := signers.NewAccessKeySigner(c)
- origTestHookGetDate := hookGetDate
- defer func() { hookGetDate = origTestHookGetDate }()
- hookGetDate = mockDate
- signRoaRequest(request, signer, "regionId")
- assert.Equal(t, "mock date", request.GetHeaders()["Date"])
- }
|