diff --git a/src/core/plugins/oas3/components/request-body.jsx b/src/core/plugins/oas3/components/request-body.jsx index 1be1af67c30..aa5cefdcfb4 100644 --- a/src/core/plugins/oas3/components/request-body.jsx +++ b/src/core/plugins/oas3/components/request-body.jsx @@ -135,6 +135,8 @@ const RequestBody = ({ { Map.isMap(bodyProperties) && bodyProperties.entrySeq().map(([key, prop]) => { + if (prop.get("readOnly")) return + let commonExt = showCommonExtensions ? getCommonExtensions(prop) : null const required = schemaForMediaType.get("required", List()).includes(key) const type = prop.get("type") diff --git a/test/e2e-cypress/static/documents/bugs/6158.yaml b/test/e2e-cypress/static/documents/bugs/6158.yaml new file mode 100644 index 00000000000..2acc7505df0 --- /dev/null +++ b/test/e2e-cypress/static/documents/bugs/6158.yaml @@ -0,0 +1,57 @@ +openapi: 3.0.0 +info: + title: "Swagger Test" + version: "1.0.0" +servers: + - url: https://api.example.com/v1 +paths: + /users: + get: + tags: + - User + summary: Get Users + responses: + 200: + description: User List + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + post: + tags: + - User + summary: Create a user + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User' + responses: + 201: + description: Created successfully + put: + tags: + - User + summary: Update user + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/User' + responses: + 201: + description: Created successfully +components: + schemas: + User: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + required: + - name diff --git a/test/e2e-cypress/tests/bugs/6158.js b/test/e2e-cypress/tests/bugs/6158.js new file mode 100644 index 00000000000..098af8b379e --- /dev/null +++ b/test/e2e-cypress/tests/bugs/6158.js @@ -0,0 +1,54 @@ +describe("#6158: read-only property is not hidden in `POST/PUT`", () => { + describe("POST", () => { + it("should hide property 'id'", () => { + cy.visit("/?url=/documents/bugs/6158.yaml") + .get("#operations-User-post_users") + .click() + .get(".parameters[data-property-name='id']") + .should("not.exist") + .get(".parameters[data-property-name='name']") + .should("exist") + }) + it("should hide property 'id' when trying it out", () => { + cy.visit("/?url=/documents/bugs/6158.yaml") + .get("#operations-User-post_users") + .click() + .get(".try-out__btn") + .click() + .get(".parameters[data-property-name='id']") + .should("not.exist") + .get("input[placeholder='id']") + .should("not.exist") + .get(".parameters[data-property-name='name']") + .should("exist") + .get("input[placeholder='name']") + .should("exist") + }) + }) + describe("PUT", () => { + it("should hide property 'id'", () => { + cy.visit("/?url=/documents/bugs/6158.yaml") + .get("#operations-User-put_users") + .click() + .get(".parameters[data-property-name='id']") + .should("not.exist") + .get(".parameters[data-property-name='name']") + .should("exist") + }) + it("should hide property 'id' when trying it out", () => { + cy.visit("/?url=/documents/bugs/6158.yaml") + .get("#operations-User-put_users") + .click() + .get(".try-out__btn") + .click() + .get(".parameters[data-property-name='id']") + .should("not.exist") + .get("input[placeholder='id']") + .should("not.exist") + .get(".parameters[data-property-name='name']") + .should("exist") + .get("input[placeholder='name']") + .should("exist") + }) + }) +})