| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 |
- package requests
- import (
- "bytes"
- "fmt"
- "io"
- "sort"
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- )
- func Test_AcsRequest(t *testing.T) {
- r := defaultBaseRequest()
- assert.NotNil(t, r)
- // query params
- query := r.GetQueryParams()
- assert.Equal(t, 0, len(query))
- r.addQueryParam("key", "value")
- assert.Equal(t, 1, len(query))
- assert.Equal(t, "value", query["key"])
- // form params
- form := r.GetFormParams()
- assert.Equal(t, 0, len(form))
- r.addFormParam("key", "value")
- assert.Equal(t, 1, len(form))
- assert.Equal(t, "value", form["key"])
- // getter/setter for stringtosign
- assert.Equal(t, "", r.GetStringToSign())
- r.SetStringToSign("s2s")
- assert.Equal(t, "s2s", r.GetStringToSign())
- // content type
- _, contains := r.GetContentType()
- assert.False(t, contains)
- r.SetContentType("application/json")
- ct, contains := r.GetContentType()
- assert.Equal(t, "application/json", ct)
- assert.True(t, contains)
- // default 3 headers & content-type
- headers := r.GetHeaders()
- assert.Equal(t, 4, len(headers))
- r.addHeaderParam("x-key", "x-key-value")
- assert.Equal(t, 5, len(headers))
- assert.Equal(t, "x-key-value", headers["x-key"])
- // Version
- r.SetVersion("2017-06-06")
- assert.Equal(t, "2017-06-06", r.GetVersion())
- // GetActionName
- assert.Equal(t, "", r.GetActionName())
- // GetMethod
- assert.Equal(t, "GET", r.GetMethod())
- r.Method = "POST"
- assert.Equal(t, "POST", r.GetMethod())
- // Domain
- assert.Equal(t, "", r.GetDomain())
- r.SetDomain("ecs.aliyuncs.com")
- assert.Equal(t, "ecs.aliyuncs.com", r.GetDomain())
- // Region
- assert.Equal(t, "", r.GetRegionId())
- r.RegionId = "cn-hangzhou"
- assert.Equal(t, "cn-hangzhou", r.GetRegionId())
- // AcceptFormat
- assert.Equal(t, "JSON", r.GetAcceptFormat())
- r.AcceptFormat = "XML"
- assert.Equal(t, "XML", r.GetAcceptFormat())
- // GetLocationServiceCode
- assert.Equal(t, "", r.GetLocationServiceCode())
- // GetLocationEndpointType
- assert.Equal(t, "", r.GetLocationEndpointType())
- // GetProduct
- assert.Equal(t, "", r.GetProduct())
- // GetScheme
- assert.Equal(t, "", r.GetScheme())
- r.SetScheme("HTTPS")
- assert.Equal(t, "HTTPS", r.GetScheme())
- // GetReadTimeout
- assert.Equal(t, 0*time.Second, r.GetReadTimeout())
- r.SetReadTimeout(5 * time.Second)
- assert.Equal(t, 5*time.Second, r.GetReadTimeout())
- // GetConnectTimeout
- assert.Equal(t, 0*time.Second, r.GetConnectTimeout())
- r.SetConnectTimeout(5 * time.Second)
- assert.Equal(t, 5*time.Second, r.GetConnectTimeout())
- // GetHTTPSInsecure
- assert.True(t, r.GetHTTPSInsecure() == nil)
- r.SetHTTPSInsecure(true)
- assert.Equal(t, true, *r.GetHTTPSInsecure())
- // GetPort
- assert.Equal(t, "", r.GetPort())
- // GetUserAgent
- r.AppendUserAgent("cli", "1.01")
- assert.Equal(t, "1.01", r.GetUserAgent()["cli"])
- // GetUserAgent
- r.AppendUserAgent("cli", "2.02")
- assert.Equal(t, "2.02", r.GetUserAgent()["cli"])
- // Content
- assert.Equal(t, []byte(nil), r.GetContent())
- r.SetContent([]byte("The Content"))
- assert.True(t, bytes.Equal([]byte("The Content"), r.GetContent()))
- }
- type AcsRequestTest struct {
- *baseRequest
- Ontology AcsRequest
- Query string `position:"Query" name:"Query"`
- Header string `position:"Header" name:"Header"`
- Path string `position:"Path" name:"Path"`
- Body string `position:"Body" name:"Body"`
- Target map[string]interface{} `position:"Query" name:"Target"`
- TypeAcs *[]string `position:"type" name:"type" type:"Repeated"`
- }
- func (r AcsRequestTest) BuildQueries() string {
- return ""
- }
- func (r AcsRequestTest) BuildUrl() string {
- return ""
- }
- func (r AcsRequestTest) GetBodyReader() io.Reader {
- return nil
- }
- func (r AcsRequestTest) GetStyle() string {
- return ""
- }
- func (r AcsRequestTest) addPathParam(key, value string) {
- return
- }
- func Test_AcsRequest_InitParams(t *testing.T) {
- r := &AcsRequestTest{
- baseRequest: defaultBaseRequest(),
- Query: "query value",
- Header: "header value",
- Path: "path value",
- Body: "body value",
- Target: map[string]interface{}{
- "key": "test",
- "value": 1234,
- },
- }
- tmp := []string{r.Query, r.Header}
- r.TypeAcs = &tmp
- r.addQueryParam("qkey", "qvalue")
- InitParams(r)
- queries := r.GetQueryParams()
- assert.Equal(t, "query value", queries["Query"])
- assert.Equal(t, "{\"key\":\"test\",\"value\":1234}", queries["Target"])
- headers := r.GetHeaders()
- assert.Equal(t, "header value", headers["Header"])
- // TODO: check the body & path
- }
- // CreateContainerGroupRequest is the request struct for api CreateContainerGroup
- type CreateContainerGroupRequest struct {
- *RpcRequest
- OwnerId Integer `position:"Query" name:"OwnerId"`
- ResourceOwnerAccount string `position:"Query" name:"ResourceOwnerAccount"`
- ResourceOwnerId Integer `position:"Query" name:"ResourceOwnerId"`
- OwnerAccount string `position:"Query" name:"OwnerAccount"`
- RegionId string `position:"Query" name:"RegionId"`
- ZoneId string `position:"Query" name:"ZoneId"`
- SecurityGroupId string `position:"Query" name:"SecurityGroupId"`
- VSwitchId string `position:"Query" name:"VSwitchId"`
- ContainerGroupName string `position:"Query" name:"ContainerGroupName"`
- RestartPolicy string `position:"Query" name:"RestartPolicy"`
- Tag *[]CreateContainerGroup_Tag `position:"Query" name:"Tag" type:"Repeated"`
- ImageRegistryCredential *[]CreateContainerGroup_ImageRegistryCredential `position:"Query" name:"ImageRegistryCredential" type:"Repeated"`
- Container *[]CreateContainerGroup_Container `position:"Query" name:"Container" type:"Repeated"`
- Volume *[]CreateContainerGroup_Volume `position:"Query" name:"Volume" type:"Repeated"`
- EipInstanceId string `position:"Query" name:"EipInstanceId"`
- InitContainer *[]CreateContainerGroup_InitContainer `position:"Query" name:"InitContainer" type:"Repeated"`
- Cpu Float `position:"Query" name:"Cpu"`
- Memory Float `position:"Query" name:"Memory"`
- DnsConfig CreateContainerGroup_DnsConfig `position:"Query" name:"DnsConfig" type:"Struct"`
- OptionJson map[string]interface{} `position:"Query" name:"OptionJson"`
- }
- type CreateContainerGroup_Tag struct {
- Key string `name:"Key"`
- Value string `name:"Value"`
- }
- type CreateContainerGroup_ImageRegistryCredential struct {
- Server string `name:"Server"`
- UserName string `name:"UserName"`
- Password string `name:"Password"`
- }
- type CreateContainerGroup_Container struct {
- Image string `name:"Image"`
- Name string `name:"Name"`
- Cpu Float `name:"Cpu"`
- Memory Float `name:"Memory"`
- WorkingDir string `name:"WorkingDir"`
- ImagePullPolicy string `name:"ImagePullPolicy"`
- Command []string `name:"Command" type:"Repeated"`
- Arg []string `name:"Arg" type:"Repeated"`
- VolumeMount *[]CreateContainerGroup_VolumeMount `name:"VolumeMount" type:"Repeated"`
- Port *[]CreateContainerGroup_Port `name:"Port" type:"Repeated"`
- EnvironmentVar *[]CreateContainerGroup_EnvironmentVar `name:"EnvironmentVar" type:"Repeated"`
- ReadinessProbe CreateContainerGroup_ReadinessProbe `name:"ReadinessProbe" type:"Struct"`
- LivenessProbe CreateContainerGroup_LivenessProbe `name:"LivenessProbe" type:"Struct"`
- SecurityContext CreateContainerGroup_SecurityContext `name:"SecurityContext" type:"Struct"`
- }
- type CreateContainerGroup_Volume struct {
- Name string `name:"Name"`
- Type string `name:"Type"`
- NFSVolume CreateContainerGroup_NFSVolume `name:"NFSVolume"`
- ConfigFileVolume CreateContainerGroup_ConfigFileVolume `name:"ConfigFileVolume"`
- }
- type CreateContainerGroup_InitContainer struct {
- Name string `name:"Name"`
- Image string `name:"Image"`
- Cpu Float `name:"Cpu"`
- Memory Float `name:"Memory"`
- WorkingDir string `name:"WorkingDir"`
- ImagePullPolicy string `name:"ImagePullPolicy"`
- Command []string `name:"Command"`
- Arg []string `name:"Arg"`
- VolumeMount *[]CreateContainerGroup_VolumeMount `name:"VolumeMount"`
- Port *[]CreateContainerGroup_Port `name:"Port"`
- EnvironmentVar *[]CreateContainerGroup_EnvironmentVar `name:"EnvironmentVar"`
- SecurityContext CreateContainerGroup_SecurityContext `name:"SecurityContext"`
- }
- type CreateContainerGroup_DnsConfig struct {
- NameServer []string `name:"NameServer"`
- Search []string `name:"Search"`
- Option *[]CreateContainerGroup_Option `name:"Option"`
- }
- type CreateContainerGroup_VolumeMount struct {
- MountPath string `name:"MountPath"`
- ReadOnly Boolean `name:"ReadOnly"`
- Name string `name:"Name"`
- }
- type CreateContainerGroup_Port struct {
- Protocol string `name:"Protocol"`
- Port Integer `name:"Port"`
- }
- type CreateContainerGroup_EnvironmentVar struct {
- Key string `name:"Key"`
- Value string `name:"Value"`
- }
- type CreateContainerGroup_ReadinessProbe struct {
- InitialDelaySeconds Integer `name:"InitialDelaySeconds"`
- PeriodSeconds Integer `name:"PeriodSeconds"`
- SuccessThreshold Integer `name:"SuccessThreshold"`
- FailureThreshold Integer `name:"FailureThreshold"`
- TimeoutSeconds Integer `name:"TimeoutSeconds"`
- HttpGet CreateContainerGroup_HttpGet `name:"HttpGet"`
- Exec CreateContainerGroup_Exec `name:"Exec"`
- TcpSocket CreateContainerGroup_TcpSocket `name:"TcpSocket"`
- }
- type CreateContainerGroup_HttpGet struct {
- Path string `name:"Path"`
- Port Integer `name:"Port"`
- Scheme string `name:"Scheme"`
- }
- type CreateContainerGroup_Exec struct {
- Command []string `name:"Command"`
- }
- type CreateContainerGroup_TcpSocket struct {
- Port Integer `name:"Port"`
- }
- type CreateContainerGroup_LivenessProbe struct {
- InitialDelaySeconds Integer `name:"InitialDelaySeconds"`
- PeriodSeconds Integer `name:"PeriodSeconds"`
- SuccessThreshold Integer `name:"SuccessThreshold"`
- FailureThreshold Integer `name:"FailureThreshold"`
- TimeoutSeconds Integer `name:"TimeoutSeconds"`
- HttpGet CreateContainerGroup_HttpGet `name:"HttpGet"`
- Exec CreateContainerGroup_Exec `name:"Exec"`
- TcpSocket CreateContainerGroup_TcpSocket `name:"TcpSocket"`
- }
- type CreateContainerGroup_SecurityContext struct {
- ReadOnlyRootFilesystem Boolean `name:"ReadOnlyRootFilesystem"`
- RunAsUser Integer `name:"RunAsUser"`
- Capability CreateContainerGroup_Capability `name:"Capability"`
- }
- type CreateContainerGroup_Capability struct {
- Add []string `name:"Add"`
- }
- type CreateContainerGroup_NFSVolume struct {
- Server string `name:"Server"`
- Path string `name:"Path"`
- ReadOnly Boolean `name:"ReadOnly"`
- }
- type CreateContainerGroup_ConfigFileVolume struct {
- ConfigFileToPath *[]CreateContainerGroup_ConfigFileToPath `name:"ConfigFileToPath"`
- }
- type CreateContainerGroup_ConfigFileToPath struct {
- Content string `name:"Content"`
- Path string `name:"Path"`
- }
- type CreateContainerGroup_Option struct {
- Name string `name:"Name"`
- Value string `name:"Value"`
- }
- func GetQueryString(r *CreateContainerGroupRequest) string {
- queries := r.GetQueryParams()
- // To store the keys in slice in sorted order
- sortedKeys := make([]string, 0)
- for k := range queries {
- sortedKeys = append(sortedKeys, k)
- }
- sort.Strings(sortedKeys)
- // To perform the opertion you want
- resultBuilder := bytes.Buffer{}
- for _, key := range sortedKeys {
- resultBuilder.WriteString(key + "=" + queries[key] + "&")
- }
- return resultBuilder.String()
- }
- func InitRequest() (r *CreateContainerGroupRequest) {
- r = &CreateContainerGroupRequest{
- RpcRequest: &RpcRequest{},
- }
- r.InitWithApiInfo("Eci", "2018-08-08", "CreateContainerGroup", "eci", "openAPI")
- return
- }
- func Test_AcsRequest_InitParams2(t *testing.T) {
- r := InitRequest()
- InitParams(r)
- assert.Equal(t, "", GetQueryString(r))
- }
- func Test_AcsRequest_InitParams3(t *testing.T) {
- r := InitRequest()
- r.RegionId = "regionid"
- InitParams(r)
- assert.Equal(t, "RegionId=regionid&", GetQueryString(r))
- }
- func Test_AcsRequest_InitParams4(t *testing.T) {
- r := InitRequest()
- r.RegionId = "regionid"
- r.DnsConfig = CreateContainerGroup_DnsConfig{
- NameServer: []string{"nameserver1", "nameserver2"},
- }
- InitParams(r)
- assert.Equal(t, "DnsConfig.NameServer.1=nameserver1&DnsConfig.NameServer.2=nameserver2&RegionId=regionid&",
- GetQueryString(r))
- }
- func Test_AcsRequest_InitParams5(t *testing.T) {
- r := InitRequest()
- r.Container = &[]CreateContainerGroup_Container{
- {
- Image: "nginx",
- Name: "nginx",
- Cpu: "1",
- Memory: "2",
- WorkingDir: "ddd",
- },
- }
- InitParams(r)
- assert.Equal(t, "Container.1.Cpu=1&Container.1.Image=nginx&Container.1.Memory=2&Container.1.Name=nginx&Container.1.WorkingDir=ddd&",
- GetQueryString(r))
- }
- type StartMPUTaskRequest struct {
- *RpcRequest
- OwnerId Integer `position:"Query" name:"OwnerId"`
- AppId string `position:"Query" name:"AppId"`
- ChannelId string `position:"Query" name:"ChannelId"`
- TaskId string `position:"Query" name:"TaskId"`
- MediaEncode Integer `position:"Query" name:"MediaEncode"`
- BackgroundColor Integer `position:"Query" name:"BackgroundColor"`
- LayoutIds []Integer `position:"Query" name:"LayoutIds" type:"Repeated"`
- StreamURL string `position:"Query" name:"StreamURL"`
- }
- func Test_RPCRequest_InitParams(t *testing.T) {
- channelID := "id"
- r := &StartMPUTaskRequest{
- RpcRequest: &RpcRequest{},
- }
- r.init()
- r.Domain = "rtc.aliyuncs.com"
- r.AppId = "app ID"
- r.ChannelId = channelID
- r.TaskId = channelID
- r.MediaEncode = NewInteger(2)
- r.BackgroundColor = NewInteger(0)
- r.StreamURL = fmt.Sprintf("rtmp://video-center.alivecdn.com/galaxy/%s_%s?vhost=fast-live.chinalivestream.top", channelID, channelID)
- var out []Integer
- out = append(out, NewInteger(2))
- r.LayoutIds = out
- InitParams(r)
- queries := r.GetQueryParams()
- assert.Equal(t, "2", queries["LayoutIds.1"])
- assert.Len(t, queries, 7)
- }
|