diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-19 21:58:20 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-19 21:58:20 +0300 |
| commit | baaa2a95b323296992bcce9c8cdc789c1c52d917 (patch) | |
| tree | dbb2f8a231c1827cb571a1733abd5f7c66d31f4f /internal/httpctx/httpctx_test.go | |
| parent | a87e799634280e2b52a5fcacafc44cb28a0d288e (diff) | |
u4: add core infrastructure scaffolding
Diffstat (limited to 'internal/httpctx/httpctx_test.go')
| -rw-r--r-- | internal/httpctx/httpctx_test.go | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/internal/httpctx/httpctx_test.go b/internal/httpctx/httpctx_test.go new file mode 100644 index 0000000..ffad68c --- /dev/null +++ b/internal/httpctx/httpctx_test.go @@ -0,0 +1,81 @@ +package httpctx + +import ( + "context" + "net/http" + "testing" + "time" + + "google.golang.org/genai" +) + +func TestWithTimeoutUnlessSet_AlreadyHasDeadline(t *testing.T) { + t.Parallel() + + parent, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + + ctx, childCancel := WithTimeoutUnlessSet(parent, time.Nanosecond) + defer childCancel() + + if ctx != parent { + t.Fatal("expected same context when parent already has deadline") + } +} + +func TestWithTimeoutUnlessSet_NoDeadline(t *testing.T) { + t.Parallel() + + ctx, cancel := WithTimeoutUnlessSet(context.Background(), 50*time.Millisecond) + defer cancel() + + deadline, ok := ctx.Deadline() + if !ok { + t.Fatal("expected deadline") + } + if time.Until(deadline) > time.Second { + t.Fatalf("deadline too far: %v", deadline) + } +} + +func TestWithTimeoutUnlessSet_NilUsesBackground(t *testing.T) { + t.Parallel() + + ctx, cancel := WithTimeoutUnlessSet(nil, 50*time.Millisecond) + defer cancel() + + if err := ctx.Err(); err != nil { + t.Fatalf("context should not be done: %v", err) + } +} + +func TestNewGenAIClientAppliesDefaultHTTPClient(t *testing.T) { + t.Parallel() + + customClient := &http.Client{Timeout: time.Second} + cfg := &genai.ClientConfig{ + APIKey: "test-key", + } + + client, err := NewGenAIClient(context.Background(), cfg) + if err != nil { + t.Fatalf("NewGenAIClient() error = %v", err) + } + if client == nil { + t.Fatal("NewGenAIClient() client = nil") + } + if cfg.HTTPClient != nil { + t.Fatalf("NewGenAIClient() mutated input config HTTPClient = %#v, want nil", cfg.HTTPClient) + } + + cfg2 := &genai.ClientConfig{ + APIKey: "test-key", + HTTPClient: customClient, + } + if _, err := NewGenAIClient(context.Background(), cfg2); err != nil { + t.Fatalf("NewGenAIClient() error = %v", err) + } + if cfg2.HTTPClient != customClient { + t.Fatal("NewGenAIClient() should preserve caller HTTPClient") + } +} |
