2023-08-25 07:37:35 +00:00
|
|
|
package logic
|
|
|
|
|
|
|
|
import (
|
2023-09-04 03:32:17 +00:00
|
|
|
"bytes"
|
2023-09-08 10:56:17 +00:00
|
|
|
"encoding/json"
|
2023-08-25 07:37:35 +00:00
|
|
|
"fmt"
|
2023-09-08 10:56:17 +00:00
|
|
|
"fusenapi/initalize"
|
|
|
|
"fusenapi/model/gmodel"
|
2023-08-25 07:37:35 +00:00
|
|
|
"fusenapi/utils/wevent"
|
2023-09-05 07:00:45 +00:00
|
|
|
"io"
|
2023-08-25 07:37:35 +00:00
|
|
|
"log"
|
2023-09-05 07:00:45 +00:00
|
|
|
"net/http"
|
2023-09-05 10:24:20 +00:00
|
|
|
"net/smtp"
|
2023-09-08 10:56:17 +00:00
|
|
|
"reflect"
|
2023-08-25 07:37:35 +00:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/474420502/requests"
|
|
|
|
"github.com/google/uuid"
|
2023-09-05 07:00:45 +00:00
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"github.com/rs/cors"
|
2023-08-25 07:37:35 +00:00
|
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
|
|
)
|
|
|
|
|
2023-09-05 10:24:20 +00:00
|
|
|
func TestEmailSend(t *testing.T) {
|
|
|
|
|
|
|
|
// 设置发件人和收件人信息
|
|
|
|
from := "support@fusenpack.com"
|
|
|
|
to := []string{"474420502@qq.com"}
|
|
|
|
|
|
|
|
// 设置smtp服务器地址,端口和认证信息
|
|
|
|
smtpServer := "smtp.gmail.com"
|
|
|
|
|
|
|
|
auth := smtp.PlainAuth("", "support@fusenpack.com", "wfbjpdgvaozjvwah", smtpServer)
|
|
|
|
|
2023-09-05 16:06:10 +00:00
|
|
|
msg := []byte(`Subject: Password Reset Request for Your Account;
|
|
|
|
MIME-version: 1.0;
|
|
|
|
Content-Type: text/html; charset="UTF-8";
|
|
|
|
From: "Fusen";
|
|
|
|
|
|
|
|
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Password Reset for Your {{.CompanyName}} Account</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<p>Dear {{.UserName}},</p>
|
|
|
|
|
|
|
|
<p>We have received your request to reset the password for your {{.CompanyName}} account.</p>
|
|
|
|
|
|
|
|
<p>To proceed with the password reset, please click the button below to open the Reset Password page:</p>
|
|
|
|
|
|
|
|
<div style="margin: 1em 0;">
|
|
|
|
<a href="{{.ConfirmationLink}}" target="_blank"
|
|
|
|
style="background-color: #008CBA; color: #FFFFFF; text-decoration: none; padding: 10px 15px; border-radius: 3px; display:inline-block;">
|
|
|
|
Reset Password
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>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.</p>
|
|
|
|
|
|
|
|
<p>Regards,</p>
|
|
|
|
|
|
|
|
<p>{{.SenderName}}<br>
|
|
|
|
{{.SenderTitle}}<br>
|
|
|
|
{{.CompanyName}}</p>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>`)
|
2023-09-05 10:24:20 +00:00
|
|
|
|
|
|
|
// 发送邮件
|
2023-09-05 10:32:19 +00:00
|
|
|
err := smtp.SendMail(smtpServer+":587", auth, from, to, msg)
|
2023-09-05 10:24:20 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-05 07:00:45 +00:00
|
|
|
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))
|
|
|
|
}
|
|
|
|
|
2023-09-04 03:32:17 +00:00
|
|
|
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()))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-08-25 07:37:35 +00:00
|
|
|
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)
|
|
|
|
|
|
|
|
}
|
2023-09-08 10:56:17 +00:00
|
|
|
|
|
|
|
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(conn.Model(&gmodel.FsUser{}))
|
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|