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