name: "refused connection is retried",
reply: func(w http.ResponseWriter) {
conn, _, err := http.NewResponseController(w).Hijack()
- if err == nil {
- _ = conn.Close()
+ if err != nil {
+ panic(err)
}
+
+ // This forced disconnect has no response or
+ // retry after close.
+ conn.Close() // nolint: errcheck
},
retry: true,
errorText: "no answer",
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusTooManyRequests)
- _, _ = io.WriteString(w, `{"ok":false,"error_code":429,"description":"Too Many Requests: retry after 3","parameters":{"retry_after":3}}`)
+ _, err := io.WriteString(w, `{"ok":false,"error_code":429,"description":"Too Many Requests: retry after 3","parameters":{"retry_after":3}}`)
+ if err != nil {
+ panic(err)
+ }
},
retry: true,
wait: 3 * time.Second,
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusBadGateway)
- _, _ = io.WriteString(w, "<html>bad gateway</html>")
+ _, err := io.WriteString(w, "<html>bad gateway</html>")
+ if err != nil {
+ panic(err)
+ }
},
retry: true,
errorText: "502 Bad Gateway",
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusUnauthorized)
- _, _ = io.WriteString(w, `{"ok":false,"error_code":401,"description":"Unauthorized: bot`+telegramTestToken+`"}`)
+ _, err := io.WriteString(w, `{"ok":false,"error_code":401,"description":"Unauthorized: bot`+telegramTestToken+`"}`)
+ if err != nil {
+ panic(err)
+ }
},
retry: false,
errorText: "Unauthorized: botTOKEN",
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusBadRequest)
- _, _ = io.WriteString(w, `{"ok":false,"error_code":400,"description":"Bad Request: can't parse"}`)
+ _, err := io.WriteString(w, `{"ok":false,"error_code":400,"description":"Bad Request: can't parse"}`)
+ if err != nil {
+ panic(err)
+ }
},
retry: false,
rejected: true,
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusNotFound)
- _, _ = io.WriteString(w, `{"ok":false,"error_code":404,"description":"Not Found"}`)
+ _, err := io.WriteString(w, `{"ok":false,"error_code":404,"description":"Not Found"}`)
+ if err != nil {
+ panic(err)
+ }
},
retry: false,
rejected: true,
reply: func(w http.ResponseWriter) {
w.WriteHeader(http.StatusNotFound)
- _, _ = io.WriteString(w, "<html>not found</html>")
+ _, err := io.WriteString(w, "<html>not found</html>")
+ if err != nil {
+ panic(err)
+ }
},
retry: false,
errorText: "404 Not Found",
{
name: "broken answer is retried",
reply: func(w http.ResponseWriter) {
- _, _ = io.WriteString(w, `{"ok":`)
+ _, err := io.WriteString(w, `{"ok":`)
+ if err != nil {
+ panic(err)
+ }
},
retry: true,
errorText: "invalid JSON",
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
tc.reply(w)
}))
+
t.Cleanup(server.Close)
err := newTelegramAPI(server.URL, telegramTestToken).SendMessage(t.Context(), telegramTestOwner, "hi", nil)