初始化仓库
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package weixin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAesECBPaddedSize(t *testing.T) {
|
||||
if aesECBPaddedSize(0) != 16 {
|
||||
t.Fatalf("0 -> %d", aesECBPaddedSize(0))
|
||||
}
|
||||
if aesECBPaddedSize(1) != 16 {
|
||||
t.Fatalf("1 -> %d", aesECBPaddedSize(1))
|
||||
}
|
||||
if aesECBPaddedSize(16) != 32 {
|
||||
t.Fatalf("16 -> %d (pkcs7 adds a full block when aligned)", aesECBPaddedSize(16))
|
||||
}
|
||||
if aesECBPaddedSize(17) != 32 {
|
||||
t.Fatalf("17 -> %d", aesECBPaddedSize(17))
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncryptDecryptAESECB_RoundTrip(t *testing.T) {
|
||||
key := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
|
||||
plain := []byte("hello weixin cdn")
|
||||
ct, err := encryptAESECB(plain, key)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := decryptAESECB(ct, key)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !bytes.Equal(got, plain) {
|
||||
t.Fatalf("got %q want %q", got, plain)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseAesKey_Raw16(t *testing.T) {
|
||||
key := []byte{9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6}
|
||||
b64 := base64.StdEncoding.EncodeToString(key)
|
||||
got, err := parseAesKey(b64, "test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !bytes.Equal(got, key) {
|
||||
t.Fatal("mismatch")
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseAesKey_HexWrapped(t *testing.T) {
|
||||
raw, _ := hex.DecodeString("00112233445566778899aabbccddeeff")
|
||||
// Simulate API: base64(ASCII hex string)
|
||||
wrapped := base64.StdEncoding.EncodeToString([]byte("00112233445566778899aabbccddeeff"))
|
||||
got, err := parseAesKey(wrapped, "test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !bytes.Equal(got, raw) {
|
||||
t.Fatalf("got %x want %x", got, raw)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildCdnDownloadURL(t *testing.T) {
|
||||
u := buildCdnDownloadURL("abc+def", "https://example/c2c")
|
||||
if u != "https://example/c2c/download?encrypted_query_param=abc%2Bdef" {
|
||||
t.Fatalf("got %q", u)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectImageMime(t *testing.T) {
|
||||
png := []byte{0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a}
|
||||
if detectImageMime(png) != "image/png" {
|
||||
t.Fatalf("png: %s", detectImageMime(png))
|
||||
}
|
||||
if detectImageMime([]byte{0xff, 0xd8, 0xff}) != "image/jpeg" {
|
||||
t.Fatal("jpeg magic")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user