@@ -0,0 +1,109 @@
|
||||
package laosiji_app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEncryptDecryptRoundTrip(t *testing.T) {
|
||||
const (
|
||||
key = "1234567890abcdef"
|
||||
input = `{"uid":204,"name":"测试用户"}`
|
||||
)
|
||||
encrypted, err := encryptBase64(input, key)
|
||||
if err != nil {
|
||||
t.Fatalf("encryptBase64() error = %v", err)
|
||||
}
|
||||
decrypted, err := decryptBase64(encrypted, key)
|
||||
if err != nil {
|
||||
t.Fatalf("decryptBase64() error = %v", err)
|
||||
}
|
||||
if decrypted != input {
|
||||
t.Fatalf("decryptBase64() = %q, want %q", decrypted, input)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetUserName(t *testing.T) {
|
||||
if got := GetUserName("test", 204, 123); got != "TEST-204_123" {
|
||||
t.Fatalf("test username = %q", got)
|
||||
}
|
||||
if got := GetUserName("prod", 204, 123); got != "JHA-204_123" {
|
||||
t.Fatalf("prod username = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfigured(t *testing.T) {
|
||||
original := cfg
|
||||
t.Cleanup(func() { cfg = original })
|
||||
|
||||
Init(Config{})
|
||||
if Configured() {
|
||||
t.Fatal("empty config must not be configured")
|
||||
}
|
||||
Init(Config{AppID: "app", APIKey: "1234567890abcdef", APIURL: "https://example.com/"})
|
||||
if !Configured() {
|
||||
t.Fatal("complete config must be configured")
|
||||
}
|
||||
if cfg.APIURL != "https://example.com" {
|
||||
t.Fatalf("APIURL = %q", cfg.APIURL)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAiMateURLRequestAndResponse(t *testing.T) {
|
||||
const key = "1234567890abcdef"
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/lsjapi/aiGirlFriend/auth" {
|
||||
t.Errorf("path = %q", r.URL.Path)
|
||||
}
|
||||
if r.Header.Get("appid") != "test-app" {
|
||||
t.Errorf("appid = %q", r.Header.Get("appid"))
|
||||
}
|
||||
body, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
t.Errorf("read request: %v", err)
|
||||
return
|
||||
}
|
||||
plainText, err := decryptBase64(string(body), key)
|
||||
if err != nil {
|
||||
t.Errorf("decrypt request: %v", err)
|
||||
return
|
||||
}
|
||||
var request map[string]interface{}
|
||||
if err = json.Unmarshal([]byte(plainText), &request); err != nil {
|
||||
t.Errorf("unmarshal request: %v", err)
|
||||
return
|
||||
}
|
||||
if request["username"] != "TEST-204_99" || request["asset"] != "12.30" {
|
||||
t.Errorf("request = %#v", request)
|
||||
}
|
||||
|
||||
data, err := encryptBase64(`{"auth_url":"https://example.com/ai"}`, key)
|
||||
if err != nil {
|
||||
t.Errorf("encrypt response: %v", err)
|
||||
return
|
||||
}
|
||||
_ = json.NewEncoder(w).Encode(Response{Status: "y", Data: data})
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
original := cfg
|
||||
t.Cleanup(func() { cfg = original })
|
||||
Init(Config{AppID: "test-app", APIKey: key, APIURL: server.URL})
|
||||
|
||||
response, err := GetAiMateURL(context.Background(), GetAiMateURLReq{
|
||||
Username: "TEST-204_99",
|
||||
Asset: "12.30",
|
||||
Currency: "CNY",
|
||||
Theme: "dark",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("GetAiMateURL() error = %v", err)
|
||||
}
|
||||
if response.AuthURL != "https://example.com/ai" {
|
||||
t.Fatalf("AuthURL = %q", response.AuthURL)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user