From 46273e394b3b0c09b139bc72d32e7710eb3035a0 Mon Sep 17 00:00:00 2001 From: EwenQuim Date: Wed, 12 Feb 2025 10:45:55 +0100 Subject: [PATCH] feat: Silence unexported fields warning --- openapi.go | 3 +++ openapi_test.go | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/openapi.go b/openapi.go index 0c4b7b86..8c0ac08b 100644 --- a/openapi.go +++ b/openapi.go @@ -392,6 +392,9 @@ func parseStructTags(t reflect.Type, schemaRef *openapi3.SchemaRef) { for i := range t.NumField() { field := t.Field(i) + if !field.IsExported() { + continue + } if field.Anonymous { fieldType := field.Type parseStructTags(fieldType, schemaRef) diff --git a/openapi_test.go b/openapi_test.go index 9cbe7e60..75d6782a 100644 --- a/openapi_test.go +++ b/openapi_test.go @@ -626,3 +626,18 @@ func TestDeclareCustom200Response(t *testing.T) { require.NotNil(t, openAPIResponse.Value.Content.Get("image/png")) require.Equal(t, "Generated image", *openAPIResponse.Value.Description) } + +func TestPrivateFieldInStruct(t *testing.T) { + type User struct { + ID int `json:"id"` + Name string `json:"name" validate:"required,min=1,max=100" example:"Napoleon"` + password string // example of private field + } + + handler := slogassert.New(t, slog.LevelWarn, nil) + + s := NewServer(WithLogHandler(handler)) + Post(s, "/user", func(c ContextWithBody[User]) (User, error) { return c.Body() }) + + handler.AssertEmpty() // No warning "Property not found in schema" for the 'password' field +}