summaryrefslogtreecommitdiff
path: root/internal/httpclient/client_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/httpclient/client_test.go')
-rw-r--r--internal/httpclient/client_test.go44
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)
+ }
+}