All checks were successful
Server Check Build (NixCN CMS) TeamCity build finished
Signed-off-by: Asai Neko <sugar@sne.moe>
66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package kyc
|
||
|
||
import (
|
||
"strings"
|
||
"testing"
|
||
|
||
"github.com/stretchr/testify/assert"
|
||
"github.com/stretchr/testify/require"
|
||
)
|
||
|
||
func TestCNRidMD5AliEncValid(t *testing.T) {
|
||
kyc := &CNRidInfo{
|
||
LegalName: "张三",
|
||
ResidentId: "110101199001011234",
|
||
}
|
||
result, err := CNRidMD5AliEnc(kyc)
|
||
require.NoError(t, err)
|
||
require.NotNil(t, result)
|
||
|
||
assert.Equal(t, "md5", result.ParamType)
|
||
// First Chinese char (张) should be MD5-hashed, remaining "三" stays plain.
|
||
// Verify the result contains the remaining character(s).
|
||
assert.True(t, strings.HasSuffix(result.UserName, "三"),
|
||
"UserName should end with remaining name chars, got %q", result.UserName)
|
||
|
||
// ResidentId: first 6 plain + middle md5 + last 4 plain
|
||
assert.True(t, strings.HasPrefix(result.IdentifyNum, "110101"),
|
||
"IdentifyNum should start with first 6 digits, got %q", result.IdentifyNum)
|
||
assert.True(t, strings.HasSuffix(result.IdentifyNum, "1234"),
|
||
"IdentifyNum should end with last 4 digits, got %q", result.IdentifyNum)
|
||
}
|
||
|
||
func TestCNRidMD5AliEncShortName(t *testing.T) {
|
||
kyc := &CNRidInfo{
|
||
LegalName: "张", // only 1 char – should fail
|
||
ResidentId: "110101199001011234",
|
||
}
|
||
_, err := CNRidMD5AliEnc(kyc)
|
||
require.Error(t, err)
|
||
assert.Contains(t, err.Error(), "2 Chinese characters")
|
||
}
|
||
|
||
func TestCNRidMD5AliEncShortResidentId(t *testing.T) {
|
||
kyc := &CNRidInfo{
|
||
LegalName: "张三",
|
||
ResidentId: "12345", // too short
|
||
}
|
||
_, err := CNRidMD5AliEnc(kyc)
|
||
require.Error(t, err)
|
||
assert.Contains(t, err.Error(), "18 characters")
|
||
}
|
||
|
||
func TestCNRidMD5AliEncDeterministicMiddleHash(t *testing.T) {
|
||
kyc := &CNRidInfo{
|
||
LegalName: "李四",
|
||
ResidentId: "110101199001011234",
|
||
}
|
||
r1, err1 := CNRidMD5AliEnc(kyc)
|
||
r2, err2 := CNRidMD5AliEnc(kyc)
|
||
require.NoError(t, err1)
|
||
require.NoError(t, err2)
|
||
// MD5 is deterministic
|
||
assert.Equal(t, r1.IdentifyNum, r2.IdentifyNum)
|
||
assert.Equal(t, r1.UserName, r2.UserName)
|
||
}
|