fix(response-body): remove download button when content is empty (#8579)

Co-authored-by: Vladimír Gorej <vladimir.gorej@gmail.com>
This commit is contained in:
Krzysztof Kowalczyk
2023-04-26 13:42:49 +02:00
committed by GitHub
parent 043d5ea455
commit cdfc4de43e
3 changed files with 26 additions and 5 deletions

View File

@@ -59,11 +59,13 @@ export default class ResponseBody extends React.PureComponent {
url = url || ""
if (
/^application\/octet-stream/i.test(contentType) ||
(headers["Content-Disposition"] && (/attachment/i).test(headers["Content-Disposition"])) ||
(headers["content-disposition"] && (/attachment/i).test(headers["content-disposition"])) ||
(headers["Content-Description"] && (/File Transfer/i).test(headers["Content-Description"])) ||
(headers["content-description"] && (/File Transfer/i).test(headers["content-description"]))) {
(/^application\/octet-stream/i.test(contentType) ||
(headers["Content-Disposition"] && /attachment/i.test(headers["Content-Disposition"])) ||
(headers["content-disposition"] && /attachment/i.test(headers["content-disposition"])) ||
(headers["Content-Description"] && /File Transfer/i.test(headers["Content-Description"])) ||
(headers["content-description"] && /File Transfer/i.test(headers["content-description"]))) &&
content.size > 0
) {
// Download
if ("Blob" in window) {

View File

@@ -39,4 +39,18 @@ describe("<ResponseBody />", function () {
console.warn(wrapper.debug())
expect(wrapper.find("highlightCodeComponent[canCopy]").length).toEqual(1)
})
it("should render Download file link for non-empty response", function () {
props.contentType = "application/octet-stream"
props.content = new Blob(["\"test\""], { type: props.contentType })
const wrapper = shallow(<ResponseBody {...props} />)
expect(wrapper.text()).toMatch(/Download file/)
})
it("should not render Download file link for empty response", function () {
props.contentType = "application/octet-stream"
props.content = new Blob()
const wrapper = shallow(<ResponseBody {...props} />)
expect(wrapper.text()).not.toMatch(/Download file/)
})
})

View File

@@ -29,6 +29,11 @@ function setUpDomEnvironment() {
}
copyProps(win, window) // use UI's built-in window wrapper
copyProps(window, global)
// https://github.com/jsdom/jsdom/issues/1721
if (typeof global.window.URL.createObjectURL === "undefined") {
Object.defineProperty(global.window.URL, "createObjectURL", { value: () => "data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==" })
}
}
setUpDomEnvironment()