67 lines
2.4 KiB
Go
67 lines
2.4 KiB
Go
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==×tamp=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)
|
||
}
|
||
}
|