2026-04-28 13:46:44 +08:00

117 lines
3.2 KiB
Go

package cav2
import (
"encoding/json"
"net/http"
"net/http/httptest"
"net/url"
"testing"
)
func TestGetServiceURL(t *testing.T) {
var gotForm url.Values
signClient := NewClient("http://unused", "test-app", "test-secret")
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/open/api/data/getServiceUrl" {
t.Fatalf("unexpected path: %s", r.URL.Path)
}
if r.Method != http.MethodPost {
t.Fatalf("unexpected method: %s", r.Method)
}
if err := r.ParseForm(); err != nil {
t.Fatalf("parse form: %v", err)
}
gotForm = r.PostForm
expectedSignature := signClient.signature(r.PostForm)
if r.Header.Get("app_id") != "test-app" {
t.Fatalf("unexpected app_id: %s", r.Header.Get("app_id"))
}
if r.Header.Get("signature") != expectedSignature {
t.Fatalf("unexpected signature: %s", r.Header.Get("signature"))
}
_ = json.NewEncoder(w).Encode(map[string]interface{}{
"result_code": 0,
"result_msg": "",
"success": true,
"body": map[string]string{
"webToken": "token-1",
"url": "https://example.test/h5",
"expireTime": "2026-05-01 10:00:00",
},
})
}))
defer server.Close()
client := NewClient(server.URL, "test-app", "test-secret")
response, err := client.GetServiceURL(GetServiceURLRequest{
CertType: "Personal",
Type: "CERT_APPLY",
EntityID: "user-1",
UserName: "Alice",
UserIDCard: "123456",
UserPhone: "13800000000",
AuthMethod: "face",
})
if err != nil {
t.Fatalf("GetServiceURL error: %v", err)
}
if gotForm.Get("entityId") != "user-1" {
t.Fatalf("unexpected entityId: %s", gotForm.Get("entityId"))
}
if response.WebToken != "token-1" || response.URL != "https://example.test/h5" {
t.Fatalf("unexpected response: %+v", response)
}
}
func TestFetchH5FaceURLWithStringBody(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_ = json.NewEncoder(w).Encode(map[string]interface{}{
"result_code": 0,
"result_msg": "",
"success": true,
"body": "https://example.test/face-h5",
})
}))
defer server.Close()
client := NewClient(server.URL, "test-app", "test-secret")
link, err := client.FetchH5FaceURL(FetchH5FaceURLRequest{
CName: "Alice",
CID: "123456",
OrderNo: "order-1",
RedirectURL: "https://callback.test/result",
})
if err != nil {
t.Fatalf("FetchH5FaceURL error: %v", err)
}
if link != "https://example.test/face-h5" {
t.Fatalf("unexpected link: %s", link)
}
}
func TestCheckEnterpriseSuccessWithoutBody(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_ = json.NewEncoder(w).Encode(map[string]interface{}{
"result_code": 0,
"result_msg": "",
"success": true,
"body": nil,
})
}))
defer server.Close()
client := NewClient(server.URL, "test-app", "test-secret")
err := client.CheckEnterprise(CheckEnterpriseRequest{
CName: "法人A",
CID: "510000000000000000",
RegistrationNumber: "91510000TEST",
EnterpriseName: "测试企业",
})
if err != nil {
t.Fatalf("CheckEnterprise error: %v", err)
}
}