84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package yushan
 | ||
| 
 | ||
| import (
 | ||
| 	"testing"
 | ||
| 	"time"
 | ||
| )
 | ||
| 
 | ||
| func TestGenerateRequestID(t *testing.T) {
 | ||
| 	service := &YushanService{
 | ||
| 		config: YushanConfig{
 | ||
| 			ApiKey: "test_api_key_123",
 | ||
| 		},
 | ||
| 	}
 | ||
| 	
 | ||
| 	id1 := service.generateRequestID()
 | ||
| 	
 | ||
| 	// 等待一小段时间确保时间戳不同
 | ||
| 	time.Sleep(time.Millisecond)
 | ||
| 	
 | ||
| 	id2 := service.generateRequestID()
 | ||
| 	
 | ||
| 	if id1 == "" || id2 == "" {
 | ||
| 		t.Error("请求ID生成失败")
 | ||
| 	}
 | ||
| 	
 | ||
| 	if id1 == id2 {
 | ||
| 		t.Error("不同时间生成的请求ID应该不同")
 | ||
| 	}
 | ||
| 	
 | ||
| 	// 验证ID格式
 | ||
| 	if len(id1) < 20 { // yushan_ + 8位十六进制 + 其他
 | ||
| 		t.Errorf("请求ID长度不足,实际: %s", id1)
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| func TestGenerateRandomString(t *testing.T) {
 | ||
| 	service := &YushanService{}
 | ||
| 	
 | ||
| 	str1, err := service.GenerateRandomString()
 | ||
| 	if err != nil {
 | ||
| 		t.Fatalf("生成随机字符串失败: %v", err)
 | ||
| 	}
 | ||
| 	
 | ||
| 	str2, err := service.GenerateRandomString()
 | ||
| 	if err != nil {
 | ||
| 		t.Fatalf("生成随机字符串失败: %v", err)
 | ||
| 	}
 | ||
| 	
 | ||
| 	if str1 == "" || str2 == "" {
 | ||
| 		t.Error("随机字符串为空")
 | ||
| 	}
 | ||
| 	
 | ||
| 	if str1 == str2 {
 | ||
| 		t.Error("两次生成的随机字符串应该不同")
 | ||
| 	}
 | ||
| 	
 | ||
| 	// 验证长度(16字节 = 32位十六进制字符)
 | ||
| 	if len(str1) != 32 || len(str2) != 32 {
 | ||
| 		t.Error("随机字符串长度应该是32位")
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| func TestIsJSON(t *testing.T) {
 | ||
| 	testCases := []struct {
 | ||
| 		input    string
 | ||
| 		expected bool
 | ||
| 	}{
 | ||
| 		{"{}", true},
 | ||
| 		{"[]", true},
 | ||
| 		{"{\"key\": \"value\"}", true},
 | ||
| 		{"[1, 2, 3]", true},
 | ||
| 		{"invalid json", false},
 | ||
| 		{"", false},
 | ||
| 		{"{invalid}", false},
 | ||
| 	}
 | ||
| 	
 | ||
| 	for _, tc := range testCases {
 | ||
| 		result := IsJSON(tc.input)
 | ||
| 		if result != tc.expected {
 | ||
| 			t.Errorf("输入: %s, 期望: %v, 实际: %v", tc.input, tc.expected, result)
 | ||
| 		}
 | ||
| 	}
 | ||
| }
 |