Files
chis_osi/source/health_record_test.go
T

59 lines
1.8 KiB
Go
Raw Normal View History

package source
import (
"encoding/json"
"os"
"strings"
"testing"
)
func TestDecodeHealthRecordTaskKeepsBusinessFieldsAndDropsCredentials(t *testing.T) {
raw, err := os.ReadFile("testdata/health_record.json")
if err != nil {
t.Fatalf("ReadFile: %v", err)
}
task, err := DecodeHealthRecordTask(raw)
if err != nil {
t.Fatalf("DecodeHealthRecordTask: %v", err)
}
if task.ArchID != "ARCH-001" || task.BusinessID != "BUSINESS-001" || task.EMPIID != "EMPI-001" || task.PHRID != "PHR-001" {
t.Fatalf("identifiers = %#v", task)
}
if task.SourceRecordID() != "ARCH-001" {
t.Fatalf("SourceRecordID = %q", task.SourceRecordID())
}
if task.Doctor.DoctorID != "DOC001" || task.Doctor.RealName != "测试医生" {
t.Fatalf("doctor = %#v", task.Doctor)
}
if task.Record.IDCard != "440000********1234" || task.Record.AddressNumber != "1号" {
t.Fatalf("record = %#v", task.Record)
}
sanitized, err := json.Marshal(task)
if err != nil {
t.Fatalf("Marshal: %v", err)
}
if strings.Contains(string(sanitized), "sxtAccount") || strings.Contains(string(sanitized), "sxtPassword") || strings.Contains(string(sanitized), "IGNORED_") {
t.Fatalf("credentials survived decoding: %s", sanitized)
}
}
func TestDecodeHealthRecordTaskRejectsMissingStableArchiveID(t *testing.T) {
raw := []byte(`{"code":200,"data":{"record":{"idCard":"440000********1234"},"businessId":"BUSINESS-001"}}`)
_, err := DecodeHealthRecordTask(raw)
if err == nil || !strings.Contains(err.Error(), "archId is required") {
t.Fatalf("error = %v", err)
}
}
func TestDecodeHealthRecordTaskRejectsFailedPHISResponse(t *testing.T) {
raw := []byte(`{"code":500,"msg":"failed","data":{"archId":"ARCH-001"}}`)
_, err := DecodeHealthRecordTask(raw)
if err == nil || !strings.Contains(err.Error(), "phis response code=500") {
t.Fatalf("error = %v", err)
}
}