From 495d1e04fbcca93de9385129a7f8e5a2f127cc4f Mon Sep 17 00:00:00 2001 From: aliiohs <rzy1107@163.com> Date: Mon, 24 Jun 2019 10:14:08 +0800 Subject: [PATCH] add test case for url method --- cluster/router/condition_router.go | 2 +- cluster/router/router_factory.go | 3 +-- common/url_test.go | 37 ++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/cluster/router/condition_router.go b/cluster/router/condition_router.go index a926e1adc..cc3fec83d 100644 --- a/cluster/router/condition_router.go +++ b/cluster/router/condition_router.go @@ -227,7 +227,7 @@ func (c *ConditionRouter) MatchThen(url common.URL, param common.URL) (bool, err func MatchCondition(pairs map[string]MatchPair, url *common.URL, param *common.URL, invocation protocol.Invocation) (bool, error) { sample := url.ToMap() if sample == nil { - return true, perrors.Errorf("") + return true, perrors.Errorf("url is not allowed be nil") } result := false for key, matchPair := range pairs { diff --git a/cluster/router/router_factory.go b/cluster/router/router_factory.go index 9f4aca2fd..8f1f911ff 100644 --- a/cluster/router/router_factory.go +++ b/cluster/router/router_factory.go @@ -10,8 +10,7 @@ func init() { extension.SetRouterFactory("condition", NewConditionRouterFactory) } -type ConditionRouterFactory struct { -} +type ConditionRouterFactory struct{} func NewConditionRouterFactory() cluster.RouterFactory { return ConditionRouterFactory{} diff --git a/common/url_test.go b/common/url_test.go index 4524d4859..986855370 100644 --- a/common/url_test.go +++ b/common/url_test.go @@ -19,6 +19,7 @@ package common import ( "context" + "encoding/base64" "net/url" "testing" ) @@ -129,6 +130,42 @@ func TestURL_GetParamBool(t *testing.T) { assert.Equal(t, false, v) } +func TestURL_GetParameterAndDecoded(t *testing.T) { + rule := "host = 2.2.2.2,1.1.1.1,3.3.3.3 & host !=1.1.1.1 => host = 1.2.3.4" + params := url.Values{} + params.Set("rule", base64.URLEncoding.EncodeToString([]byte(rule))) + u := URL{baseUrl: baseUrl{Params: params}} + v, _ := u.GetParameterAndDecoded("rule") + assert.Equal(t, rule, v) +} +func TestURL_GetRawParameter(t *testing.T) { + u, _ := NewURL(context.TODO(), "condition://0.0.0.0:8080/com.foo.BarService?serialization=fastjson") + u.Username = "test" + u.Password = "test" + assert.Equal(t, "condition", u.GetRawParameter("protocol")) + assert.Equal(t, "0.0.0.0", u.GetRawParameter("host")) + assert.Equal(t, "8080", u.GetRawParameter("port")) + assert.Equal(t, "test", u.GetRawParameter("username")) + assert.Equal(t, "test", u.GetRawParameter("password")) + assert.Equal(t, "/com.foo.BarService", u.GetRawParameter("path")) + assert.Equal(t, "fastjson", u.GetRawParameter("serialization")) +} +func TestURL_ToMap(t *testing.T) { + u, _ := NewURL(context.TODO(), "condition://0.0.0.0:8080/com.foo.BarService?serialization=fastjson") + u.Username = "test" + u.Password = "test" + + m := u.ToMap() + assert.Equal(t, 7, len(m)) + assert.Equal(t, "condition", m["protocol"]) + assert.Equal(t, "0.0.0.0", m["host"]) + assert.Equal(t, "8080", m["port"]) + assert.Equal(t, "test", m["username"]) + assert.Equal(t, "test", m["password"]) + assert.Equal(t, "/com.foo.BarService", m["path"]) + assert.Equal(t, "fastjson", m["serialization"]) +} + func TestURL_GetMethodParamInt(t *testing.T) { params := url.Values{} params.Set("methods.GetValue.timeout", "3") -- GitLab