Feature proposal: official scripted HTTP test client for offline SDK tests
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Empieza inspeccionando la abstracción central HttpClient existente y su implementación con OkHttp para entender la interfaz disponible para un transporte de prueba. La propuesta describe una primera versión de amplio alcance que cubre respuestas guionizadas, aserciones de solicitudes, streaming, fallos, cancelación y finalización de interacciones; para darla por terminada harían falta un alcance acordado y pruebas para los comportamientos seleccionados sin acceso a la red.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Proposal
Add a small official scripted/test HttpClient implementation so Java applications can test OpenAI SDK integration deterministically without making live network/API calls or standing up a local HTTP server.
The SDK already has a core HttpClient abstraction underneath the OkHttp implementation. A test-focused implementation could use that same boundary while remaining separate from generated resource/model code.
Conceptually:
ScriptedHttpClient http = ScriptedHttpClient.builder()
.expectRequest(request -> {
assertEquals("POST", request.method().name());
assertEquals("/v1/responses", request.path());
})
.respondJson(200, fixture("response.json"))
.build();
OpenAIClient client = OpenAIClient.builder()
.httpClient(http)
.apiKey("test")
.build();
A deliberately small first version could support:
- queueing scripted HTTP responses;
- capturing requests and asserting method/path/query/headers/body;
- ordinary JSON responses;
- SSE/streaming response fixtures;
- scripted HTTP error responses and transport failures;
- cancellation/async completion behaviour where applicable;
- request history plus a final assertion that all expected interactions occurred;
- no network access and no dependency on a real API key.
Why this is useful
SDK users often need to test their own integration logic around request construction, streaming, retries/errors, cancellation, and response handling. Today that generally requires a third-party HTTP mock server, custom fake transport, or live API calls.
A first-party scripted transport would let tests exercise the real generated OpenAI client and serialization/parsing layers while replacing only the HTTP boundary. It would also provide a stable testing primitive that follows SDK changes rather than forcing applications to maintain their own transport doubles.
Scope / compatibility
This should be Java 8-compatible and can live in a small optional testing module/package so normal runtime users do not pay for additional dependencies or custom-code surface unnecessarily.
This is not a production traffic recorder/replayer. Responses and expected requests are explicitly authored test fixtures, which avoids accidentally capturing prompts, credentials, or production data.
I searched current issues for mock/test transports, offline testing, fixtures, record/replay, and MockWebServer-style support and did not find an equivalent proposal.
Given that much of this SDK is generated and the custom-code budget is intentionally limited, I am proposing this as a bounded helper around the existing HttpClient abstraction rather than changes throughout the generated API surface.
- Lenguaje dominante
- Kotlin
- Estrellas
- 1.5k
- Forks
- 265
- Merge medio
- 12 h 3 min
- PR fusionados (30 d)
- 131
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openai/openai-java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openai/openai-java#886 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
openai/openai-java#802 · 2 comentarios · 3 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 74/100
openai/openai-java#973 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
openai/openai-java#952 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
openai/openai-java#889 ·
Los mantenedores suelen responder en 1 día
Todos los issues de openai/openai-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
mobile-dev-inc/Maestro#3646 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
GetStream/stream-chat-android#6762 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SimonHalvdansson/Harmonic-HN#363 ·