worker/tests/smtp_test.go
pasha1coil e46acea3f1
Some checks failed
Deploy / CreateImage (push) Successful in 2m55s
Deploy / ValidateConfig (push) Successful in 27s
Deploy / MigrateDatabase (push) Failing after 57s
Deploy / DeployService (push) Has been skipped
fix var imgs
2025-06-29 18:08:11 +03:00

295 lines
7.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tests
import (
"context"
_ "embed"
"encoding/json"
"fmt"
"gitea.pena/SQuiz/common/clients"
"gitea.pena/SQuiz/common/dal"
"gitea.pena/SQuiz/common/model"
"gitea.pena/SQuiz/worker/internal/answerwc"
senders2 "gitea.pena/SQuiz/worker/internal/senders"
"github.com/gofiber/fiber/v2"
"github.com/pioz/faker"
"github.com/stretchr/testify/assert"
"io/ioutil"
"os"
"strings"
"testing"
"time"
)
//go:embed mail/to_client.tmpl
var toClientTemplate string
//go:embed mail/reminder.tmpl
var reminderTemplate string
//go:embed mail/client_tg.tmpl
var tgClientTemplate string
func TestProcessMessageToSMTP(t *testing.T) {
clientDeps := clients.Deps{
SmtpHost: "connect.mailclient.bz",
SmtpPort: "587",
SmtpSender: "skeris@mailing.pena.digital",
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send",
FiberClient: &fiber.Client{},
}
client := clients.NewSmtpClient(clientDeps)
recipient := "pashamullin2001@gmail.com"
subject := "Test"
data := senders2.TemplateData{
QuizConfig: model.ResultInfo{
Theme: "<h1>Taemplste Quiz</h1>",
},
AnswerContent: model.ResultContent{
Name: "<a>Pasha</a>",
Phone: "<div>+723456789<div",
Email: "test@example.com",
//Adress: "chtoto tam",
Telegram: "<br>@test</br>",
Wechat: "<span>test_wechat</span>",
Viber: "<span><span>+723456789</span></span>",
Vk: "<body>test_vk<body>",
Skype: "test_skype",
Whatsup: "test_whatsup",
Messenger: "test_messenger",
},
AllAnswers: []model.ResultAnswer{
{AnswerID: 1, QuestionID: 1, Content: "`{\"Image\":\"https://s3.timeweb.cloud/3c580be9-cf31f296-d055-49cf-b39e-30c7959dc17b/squizimages/e0927ded-5c4c-4d45-a5ba-c2e938362ffa/co0sejfg4n3c73d5umd0\",\"Description\":\"Да\"}`", CreatedAt: time.Now()},
{AnswerID: 2, QuestionID: 2, Content: "`ыв`,`вв`", CreatedAt: time.Now()},
{AnswerID: 3, QuestionID: 3, Content: "From a friend", CreatedAt: time.Now()},
{AnswerID: 4, QuestionID: 4, Content: `{"Image":"static.tildacdn.com/tild6335-6331-4539-a664-376366653534/_problembocom.jpg","Description":"Gekon"}`, CreatedAt: time.Now()},
},
QuestionsMap: map[uint64]string{
1: "?",
2: "How did you hear about us?",
3: "que 3",
4: "que 4",
},
AnswerTime: time.Now().Format("Monday, 2 January 2006 г., 15:04 UTC-07:00"),
}
mailSender := senders2.NewMailLeadSender(client)
err := mailSender.SendMailWithAttachment(recipient, subject, toClientTemplate, data, nil)
if err != nil {
t.Errorf("Error sending email: %v", err)
}
}
func TestProcessReminderToClient(t *testing.T) {
clientDeps := clients.Deps{
SmtpHost: "connect.mailclient.bz",
SmtpPort: "587",
SmtpSender: "skeris@mailing.pena.digital",
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
FiberClient: &fiber.Client{},
}
client := clients.NewSmtpClient(clientDeps)
recipient := "mullinp@internet.ru"
subject := "Test Reminder"
quizConfig := model.ResultInfo{
ReplName: "Test Quiz",
Reply: "mullinp@internet.ru",
Theme: "Reminder Theme",
}
mailSender := senders2.NewMailLeadSender(client)
err := mailSender.SendMailWithAttachment(recipient, subject, reminderTemplate, senders2.TemplateData{
QuizConfig: quizConfig,
AnswerContent: model.ResultContent{},
AllAnswers: []model.ResultAnswer{},
QuestionsMap: nil,
}, nil)
if err != nil {
t.Errorf("Error sending email: %v", err)
}
}
func TestProcessMessageToClient(t *testing.T) {
smtpData := clients.Deps{
SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send",
SmtpHost: "connect.mailclient.bz",
SmtpPort: "587",
SmtpSender: "skeris@mailing.pena.digital",
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
FiberClient: &fiber.Client{},
}
mailClient := clients.NewSmtpClient(smtpData)
mailSender := senders2.NewMailLeadSender(mailClient)
tgSender, err := senders2.NewTgSender("6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8")
assert.NoError(t, err)
ctx := context.Background()
repo, err := dal.New(ctx, "host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable", nil)
assert.NoError(t, err)
deps := answerwc.DepsSendToClient{
Redis: nil,
Dal: repo,
LeadSenders: []senders2.LeadSender{mailSender, tgSender},
CustomerService: nil,
}
errChan := make(chan<- error)
w := answerwc.NewSendToClient(deps, errChan)
quizConfig := model.QuizConfig{
Mailing: model.ResultInfo{
Theme: faker.String(),
},
}
questionsMap := map[uint64]string{
1: faker.String(),
2: faker.String(),
}
account := model.Account{
UserID: "64f2cd7a7047f28fdabf6d9e",
}
file, err := os.Open("img_contents.json")
if err != nil {
fmt.Println("Failed to open file", err)
return
}
defer file.Close()
bytes, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println("Failed to read file", err)
return
}
var items []model.ImageContent
err = json.Unmarshal(bytes, &items)
if err != nil {
fmt.Println("Failed to unmarshal JSON:", err)
return
}
fmt.Println(len(items))
allAnswers := []model.ResultAnswer{
{
Content: "",
AnswerID: 2,
QuestionID: 2,
},
}
answersIMG := model.ResultAnswer{
Content: "",
AnswerID: 1,
QuestionID: 1,
}
var imageLinks []string
for _, item := range items {
str, err := json.Marshal(item)
if err != nil {
fmt.Println("error marshal item to str:", err)
return
}
imageLinks = append(imageLinks, fmt.Sprintf("`%s`", string(str)))
}
fmt.Println(len(imageLinks))
answersIMG.Content = strings.Join(imageLinks, ",")
allAnswers = append(allAnswers, answersIMG)
answerContent := model.ResultContent{
Name: "Pasha",
Phone: "+723456789",
Email: "test@example.com",
//Adress: "chtoto tam",
Telegram: "@test",
Wechat: "test_wechat",
Viber: "+723456789",
Vk: "test_vk",
Skype: "test_skype",
Whatsup: "test_whatsup",
Messenger: "test_messenger",
}
answerTime := time.Now()
err = w.ProcessMessageToClient(ctx, answerwc.DepsProcessMsgToClient{
QuizConfig: quizConfig,
QuestionsMap: questionsMap,
Account: account,
AllAnswers: allAnswers,
AnswerContent: answerContent,
AnswerTime: answerTime,
Quiz: &model.Quiz{
Id: 26324,
AccountId: "64f2cd7a7047f28fdabf6d9e",
},
})
err = w.ProcessReminderToClient(ctx, account, model.QuizConfig{
Mailing: model.ResultInfo{
When: "email",
Theme: fmt.Sprintf("не удалось отправить заявку по опросу\"%s\"", "test"),
Reply: "noreply@pena.digital",
ReplName: "Reminder",
},
}, &model.Quiz{
Id: 26324,
AccountId: "64f2cd7a7047f28fdabf6d9e",
})
assert.NoError(t, err)
}
//func TestManyImg(t *testing.T) {
// smtpData := clients.Deps{
// SmtpApiUrl: "https://api.smtp.bz/v1/smtp/send",
// SmtpHost: "connect.mailclient.bz",
// SmtpPort: "587",
// SmtpSender: "skeris@mailing.pena.digital",
// ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
// FiberClient: &fiber.Client{},
// }
//
// mailClient := clients.NewSmtpClient(smtpData)
// mailSender := senders.NewMailLeadSender(mailClient)
// tgSender, err := senders.NewTgSender("6712573453:AAFqTOsgwe_j48ZQ1GzWKQDT5Nwr-SAWjz8")
// assert.NoError(t, err)
//
// ctx := context.Background()
//
// repo, err := dal.New(ctx, "host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable", nil)
// assert.NoError(t, err)
//
// deps := answerwc.DepsSendToClient{
// Redis: nil,
// Dal: repo,
// LeadSenders: []senders.LeadSender{mailSender, tgSender},
// CustomerService: nil,
// }
//
// errChan := make(chan<- error)
//
// w := answerwc.NewSendToClient(deps, errChan)
//}