From ff496fa5bd1f3d5afacdcd186016ca1f671f7579 Mon Sep 17 00:00:00 2001 From: kyle Date: Sat, 23 Feb 2019 17:00:29 -0800 Subject: [PATCH] fix: type safety for operation summary handling (via #5191) * fix: gracefully handle non-string operation summaries * use lodash for more summary type safety --- src/core/components/operation-summary.jsx | 3 ++- test/e2e-cypress/static/documents/bugs/5188.yaml | 13 ++++++++++--- test/e2e-cypress/tests/bugs/5188.js | 12 ++++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/core/components/operation-summary.jsx b/src/core/components/operation-summary.jsx index 5eb40e38..bed0b3b4 100644 --- a/src/core/components/operation-summary.jsx +++ b/src/core/components/operation-summary.jsx @@ -2,6 +2,7 @@ import React, { PureComponent } from "react" import PropTypes from "prop-types" import { Iterable, List } from "immutable" import ImPropTypes from "react-immutable-proptypes" +import toString from "lodash/toString" export default class OperationSummary extends PureComponent { @@ -63,7 +64,7 @@ export default class OperationSummary extends PureComponent { {!showSummary ? null :
- {(resolvedSummary || summary).toString()} + {toString(resolvedSummary || summary)}
} diff --git a/test/e2e-cypress/static/documents/bugs/5188.yaml b/test/e2e-cypress/static/documents/bugs/5188.yaml index 814b95bb..cb4d6205 100644 --- a/test/e2e-cypress/static/documents/bugs/5188.yaml +++ b/test/e2e-cypress/static/documents/bugs/5188.yaml @@ -8,10 +8,17 @@ paths: /pet: get: tags: - - pet + - default summary: - $ref: - operationId: addPet + whatever: 123 + operationId: objectSummary + responses: + '405': + description: Invalid input + post: + tags: + - default + operationId: noSummary responses: '405': description: Invalid input \ No newline at end of file diff --git a/test/e2e-cypress/tests/bugs/5188.js b/test/e2e-cypress/tests/bugs/5188.js index 80050bbf..b9c8f18c 100644 --- a/test/e2e-cypress/tests/bugs/5188.js +++ b/test/e2e-cypress/tests/bugs/5188.js @@ -2,9 +2,17 @@ describe("#5188: non-string operation summary value", () => { it("should gracefully handle an object value for an operation summary", () => { cy .visit("?url=/documents/bugs/5188.yaml") - .get("#operations-pet-addPet") + .get("#operations-default-objectSummary") .click() .get(".opblock-summary-description") .contains("[object Object]") - }) + }) + it("should gracefully handle a missing value for an operation summary", () => { + cy + .visit("?url=/documents/bugs/5188.yaml") + .get("#operations-default-noSummary") + .click() + // check for response rendering; makes sure the Operation itself rendered + .contains("Invalid input") + }) }) -- GitLab