(tests): PollTimeout round-trip, uploader ResponseError, panic ErrorEvent, status secret compare, parseCommand + botname
Golang lint / lint (push) Successful in 2m42s
Golang lint / lint (pull_request) Successful in 2m42s

(doc): TODO test checklist closed
This commit is contained in:
2026-05-20 12:42:36 +03:00
parent 8a3f2cedf2
commit 950ce6b88c
6 changed files with 217 additions and 6 deletions
+52
View File
@@ -1,6 +1,7 @@
package tgapi
import (
"errors"
"fmt"
"io"
"mime"
@@ -104,6 +105,57 @@ func TestUploaderEncodesJSONFieldsAndLeavesAcceptEncodingToHTTPTransport(t *test
}
}
func TestUploaderSurfacesResponseErrorForTelegramFailure(t *testing.T) {
const responseBody = `{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}`
client := &http.Client{
Transport: roundTripFunc(func(_ *http.Request) (*http.Response, error) {
return &http.Response{
StatusCode: http.StatusOK,
Header: http.Header{"Content-Type": []string{"application/json"}},
Body: io.NopCloser(strings.NewReader(responseBody)),
}, nil
}),
}
api := NewAPI(
NewAPIOpts("token").
SetAPIURL("https://example.test").
SetHTTPClient(client),
)
defer func() {
if err := api.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
uploader := NewUploader(api)
defer func() {
if err := uploader.Close(); err != nil {
t.Fatalf("Close returned error: %v", err)
}
}()
_, err := uploader.SendPhoto(
UploadPhoto{ChatID: 42},
NewUploaderFile("photo.jpg", []byte("img")),
)
if err == nil {
t.Fatal("expected error, got nil")
}
var respErr *ResponseError
if !errors.As(err, &respErr) {
t.Fatalf("expected *ResponseError, got %T: %v", err, err)
}
if respErr.Code != 400 {
t.Fatalf("unexpected ResponseError.Code: got %d want 400", respErr.Code)
}
if !strings.Contains(respErr.Description, "chat not found") {
t.Fatalf("unexpected ResponseError.Description: %q", respErr.Description)
}
}
func TestNewUploaderFileDetectsFileTypeCaseInsensitively(t *testing.T) {
tests := []struct {
name string