package logic
import (
"bytes"
"encoding/json"
"fmt"
"fusenapi/initalize"
"fusenapi/model/gmodel"
"fusenapi/utils/wevent"
"io"
"log"
"net/http"
"net/smtp"
"reflect"
"testing"
"github.com/474420502/requests"
"github.com/google/uuid"
"github.com/gorilla/mux"
"github.com/rs/cors"
"github.com/zeromicro/go-zero/core/logx"
)
func TestEmailSend(t *testing.T) {
// 设置发件人和收件人信息
from := "support@fusenpack.com"
to := []string{"474420502@qq.com"}
// to := []string{"qq474420502@gmail.com"}
// to := []string{"outlook_7D27A8300A1B3F01@outlook.com"}
// 设置smtp服务器地址,端口和认证信息
smtpServer := "smtp.gmail.com"
auth := smtp.PlainAuth("", "support@fusenpack.com", "wfbjpdgvaozjvwah", smtpServer)
var buf bytes.Buffer
tpls.ExecuteTemplate(&buf, "test.tpl", map[string]any{
"CompanyName": "FusenPack",
})
// msg := []byte(`Subject: Password Reset Request for Your Account;
// MIME-version: 1.0;
// Content-Type: text/html; charset="UTF-8";
// From: "Fusen";
//
//
// Password Reset for Your {{.CompanyName}} Account
//
//
// Dear {{.UserName}},
// We have received your request to reset the password for your {{.CompanyName}} account.
// To proceed with the password reset, please click the button below to open the Reset Password page:
//
// Please note that this password reset confirmation link will expire in 60 minutes. If you have any further questions, feel free to reach out to us.
// Regards,
// {{.SenderName}}
// {{.SenderTitle}}
// {{.CompanyName}}
//
// `)
msg := buf.Bytes()
// 发送邮件
err := smtp.SendMail(smtpServer+":587", auth, from, to, msg)
if err != nil {
log.Fatal(err)
}
}
func TestPost(t *testing.T) {
r := mux.NewRouter()
r.HandleFunc("/aaa", func(w http.ResponseWriter, r *http.Request) {
d, _ := io.ReadAll(r.Body)
log.Println(string(d))
}).Methods("POST")
handler := cors.Default().Handler(r)
log.Println("Server listening on :2223")
log.Fatal(http.ListenAndServe(":2223", handler))
}
func TestEmailTpl(t *testing.T) {
data := map[string]string{
"CompanyName": "companyName",
"ConfirmationLink": "confirmationLink",
"SenderName": "senderName",
"SenderTitle": "senderTitle",
}
var result bytes.Buffer
err := tpls.ExecuteTemplate(&result, "email_register.tpl", data)
if err != nil {
log.Fatal(err)
}
log.Println(string(result.String()))
}
func TestSender(t *testing.T) {
traceId := uuid.NewString()
event := wevent.NewWebsocketEventSuccess(wevent.UserEmailRegister, traceId)
event.Data = wevent.DataEmailRegister{
JwtToken: traceId,
}
tp := requests.Post(fmt.Sprintf("%s/api/websocket/common_notify", "https://server.fusen.3718.cn:9900"))
tp.SetBodyJson(requests.M{
"wid": "tGyMYX9EldtsPLZTyT6PxrRgEV615CQGEiu9Sb1XrjZ4kpTjI46sQyh7kYfVlgN9uR5Uw4KDF+S62IknmaRgSMdee1QHVtCv+VEKrMF76snR04zS1ZbWZCgX5Lv2xgHz/bZBWwJF/9u6YTy2/FetGg==",
"data": event,
})
wresp, err := tp.Execute()
if err != nil {
logx.Error(err, "traceId")
return
}
result := wresp.Json()
if result.Get("code").Int() != 200 {
logx.Error(result.Get("message"))
return
}
log.Println(result)
}
func TestSql(t *testing.T) {
type MetaData struct {
Key string `gorm:"key" json:"key"`
Test string `gorm:"test" json:"test"`
}
conn := initalize.InitMysql("fsreaderwriter:XErSYmLELKMnf3Dh@tcp(fusen.cdmigcvz3rle.us-east-2.rds.amazonaws.com:3306)/fusen")
log.Println()
log.Println(conn.NamingStrategy.TableName(reflect.TypeOf(gmodel.FsUser{}).Name()))
updatesql := `UPDATE %s
SET metadata = CASE
WHEN metadata IS NULL THEN ?
ELSE JSON_MERGE_PATCH(metadata, ?)
END
WHERE id = ?;`
metadata := &MetaData{
Key: "mkey",
Test: "testv",
}
data, err := json.Marshal(metadata)
if err != nil {
logx.Error(err)
panic(err)
}
updatesql = fmt.Sprintf(updatesql, "fusen.fs_change_code")
log.Println(updatesql)
err = conn.Exec(updatesql, data, data, 6).Error
if err != nil {
logx.Error(err)
panic(err)
}
}