Browse Source

Add test cases for sdk/endpoints/resolver.go

Jackson Tian 7 years ago
parent
commit
9f480f129f

+ 1 - 1
sdk/endpoints/local_global_resolver_test.go

@@ -8,7 +8,7 @@ import (
 
 func TestLocalGlobalResolver_GetName(t *testing.T) {
   resolver := &LocalGlobalResolver{}
-  assert.Equal(t, resolver.GetName(), "local global resolver")
+  assert.Equal(t, "local global resolver", resolver.GetName())
 }
 
 func TestLocalGlobalResolver_TryResolve(t *testing.T) {

+ 1 - 9
sdk/endpoints/local_regional_resolver_test.go

@@ -8,7 +8,7 @@ import (
 
 func TestLocalRegionalResolver_GetName(t *testing.T) {
   resolver := &LocalRegionalResolver{}
-  assert.Equal(t, resolver.GetName(), "local regional resolver")
+  assert.Equal(t, "local regional resolver", resolver.GetName())
 }
 
 func TestLocalRegionalResolver_TryResolve(t *testing.T) {
@@ -30,12 +30,4 @@ func TestLocalRegionalResolver_TryResolve(t *testing.T) {
   assert.Nil(t, err)
   assert.Equal(t, "arms.cn-beijing.aliyuncs.com", endpoint)
 	assert.Equal(t, true, support)
-
-	// resolveParam = &ResolveParam{
-	// 	Product: "inexist",
-	// }
-  // endpoint, support, err = resolver.TryResolve(resolveParam)
-  // assert.Nil(t, err)
-  // assert.Equal(t, "", endpoint)
-	// assert.Equal(t, false, support)
 }

+ 1 - 1
sdk/endpoints/location_resolver_test.go

@@ -12,7 +12,7 @@ import (
 
 func TestLocationResolver_GetName(t *testing.T) {
   resolver := &LocationResolver{}
-  assert.Equal(t, resolver.GetName(), "location resolver")
+  assert.Equal(t, "location resolver", resolver.GetName())
 }
 
 func TestLocationResolver_TryResolve_EmptyLocationProduct(t *testing.T) {

+ 1 - 1
sdk/endpoints/mapping_resolver_test.go

@@ -8,7 +8,7 @@ import (
 
 func TestMappingResolver_GetName(t *testing.T) {
 	resolver := &MappingResolver{}
-	assert.Equal(t, resolver.GetName(), "mapping resolver")
+	assert.Equal(t, "mapping resolver", resolver.GetName())
 }
 
 func TestMappingResolver_TryResolve(t *testing.T) {

+ 5 - 3
sdk/endpoints/resolver.go

@@ -44,18 +44,20 @@ type Resolver interface {
 
 func Resolve(param *ResolveParam) (endpoint string, err error) {
 	supportedResolvers := getAllResolvers()
+	var lastErr error
+	var supported bool
 	for _, resolver := range supportedResolvers {
-		endpoint, supported, err := resolver.TryResolve(param)
+		endpoint, supported, lastErr = resolver.TryResolve(param)
 		if supported {
 			debug("resolve endpoint with %s\n", param)
 			debug("\t%s by resolver(%s)\n", endpoint, resolver.GetName())
-			return endpoint, err
+			return endpoint, nil
 		}
 	}
 
 	// not support
 	errorMsg := fmt.Sprintf(errors.CanNotResolveEndpointErrorMessage, param, ResolveEndpointUserGuideLink)
-	err = errors.NewClientError(errors.CanNotResolveEndpointErrorCode, errorMsg, nil)
+	err = errors.NewClientError(errors.CanNotResolveEndpointErrorCode, errorMsg, lastErr)
 	return
 }
 

+ 35 - 0
sdk/endpoints/resolver_test.go

@@ -0,0 +1,35 @@
+package endpoints
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestResolver_ResolveParam_String(t *testing.T) {
+	param := &ResolveParam{}
+	assert.Equal(t, "{\"Domain\":\"\",\"Product\":\"\",\"RegionId\":\"\",\"LocationProduct\":\"\",\"LocationEndpointType\":\"\"}", param.String())
+}
+
+func TestResolve(t *testing.T) {
+	param := &ResolveParam{
+		Product: "Ecs",
+		RegionId: "cn-hangzhou",
+	}
+	AddEndpointMapping("cn-hangzhou", "Ecs", "unreachable.aliyuncs.com")
+	endpoint, err := Resolve(param)
+
+	assert.Nil(t, err)
+	assert.Equal(t, "unreachable.aliyuncs.com", endpoint)
+}
+
+func TestResolve_WithInvalidProduct(t *testing.T) {
+	param := &ResolveParam{
+		Product: "Invalid",
+		RegionId: "cn-hangzhou",
+	}
+	endpoint, err := Resolve(param)
+
+	assert.NotNil(t, err)
+	assert.Equal(t, "", endpoint)
+}

+ 1 - 1
sdk/endpoints/simple_host_resolver_test.go

@@ -8,7 +8,7 @@ import (
 
 func TestSimpleHostResolver_GetName(t *testing.T) {
   resolver := &SimpleHostResolver{}
-  assert.Equal(t, resolver.GetName(), "simple host resolver")
+  assert.Equal(t, "simple host resolver", resolver.GetName())
 }
 
 func TestSimpleHostResolver_TryResolve(t *testing.T) {