Files

67 lines
2.4 KiB
Go
Raw Permalink Normal View History

2026-07-22 12:16:27 +08:00
package rongxing
import (
"crypto/rand"
"crypto/rsa"
"testing"
)
func TestMD5Upper(t *testing.T) {
if got := MD5Upper(""); got != "D41D8CD98F00B204E9800998ECF8427E" {
t.Fatalf("MD5Upper empty = %s", got)
}
if got := MD5Upper(" hello "); got != MD5Upper("hello") {
t.Fatalf("MD5Upper should trim spaces")
}
}
func TestBuildSignContent(t *testing.T) {
params := map[string]interface{}{
"account": "haiyukeji",
"password": "cGFzcw==",
"appId": "hykj",
"timestamp": int64(1710000000000),
"sign": "ignored",
}
got := BuildSignContent(params)
want := "account=haiyukeji&appId=hykj&password=cGFzcw==&timestamp=1710000000000"
if got != want {
t.Fatalf("BuildSignContent mismatch\ngot: %s\nwant: %s", got, want)
}
}
func TestSignSHA256WithRSA(t *testing.T) {
key, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
t.Fatalf("generate key: %v", err)
}
sig, err := SignSHA256WithRSA("account=a&appId=b", key)
if err != nil {
t.Fatalf("sign: %v", err)
}
if sig == "" {
t.Fatal("empty signature")
}
}
func TestParsePrivateKeyPKCS8Base64(t *testing.T) {
// 与对接文档一致的 PKCS#8 Base64无 PEM 头)
raw := "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI1eWDx325U/DCpaw+394555voDNwKyfg6rAIBYGSmJDmUyCi6c8LeqVtYnmtUMJrTDrfUWFG7jQ+mQy65rXMY7zrZ0Cc+orP7uRgrvCBsH1775KuSji8TkVbEBw+Upro7FuNkutBItNxZCvcpFpNqNBwCCkCK1xscVN8gErxc7/AgMBAAECgYAL/ZVHWU7Ni5TyrLmTBwAjWD+RX9V4iGkb3QLiGCayZS05NGNq/ytrCvqxMSY6HIKAZ6Du+hmXvr+JXll/slvyGs1ETOgDi7563RAT/2TVicZF16IM2d7nhK6eTJffmiG2ZZC8n043F0QNposleEIMhM251iT1xiwZfg+QqHB0EQJBAI+BFcbYl+Vxpxdouvuwq11gYMTNepcGdY3OaPZzW4sQA41s+6aZhZ7tAk65Tk7PgLfdU2yimBKNkJstlSUT1w8CQQD8MKjAi5wngnDO+04n5mt5EotpNy6xpvkQP2izL0FWKmvwZtc0ihJpxa64vfo4+1jE8YXx1/qGe16A15fmywkRAkAbImVjvAC8ucjGfF8eyEEe3uJtVA0iEW6Y6bafIyDkIpsJWtoanlzNuDL/f7p23HWSTp8/o17t4ya8sNnKsP2xAkEArIQc7JqUl/KDeRQwwtq9anVlKPS23JB8kMDPvsP0zhz2+d1gGnDZZ8HzZC2RnqlScGdIWciFeLmsTDcvkpISAQJANaQU0uKBPvgMx+uedbCbn9MfYmpEiONHblrINH8WAa3Z1pr7R0wBUog1fEWimnxOX5wGwsGmDOMw5B+4xJ4Zfw=="
key, err := ParsePrivateKey(raw)
if err != nil {
t.Fatalf("ParsePrivateKey: %v", err)
}
if key == nil {
t.Fatal("nil key")
}
if _, err := SignSHA256WithRSA("account=haiyukeji&appId=hykj", key); err != nil {
t.Fatalf("sign with parsed key: %v", err)
}
}
func TestEncodePasswordBase64(t *testing.T) {
if got := EncodePasswordBase64("haiyukeji@123"); got != "aGFpeXVrZWppQDEyMw==" {
t.Fatalf("EncodePasswordBase64 = %s", got)
}
}