| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package rest |
| |
| // |
| //import ( |
| // "context" |
| // "errors" |
| // "fmt" |
| // "strings" |
| // "testing" |
| // "time" |
| //) |
| // |
| //import ( |
| // "github.com/stretchr/testify/assert" |
| //) |
| // |
| //import ( |
| // "dubbo.apache.org/dubbo-go/v3/common" |
| // "dubbo.apache.org/dubbo-go/v3/common/extension" |
| // _ "dubbo.apache.org/dubbo-go/v3/proxy/proxy_factory" |
| // "dubbo.apache.org/dubbo-go/v3/config" |
| // rest_config "dubbo.apache.org/dubbo-go/v3/protocol/rest/config" |
| //) |
| // |
| //func TestRestProtocolRefer(t *testing.T) { |
| // // Refer |
| // proto := GetRestProtocol() |
| // url, err := common.NewURL(mockRestCommonUrl) |
| // assert.NoError(t, err) |
| // con := config.ConsumerConfig{ |
| // ConnectTimeout: "5s", |
| // RequestTimeout: "5s", |
| // } |
| // config.SetConsumerConfig(con) |
| // configMap := make(map[string]*rest_config.RestServiceConfig) |
| // configMap["com.ikurento.user.UserProvider"] = &rest_config.RestServiceConfig{ |
| // Client: "resty", |
| // } |
| // rest_config.SetRestConsumerServiceConfigMap(configMap) |
| // invoker := proto.Refer(url) |
| // |
| // // make sure url |
| // eq := invoker.GetURL().URLEqual(url) |
| // assert.True(t, eq) |
| // |
| // // make sure invokers after 'Destroy' |
| // invokersLen := len(proto.(*RestProtocol).Invokers()) |
| // assert.Equal(t, 1, invokersLen) |
| // proto.Destroy() |
| // invokersLen = len(proto.(*RestProtocol).Invokers()) |
| // assert.Equal(t, 0, invokersLen) |
| //} |
| // |
| //func TestRestProtocolExport(t *testing.T) { |
| // // Export |
| // proto := GetRestProtocol() |
| // url, err := common.NewURL(mockRestCommonUrl) |
| // assert.NoError(t, err) |
| // _, err = common.ServiceMap.Register(url.Service(), url.Protocol, "", "", &UserProvider{}) |
| // assert.NoError(t, err) |
| // con := config.ProviderConfig{} |
| // config.SetProviderConfig(con) |
| // configMap := make(map[string]*rest_config.RestServiceConfig) |
| // methodConfigMap := make(map[string]*rest_config.RestMethodConfig) |
| // queryParamsMap := make(map[int]string) |
| // queryParamsMap[1] = "age" |
| // queryParamsMap[2] = "name" |
| // pathParamsMap := make(map[int]string) |
| // pathParamsMap[0] = "userid" |
| // methodConfigMap["GetUser"] = &rest_config.RestMethodConfig{ |
| // InterfaceName: "", |
| // MethodName: "GetUser", |
| // Path: "/GetUser/{userid}", |
| // Produces: "application/json", |
| // Consumes: "application/json", |
| // MethodType: "GET", |
| // PathParams: "", |
| // PathParamsMap: pathParamsMap, |
| // QueryParams: "", |
| // QueryParamsMap: queryParamsMap, |
| // Body: -1, |
| // } |
| // configMap["com.ikurento.user.UserProvider"] = &rest_config.RestServiceConfig{ |
| // Server: "go-restful", |
| // RestMethodConfigsMap: methodConfigMap, |
| // } |
| // rest_config.SetRestProviderServiceConfigMap(configMap) |
| // proxyFactory := extension.GetProxyFactory("default") |
| // exporter := proto.Export(proxyFactory.GetInvoker(url)) |
| // // make sure url |
| // eq := exporter.GetInvoker().GetURL().URLEqual(url) |
| // assert.True(t, eq) |
| // // make sure exporterMap after 'UnExport' |
| // fmt.Println(url.Path) |
| // _, ok := proto.(*RestProtocol).ExporterMap().Load(strings.TrimPrefix(url.Path, "/")) |
| // assert.True(t, ok) |
| // exporter.UnExport() |
| // _, ok = proto.(*RestProtocol).ExporterMap().Load(strings.TrimPrefix(url.Path, "/")) |
| // assert.False(t, ok) |
| // |
| // // make sure serverMap after 'Destroy' |
| // _, ok = proto.(*RestProtocol).serverMap[url.Location] |
| // assert.True(t, ok) |
| // proto.Destroy() |
| // _, ok = proto.(*RestProtocol).serverMap[url.Location] |
| // assert.False(t, ok) |
| //} |
| // |
| //type UserProvider struct{} |
| // |
| //func (p *UserProvider) Reference() string { |
| // return "com.ikurento.user.UserProvider" |
| //} |
| // |
| //func (p *UserProvider) GetUser(ctx context.Context, id int, age int32, name string, contentType string) (*User, error) { |
| // return &User{ |
| // ID: id, |
| // Time: nil, |
| // Age: age, |
| // Name: name, |
| // }, nil |
| //} |
| // |
| //func (p *UserProvider) GetUserOne(ctx context.Context, user *User) (*User, error) { |
| // return user, nil |
| //} |
| // |
| //func (p *UserProvider) GetUserTwo(ctx context.Context, req []interface{}, rsp *User) error { |
| // m := req[0].(map[string]interface{}) |
| // rsp.Name = m["Name"].(string) |
| // return nil |
| //} |
| // |
| //func (p *UserProvider) GetUserThree(ctx context.Context, user interface{}) (*User, error) { |
| // m := user.(map[string]interface{}) |
| // |
| // u := &User{} |
| // u.Name = m["Name"].(string) |
| // return u, nil |
| //} |
| // |
| //func (p *UserProvider) GetUserFour(ctx context.Context, user []interface{}, id string) (*User, error) { |
| // m := user[0].(map[string]interface{}) |
| // |
| // u := &User{} |
| // u.Name = m["Name"].(string) |
| // return u, nil |
| //} |
| // |
| //func (p *UserProvider) GetUserFive(ctx context.Context, user []interface{}) (*User, error) { |
| // return nil, errors.New("test error") |
| //} |
| // |
| //type User struct { |
| // ID int |
| // Time *time.Time |
| // Age int32 |
| // Name string |
| //} |