package dingbot import ( "bytes" "github.com/eryajf/chatgpt-dingtalk/config" "image" "image/color" "image/png" "os" "testing" ) func TestUploadMedia_Pass_WithValidConfig(t *testing.T) { // 设置了钉钉 ClientID 和 ClientSecret 的环境变量才执行以下测试,用于快速验证钉钉图片上传能力 clientId, clientSecret := os.Getenv("DINGTALK_CLIENT_ID_FOR_TEST"), os.Getenv("DINGTALK_CLIENT_SECRET_FOR_TEST") if len(clientId) <= 0 || len(clientSecret) <= 0 { return } credentials := []config.Credential{ config.Credential{ ClientID: clientId, ClientSecret: clientSecret, }, } client := NewDingTalkClientManager(&config.Configuration{Credentials: credentials}).GetClientByOAuthClientID(clientId) var imageContent []byte { // 生成一张用于测试的图片 img := image.NewRGBA(image.Rect(0, 0, 200, 100)) blue := color.RGBA{0, 0, 255, 255} for x := 0; x < img.Bounds().Dx(); x++ { for y := 0; y < img.Bounds().Dy(); y++ { img.Set(x, y, blue) } } buf := new(bytes.Buffer) err := png.Encode(buf, img) if err != nil { return } // get the byte array from the buffer imageContent = buf.Bytes() } result, err := client.UploadMedia(imageContent, "filename.png", "image", "image/png") if err != nil { t.Errorf("upload media failed, err=%s", err.Error()) return } if result.MediaID == "" { t.Errorf("upload media failed, empty media id") return } }