Skip to content

Commit

Permalink
fix(cli): header overrides actually work and there is a ete test (#4693)
Browse files Browse the repository at this point in the history
  • Loading branch information
dsinghvi authored Sep 18, 2024
1 parent 6221ad4 commit 3addbb8
Show file tree
Hide file tree
Showing 10 changed files with 324 additions and 1 deletion.
18 changes: 18 additions & 0 deletions packages/cli/cli/versions.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
- changelogEntry:
- summary: |
The API V2 configuration (in beta) now supports global header overrides.
This fixes a bug where those header overrides were getting dropped in
certain cases.
```yml generators.yml
api:
headers:
X-API-VERSION: string
specs:
- openapi: /path/to/openapi
overrides: /path/to/overrides
```
type: fix
irVersion: 53
version: 0.42.8

- changelogEntry:
- summary: |
The API V2 configuration (in beta) now supports global header
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,105 @@ service:
]
`;
exports[`validate header overrides > header-overrides 1`] = `
[
{
"contents": "types:
Pet:
properties:
id: long
name: string
tag: optional<string>
source:
openapi: openapi/openapi.yml
Pets: list<Pet>
Error:
properties:
code: integer
message: string
source:
openapi: openapi/openapi.yml
",
"name": "__package__.yml",
"type": "file",
},
{
"contents": "name: api
error-discrimination:
strategy: status-code
display-name: Swagger Petstore
environments:
Default: http://petstore.swagger.io/v1
default-environment: Default
headers:
X-Dummy-Header: optional<string>
",
"name": "api.yml",
"type": "file",
},
{
"contents": "imports:
root: __package__.yml
service:
auth: false
base-path: ''
endpoints:
listPets:
path: /pets
method: GET
auth: false
display-name: List all pets
request:
name: ListPetsRequest
query-parameters:
limit:
type: optional<integer>
docs: How many items to return at one time (max 100)
response:
docs: A paged array of pets
type: root.Pets
examples:
- response:
body:
- id: 1000000
name: name
tag: tag
createPets:
path: /pets
method: POST
auth: false
display-name: Create a pet
examples:
- {}
showPetById:
path: /pets/{petId}
method: GET
auth: false
path-parameters:
petId:
type: string
docs: The id of the pet to retrieve
display-name: Info for a specific pet
response:
docs: Expected response to a valid request
type: root.Pet
examples:
- path-parameters:
petId: petId
response:
body:
id: 1000000
name: name
tag: tag
source:
openapi: openapi/openapi.yml
",
"name": "pets.yml",
"type": "file",
},
]
`;
exports[`validate namespaced API > namespaced 1`] = `
[
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
types:
Pet:
properties:
id: long
name: string
tag: optional<string>
source:
openapi: openapi/openapi.yml
Pets: list<Pet>
Error:
properties:
code: integer
message: string
source:
openapi: openapi/openapi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name: api
error-discrimination:
strategy: status-code
display-name: Swagger Petstore
environments:
Default: http://petstore.swagger.io/v1
default-environment: Default
headers:
X-Dummy-Header: optional<string>
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
imports:
root: __package__.yml
service:
auth: false
base-path: ''
endpoints:
listPets:
path: /pets
method: GET
auth: false
display-name: List all pets
request:
name: ListPetsRequest
query-parameters:
limit:
type: optional<integer>
docs: How many items to return at one time (max 100)
response:
docs: A paged array of pets
type: root.Pets
examples:
- response:
body:
- id: 1000000
name: name
tag: tag
createPets:
path: /pets
method: POST
auth: false
display-name: Create a pet
examples:
- {}
showPetById:
path: /pets/{petId}
method: GET
auth: false
path-parameters:
petId:
type: string
docs: The id of the pet to retrieve
display-name: Info for a specific pet
response:
docs: Expected response to a valid request
type: root.Pet
examples:
- path-parameters:
petId: petId
response:
body:
id: 1000000
name: name
tag: tag
source:
openapi: openapi/openapi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"version": "*",
"organization": "fern"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
api:
headers:
X-Dummy-Header: optional<string>
specs:
- openapi: openapi/openapi.yml
groups: {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: http://petstore.swagger.io/v1
paths:
/pets:
get:
summary: List all pets
operationId: listPets
tags:
- pets
parameters:
- name: limit
in: query
description: How many items to return at one time (max 100)
required: false
schema:
type: integer
maximum: 100
format: int32
responses:
"200":
description: A paged array of pets
headers:
x-next:
description: A link to the next page of responses
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Pets"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
post:
summary: Create a pet
operationId: createPets
tags:
- pets
responses:
"201":
description: Null response
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/pets/{petId}:
get:
summary: Info for a specific pet
operationId: showPetById
tags:
- pets
parameters:
- name: petId
in: path
required: true
description: The id of the pet to retrieve
schema:
type: string
responses:
"200":
description: Expected response to a valid request
content:
application/json:
schema:
$ref: "#/components/schemas/Pet"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
components:
schemas:
Pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
Pets:
type: array
maxItems: 100
items:
$ref: "#/components/schemas/Pet"
Error:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ describe("validate namespaced API from Cohere", () => {
itFixture("namespaced-fleshedout");
});

describe("validate header overrides", () => {
itFixture("header-overrides");
});

function itFixture(fixtureName: string) {
it(
// eslint-disable-next-line jest/valid-title
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ export class OSSWorkspace extends AbstractAPIWorkspace<OSSWorkspace.Settings> {
: undefined,
globalHeaderOverrides:
this.generatorsConfiguration?.api?.headers != null
? this.generatorsConfiguration?.api?.headers
? { ...this.generatorsConfiguration?.api }
: undefined,
taskContext: context,
ir: openApiIr,
Expand Down

0 comments on commit 3addbb8

Please sign in to comment.