73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
package smsc
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"math/rand"
|
||
"os"
|
||
"path/filepath"
|
||
"testing"
|
||
)
|
||
|
||
func generateCode() string {
|
||
return fmt.Sprintf("%04d", rand.Intn(10000))
|
||
}
|
||
|
||
func loadAPIKey(t *testing.T) string {
|
||
dirPath, err := os.Getwd()
|
||
if err != nil {
|
||
t.Fatalf("Не удалось получить текущий каталог: %v", err)
|
||
}
|
||
data, err := os.ReadFile(filepath.Join(dirPath, "key.test"))
|
||
if err != nil {
|
||
t.Fatalf("Не удалось прочитать файл key.test: %v", err)
|
||
}
|
||
return string(data)
|
||
}
|
||
|
||
func TestLoadAPIKey(t *testing.T) {
|
||
key := loadAPIKey(t)
|
||
t.Log(key)
|
||
}
|
||
|
||
func TestSendSMS(t *testing.T) {
|
||
// Загружаем API-ключ из файла
|
||
apiKey := loadAPIKey(t)
|
||
|
||
// Создаем тестовый запрос
|
||
req := RequestSMS{
|
||
ApiKey: apiKey,
|
||
Phone: "79857770038", // Замените на реальный номер телефона
|
||
Message: "Код подтверждения: " + generateCode(),
|
||
Sender: "Noglik-Market",
|
||
}
|
||
|
||
// Вызываем тестируемую функцию
|
||
resp := SendSMS(req)
|
||
|
||
// Проверяем, что нет ошибки
|
||
if resp.Error != "" {
|
||
t.Errorf("Ошибка при отправке SMS: %s", resp.Error)
|
||
}
|
||
|
||
// Проверяем, что ID и Cnt имеют ожидаемые значения (если применимо)
|
||
// Эти проверки могут быть опциональными, так как значения зависят от ответа сервера
|
||
if resp.ID == 0 {
|
||
t.Error("Ожидался ненулевой ID")
|
||
}
|
||
if resp.Cnt == 0 {
|
||
t.Error("Ожидался ненулевой Cnt")
|
||
}
|
||
|
||
printJSON(t, resp)
|
||
}
|
||
|
||
func printJSON(t *testing.T, data any) {
|
||
jsonData, err := json.MarshalIndent(data, "", " ")
|
||
if err != nil {
|
||
t.Errorf("Ошибка при преобразовании в JSON: %v", err)
|
||
return
|
||
}
|
||
fmt.Println(string(jsonData))
|
||
}
|