@@ -2,6 +2,7 @@ import { describe, expect, test } from "bun:test";
22import {
33 detectEndpointKind ,
44 resolveChatCompletionsUrl ,
5+ resolveResponsesBaseUrl ,
56 resolveResponsesUrl ,
67} from "../../src/azure/endpoint" ;
78
@@ -124,3 +125,46 @@ describe("resolveResponsesUrl", () => {
124125 expect ( url ) . toBe ( "https://myresource.openai.azure.com/openai/v1/responses" ) ;
125126 } ) ;
126127} ) ;
128+
129+ describe ( "resolveResponsesBaseUrl" , ( ) => {
130+ test ( "standard endpoint" , ( ) => {
131+ const url = resolveResponsesBaseUrl (
132+ "https://myresource.openai.azure.com" ,
133+ "2025-04-01-preview" ,
134+ ) ;
135+ expect ( url ) . toBe ( "https://myresource.openai.azure.com/openai/v1/responses" ) ;
136+ } ) ;
137+
138+ test ( "foundry endpoint includes api-version" , ( ) => {
139+ const url = resolveResponsesBaseUrl (
140+ "https://myproject.services.ai.azure.com" ,
141+ "2025-04-01-preview" ,
142+ ) ;
143+ expect ( url ) . toContain ( "api-version=2025-04-01-preview" ) ;
144+ expect ( url ) . toContain ( "/openai/responses" ) ;
145+ } ) ;
146+
147+ test ( "full_url with /responses strips trailing path" , ( ) => {
148+ const url = resolveResponsesBaseUrl (
149+ "https://myresource.openai.azure.com/openai/v1/responses" ,
150+ "ignored" ,
151+ ) ;
152+ expect ( url ) . toBe ( "https://myresource.openai.azure.com/openai/v1/responses" ) ;
153+ } ) ;
154+
155+ test ( "full_url without /responses falls back to standard format" , ( ) => {
156+ const url = resolveResponsesBaseUrl (
157+ "https://myresource.openai.azure.com/openai/deployments/gpt-4o/chat/completions" ,
158+ "ignored" ,
159+ ) ;
160+ expect ( url ) . toBe ( "https://myresource.openai.azure.com/openai/v1/responses" ) ;
161+ } ) ;
162+
163+ test ( "full_url with /openai/deployments/ but no /responses falls back" , ( ) => {
164+ const url = resolveResponsesBaseUrl (
165+ "https://myresource.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2025-03-01" ,
166+ "ignored" ,
167+ ) ;
168+ expect ( url ) . toBe ( "https://myresource.openai.azure.com/openai/v1/responses" ) ;
169+ } ) ;
170+ } ) ;
0 commit comments