Skip to content

Commit fb46d44

Browse files
authored
Merge pull request #1629 from lwojciechowski/main
fix: HasParams for deepObject query params with additionalProperties
2 parents 0b1ca6d + 41642b4 commit fb46d44

22 files changed

+1461
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
openapi: 3.1.0
2+
info:
3+
title: "Deep Object Additional Properties Test"
4+
version: 0.0.1
5+
6+
paths:
7+
/query:
8+
get:
9+
operationId: queryWithAdditionalProperties
10+
parameters:
11+
- name: object
12+
in: query
13+
style: deepObject
14+
explode: true
15+
schema:
16+
type: object
17+
additionalProperties:
18+
type: string
19+
responses:
20+
"200":
21+
description: ok
22+
content:
23+
application/json:
24+
schema:
25+
type: object
26+
additionalProperties:
27+
type: string
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package integration
2+
3+
import (
4+
"context"
5+
"net/http/httptest"
6+
"testing"
7+
8+
"github.com/stretchr/testify/require"
9+
10+
api "github.com/ogen-go/ogen/internal/integration/test_deep_object_additional_properties"
11+
)
12+
13+
type testDeepObjectAdditionalProperties struct {
14+
api.UnimplementedHandler
15+
params api.QueryWithAdditionalPropertiesParams
16+
}
17+
18+
func (s *testDeepObjectAdditionalProperties) QueryWithAdditionalProperties(ctx context.Context, params api.QueryWithAdditionalPropertiesParams) (api.QueryWithAdditionalPropertiesOK, error) {
19+
s.params = params
20+
obj, ok := params.Object.Get()
21+
if !ok {
22+
return api.QueryWithAdditionalPropertiesOK{}, nil
23+
}
24+
return api.QueryWithAdditionalPropertiesOK(obj), nil
25+
}
26+
27+
func TestDeepObjectAdditionalProperties(t *testing.T) {
28+
handler := &testDeepObjectAdditionalProperties{}
29+
srv, err := api.NewServer(handler)
30+
require.NoError(t, err)
31+
32+
s := httptest.NewServer(srv)
33+
defer s.Close()
34+
35+
client, err := api.NewClient(s.URL)
36+
require.NoError(t, err)
37+
38+
ctx := context.Background()
39+
40+
t.Run("WithValues", func(t *testing.T) {
41+
input := api.QueryWithAdditionalPropertiesObject{
42+
"foo": "bar",
43+
"baz": "qux",
44+
}
45+
resp, err := client.QueryWithAdditionalProperties(ctx, api.QueryWithAdditionalPropertiesParams{
46+
Object: api.NewOptQueryWithAdditionalPropertiesObject(input),
47+
})
48+
require.NoError(t, err)
49+
require.Equal(t, "bar", map[string]string(resp)["foo"])
50+
require.Equal(t, "qux", map[string]string(resp)["baz"])
51+
})
52+
53+
t.Run("WithoutValues", func(t *testing.T) {
54+
resp, err := client.QueryWithAdditionalProperties(ctx, api.QueryWithAdditionalPropertiesParams{})
55+
require.NoError(t, err)
56+
require.Empty(t, resp)
57+
})
58+
}

internal/integration/generate.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ package integration
3737
//go:generate go run ../../cmd/ogen -v --clean --target test_mixed_discrimination ../../_testdata/positive/mixed_discrimination.json
3838
//go:generate go run ../../cmd/ogen -v --clean --target test_value_based_discrimination ../../_testdata/positive/value_based_discrimination.json
3939
//go:generate go run ../../cmd/ogen -v --clean --config _config/additionalPropertiesPatternProperties.yml --target test_additionalpropertiespatternproperties ../../_testdata/positive/additionalPropertiesPatternProperties.yml
40+
//go:generate go run ../../cmd/ogen -v --clean --target test_deep_object_additional_properties ../../_testdata/positive/deepObjectAdditionalProperties.yml
4041
//go:generate go run ../../cmd/ogen -v --clean --config _config/client_options.yml --target test_client_options ../../_testdata/positive/client_options.json
4142
//go:generate go run ../../cmd/ogen -v --clean --target test_cors ../../_testdata/positive/cors.yaml
4243
//go:generate go run ../../cmd/ogen -v --clean --target test_additional_operations ../../_testdata/positive/additional_operations.yml

0 commit comments

Comments
 (0)