diff options
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") + } +} |
