diff options
Diffstat (limited to 'internal/httpclient/client_test.go')
| -rw-r--r-- | internal/httpclient/client_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/httpclient/client_test.go b/internal/httpclient/client_test.go new file mode 100644 index 0000000..a8b2216 --- /dev/null +++ b/internal/httpclient/client_test.go @@ -0,0 +1,44 @@ +package httpclient + +import ( + "net/http" + "testing" + "time" +) + +func TestNewRequest_SetsDeadline(t *testing.T) { + req, cancel, err := NewRequest(http.MethodGet, "https://example.com", nil) + if err != nil { + t.Fatalf("NewRequest returned error: %v", err) + } + defer cancel() + + deadline, ok := req.Context().Deadline() + if !ok { + t.Fatal("expected request context to include a deadline") + } + + remaining := time.Until(deadline) + if remaining <= 0 { + t.Fatalf("expected future deadline, got %v", remaining) + } + if remaining > DefaultTimeout+time.Second { + t.Fatalf("expected deadline near %v, got %v", DefaultTimeout, remaining) + } +} + +func TestNewRequest_InvalidMethod(t *testing.T) { + req, cancel, err := NewRequest("bad method", "https://example.com", nil) + if cancel != nil { + defer cancel() + } + if err == nil { + t.Fatalf("expected invalid method error, got request %#v", req) + } +} + +func TestDo_UsesSharedTimeout(t *testing.T) { + if defaultClient.Timeout != DefaultTimeout { + t.Fatalf("expected shared timeout %v, got %v", DefaultTimeout, defaultClient.Timeout) + } +} |
