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)) }