fix(api): correct OpenAPI iterator examples

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-03 04:50:54 +00:00
parent 0ec5f20bf5
commit 3896896090
2 changed files with 64 additions and 4 deletions

View file

@ -207,8 +207,12 @@ func (c *OpenAPIClient) Operations() ([]OpenAPIOperation, error) {
//
// Example:
//
// for op := range client.OperationsIter() {
// _ = op
// ops, err := client.OperationsIter()
// if err != nil {
// panic(err)
// }
// for op := range ops {
// fmt.Println(op.OperationID, op.PathTemplate)
// }
func (c *OpenAPIClient) OperationsIter() (iter.Seq[OpenAPIOperation], error) {
operations, err := c.Operations()
@ -244,8 +248,12 @@ func (c *OpenAPIClient) Servers() ([]string, error) {
//
// Example:
//
// for server := range client.ServersIter() {
// _ = server
// servers, err := client.ServersIter()
// if err != nil {
// panic(err)
// }
// for server := range servers {
// fmt.Println(server)
// }
func (c *OpenAPIClient) ServersIter() (iter.Seq[string], error) {
servers, err := c.Servers()

View file

@ -272,6 +272,58 @@ paths: {}
}
}
func TestOpenAPIClient_Good_IteratorsExposeSnapshots(t *testing.T) {
client := api.NewOpenAPIClient(api.WithSpecReader(strings.NewReader(`openapi: 3.1.0
info:
title: Test API
version: 1.0.0
servers:
- url: https://api.example.com
paths:
/users/{id}:
post:
operationId: update_user
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
`)))
operations, err := client.OperationsIter()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var operationIDs []string
for op := range operations {
operationIDs = append(operationIDs, op.OperationID)
}
if !slices.Equal(operationIDs, []string{"update_user"}) {
t.Fatalf("expected iterator to preserve operation snapshots, got %v", operationIDs)
}
servers, err := client.ServersIter()
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
var serverURLs []string
for server := range servers {
serverURLs = append(serverURLs, server)
}
if !slices.Equal(serverURLs, []string{"https://api.example.com"}) {
t.Fatalf("expected iterator to preserve server snapshots, got %v", serverURLs)
}
}
func TestOpenAPIClient_Good_CallHeadOperationWithRequestBody(t *testing.T) {
errCh := make(chan error, 1)
mux := http.NewServeMux()