X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/6b21fcf78372995c6d8130c63f2f8aa2609bf7fe..6844f8c992ec4e276a3a0d93b544de0127eebbd2:/telegram_api_test.go?ds=sidebyside diff --git a/telegram_api_test.go b/telegram_api_test.go index 7cdee66..98aa232 100644 --- a/telegram_api_test.go +++ b/telegram_api_test.go @@ -112,7 +112,7 @@ func TestSendCallsTimeOutOnAStalledConnection(t *testing.T) { api.sendTimeout = 50 * time.Millisecond start := time.Now() err := tc.send(t.Context(), api) - require.ErrorIs(t, err, errTelegramNetwork) + require.EqualError(t, err, "no answer in 50ms") require.Less(t, time.Since(start), 5*time.Second) require.NotContains(t, err.Error(), telegramTestToken) require.NotContains(t, err.Error(), server.URL) @@ -123,6 +123,7 @@ func TestSendCallsTimeOutOnAStalledConnection(t *testing.T) { api.sendTimeout = time.Hour ctx, cancel := context.WithCancel(t.Context()) time.AfterFunc(50*time.Millisecond, cancel) + start = time.Now() err = tc.send(ctx, api) require.Error(t, err) @@ -149,31 +150,34 @@ func TestBotErrorsDoNotHoldTheToken(t *testing.T) { } }, retry: true, - errorText: "no valid answer", + errorText: "no answer", }, { name: "rate limit waits as asked", 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}}`) }, retry: true, wait: 3 * time.Second, - errorText: "answered 429", + errorText: "429", }, { name: "server error page is retried", reply: func(w http.ResponseWriter) { w.WriteHeader(http.StatusBadGateway) + _, _ = io.WriteString(w, "bad gateway") }, retry: true, - errorText: "answered 502: Bad Gateway", + errorText: "502 Bad Gateway", }, { name: "token echoed in a description is hidden", reply: func(w http.ResponseWriter) { w.WriteHeader(http.StatusUnauthorized) + _, _ = io.WriteString(w, `{"ok":false,"error_code":401,"description":"Unauthorized: bot`+telegramTestToken+`"}`) }, retry: false, @@ -183,30 +187,33 @@ func TestBotErrorsDoNotHoldTheToken(t *testing.T) { name: "bad request is a refusal", reply: func(w http.ResponseWriter) { w.WriteHeader(http.StatusBadRequest) + _, _ = io.WriteString(w, `{"ok":false,"error_code":400,"description":"Bad Request: can't parse"}`) }, retry: false, rejected: true, - errorText: "answered 400: Bad Request: can't parse", + errorText: "400 Bad Request: can't parse", }, { name: "unknown method is a refusal", reply: func(w http.ResponseWriter) { w.WriteHeader(http.StatusNotFound) + _, _ = io.WriteString(w, `{"ok":false,"error_code":404,"description":"Not Found"}`) }, retry: false, rejected: true, - errorText: "answered 404: Not Found", + errorText: "404 Not Found", }, { name: "not found page of a proxy is not a refusal", reply: func(w http.ResponseWriter) { w.WriteHeader(http.StatusNotFound) + _, _ = io.WriteString(w, "not found") }, retry: false, - errorText: "answered 404: Not Found", + errorText: "404 Not Found", }, { name: "broken answer is retried", @@ -214,13 +221,13 @@ func TestBotErrorsDoNotHoldTheToken(t *testing.T) { _, _ = io.WriteString(w, `{"ok":`) }, retry: true, - errorText: "decode answer", + errorText: "invalid JSON", }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { tc.reply(w) })) t.Cleanup(server.Close) @@ -241,6 +248,6 @@ func TestBotErrorsDoNotHoldTheToken(t *testing.T) { server.Close() _, err := newTelegramAPI(server.URL, telegramTestToken).GetUpdates(t.Context(), 0) - require.ErrorIs(t, err, errTelegramNetwork) + require.ErrorAs(t, err, new(*TelegramNetworkError)) require.NotContains(t, err.Error(), telegramTestToken) }