gogcli/internal/googleapi/errors_test.go
2025-12-26 19:20:53 +01:00

52 lines
1.7 KiB
Go

package googleapi
import (
"errors"
"strings"
"testing"
"time"
)
func TestErrors_IsHelpers(t *testing.T) {
base := errors.New("base")
if !IsAuthRequiredError(&AuthRequiredError{Service: "gmail", Email: "a@b.com", Cause: base}) {
t.Fatalf("expected IsAuthRequiredError")
}
if !IsRateLimitError(&RateLimitError{RetryAfter: time.Second, Retries: 2}) {
t.Fatalf("expected IsRateLimitError")
}
if !IsCircuitBreakerError(&CircuitBreakerError{}) {
t.Fatalf("expected IsCircuitBreakerError")
}
if !IsQuotaExceededError(&QuotaExceededError{Resource: "gmail"}) {
t.Fatalf("expected IsQuotaExceededError")
}
if !IsNotFoundError(&NotFoundError{Resource: "msg", ID: "id"}) {
t.Fatalf("expected IsNotFoundError")
}
if !IsPermissionDeniedError(&PermissionDeniedError{Resource: "file", Action: "read"}) {
t.Fatalf("expected IsPermissionDeniedError")
}
}
func TestErrors_Messages(t *testing.T) {
if got := (&RateLimitError{RetryAfter: 2 * time.Second, Retries: 3}).Error(); !strings.Contains(got, "retry after 2s") {
t.Fatalf("unexpected: %q", got)
}
if got := (&RateLimitError{Retries: 1}).Error(); !strings.Contains(got, "after 1 retries") {
t.Fatalf("unexpected: %q", got)
}
if got := (&NotFoundError{Resource: "file"}).Error(); got != "file not found" {
t.Fatalf("unexpected: %q", got)
}
if got := (&NotFoundError{Resource: "file", ID: "id1"}).Error(); got != "file not found: id1" {
t.Fatalf("unexpected: %q", got)
}
if got := (&PermissionDeniedError{Resource: "file"}).Error(); got != "permission denied for file" {
t.Fatalf("unexpected: %q", got)
}
if got := (&PermissionDeniedError{Resource: "file", Action: "delete"}).Error(); got != "permission denied: cannot delete file" {
t.Fatalf("unexpected: %q", got)
}
}