接入阿里云二要素
This commit is contained in:
143
internal/infrastructure/external/alicloud/alicloud_service_test.go
vendored
Normal file
143
internal/infrastructure/external/alicloud/alicloud_service_test.go
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
package alicloud
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRealAlicloudAPI(t *testing.T) {
|
||||
// 使用真实的阿里云API配置
|
||||
host := "https://kzidcardv1.market.alicloudapi.com"
|
||||
appCode := "d55b58829efb41c8aa8e86769cba4844"
|
||||
|
||||
service := NewAlicloudService(host, appCode)
|
||||
|
||||
// 测试真实的身份证验证
|
||||
name := "张荣宏"
|
||||
idCard := "45212220000827423X"
|
||||
|
||||
fmt.Printf("开始测试阿里云二要素验证API...\n")
|
||||
fmt.Printf("姓名: %s\n", name)
|
||||
fmt.Printf("身份证: %s\n", idCard)
|
||||
|
||||
// 构建请求参数
|
||||
params := map[string]interface{}{
|
||||
"name": name,
|
||||
"idcard": idCard,
|
||||
}
|
||||
|
||||
// 调用真实API
|
||||
responseBody, err := service.CallAPI("api-mall/api/id_card/check", params)
|
||||
if err != nil {
|
||||
t.Logf("API调用失败: %v", err)
|
||||
fmt.Printf("错误详情: %v\n", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
// 打印原始响应数据
|
||||
fmt.Printf("API响应成功!\n")
|
||||
fmt.Printf("原始响应数据: %s\n", string(responseBody))
|
||||
|
||||
// 解析完整响应结构
|
||||
var response struct {
|
||||
Msg string `json:"msg"`
|
||||
Success bool `json:"success"`
|
||||
Code int `json:"code"`
|
||||
Data struct {
|
||||
Birthday string `json:"birthday"`
|
||||
Result int `json:"result"`
|
||||
Address string `json:"address"`
|
||||
OrderNo string `json:"orderNo"`
|
||||
Sex string `json:"sex"`
|
||||
Desc string `json:"desc"`
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(responseBody, &response); err != nil {
|
||||
t.Logf("响应数据解析失败: %v", err)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
// 检查响应状态
|
||||
if response.Code != 200 {
|
||||
t.Logf("API返回错误: code=%d, msg=%s", response.Code, response.Msg)
|
||||
t.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
idCardData := response.Data
|
||||
|
||||
// 打印详细响应结果
|
||||
fmt.Printf("验证结果: %d\n", idCardData.Result)
|
||||
fmt.Printf("描述: %s\n", idCardData.Desc)
|
||||
fmt.Printf("生日: %s\n", idCardData.Birthday)
|
||||
fmt.Printf("性别: %s\n", idCardData.Sex)
|
||||
fmt.Printf("地址: %s\n", idCardData.Address)
|
||||
fmt.Printf("订单号: %s\n", idCardData.OrderNo)
|
||||
|
||||
// 将完整响应转换为JSON并打印
|
||||
jsonResponse, _ := json.MarshalIndent(idCardData, "", " ")
|
||||
fmt.Printf("完整响应JSON:\n%s\n", string(jsonResponse))
|
||||
|
||||
// 判断验证结果
|
||||
if idCardData.Result == 1 {
|
||||
fmt.Printf("验证结果: 通过\n")
|
||||
} else {
|
||||
fmt.Printf("验证结果: 失败\n")
|
||||
}
|
||||
}
|
||||
|
||||
// TestAlicloudAPIError 测试错误响应
|
||||
func TestAlicloudAPIError(t *testing.T) {
|
||||
// 使用真实的阿里云API配置
|
||||
host := "https://kzidcardv1.market.alicloudapi.com"
|
||||
appCode := "d55b58829efb41c8aa8e86769cba4844"
|
||||
|
||||
service := NewAlicloudService(host, appCode)
|
||||
|
||||
// 测试无效的身份证号码
|
||||
name := "张三"
|
||||
invalidIdCard := "123456789"
|
||||
|
||||
fmt.Printf("测试错误响应 - 无效身份证号\n")
|
||||
fmt.Printf("姓名: %s\n", name)
|
||||
fmt.Printf("身份证: %s\n", invalidIdCard)
|
||||
|
||||
// 构建请求参数
|
||||
params := map[string]interface{}{
|
||||
"name": name,
|
||||
"idcard": invalidIdCard,
|
||||
}
|
||||
|
||||
// 调用真实API
|
||||
responseBody, err := service.CallAPI("api-mall/api/id_card/check", params)
|
||||
if err != nil {
|
||||
fmt.Printf("网络请求错误: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 解析响应
|
||||
var response struct {
|
||||
Msg string `json:"msg"`
|
||||
Code int `json:"code"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(responseBody, &response); err != nil {
|
||||
fmt.Printf("响应解析失败: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否为错误响应
|
||||
if response.Code != 200 {
|
||||
fmt.Printf("预期的错误响应: code=%d, msg=%s\n", response.Code, response.Msg)
|
||||
fmt.Printf("错误处理正确: API返回错误状态\n")
|
||||
} else {
|
||||
t.Error("期望返回错误,但实际成功")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user