diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddWebhook/WebhookConstants.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddWebhook/WebhookConstants.tsx index a83df29b33c..d95d6ae0fdf 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddWebhook/WebhookConstants.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddWebhook/WebhookConstants.tsx @@ -22,6 +22,6 @@ export const UPDATE_EVENTS_DEFAULT_VALUE = { }; export const DELETE_EVENTS_DEFAULT_VALUE = { - eventType: '"entityDeleted"', + eventType: 'entityDeleted', entities: ['*', 'table', 'topic', 'dashboard', 'pipeline'], }; diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/AddWebhookPage/AddWebhookPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/AddWebhookPage/AddWebhookPage.component.tsx index 5a62d6f8679..47e2d3ce40a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/AddWebhookPage/AddWebhookPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/AddWebhookPage/AddWebhookPage.component.tsx @@ -11,7 +11,7 @@ * limitations under the License. */ -import { AxiosError } from 'axios'; +import { AxiosError, AxiosResponse } from 'axios'; import { LoadingState } from 'Models'; import React, { FunctionComponent, useState } from 'react'; import { useHistory } from 'react-router-dom'; @@ -43,12 +43,16 @@ const AddWebhookPage: FunctionComponent = () => { const handleSave = (data: CreateWebhook) => { setStatus('waiting'); addWebhook(data) - .then(() => { - setStatus('success'); - setTimeout(() => { - setStatus('initial'); - goToWebhooks(); - }, 500); + .then((res: AxiosResponse) => { + if (res.data) { + setStatus('success'); + setTimeout(() => { + setStatus('initial'); + goToWebhooks(); + }, 500); + } else { + throw jsonData['api-error-messages']['unexpected-error']; + } }) .catch((err: AxiosError) => { showErrorToast(err, jsonData['api-error-messages']['unexpected-error']); diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.component.tsx index f07871026bf..1262c97266e 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.component.tsx @@ -11,7 +11,7 @@ * limitations under the License. */ -import { AxiosError } from 'axios'; +import { AxiosError, AxiosResponse } from 'axios'; import { LoadingState } from 'Models'; import React, { FunctionComponent, useEffect, useState } from 'react'; import { useHistory, useParams } from 'react-router-dom'; @@ -46,7 +46,11 @@ const EditWebhookPage: FunctionComponent = () => { setIsLoading(true); getWebhookByName(webhookName) .then((res) => { - setWebhookData(res.data); + if (res.data) { + setWebhookData(res.data); + } else { + throw jsonData['api-error-messages']['unexpected-error']; + } }) .catch((err: AxiosError) => { showErrorToast(err, jsonData['api-error-messages']['unexpected-error']); @@ -66,12 +70,16 @@ const EditWebhookPage: FunctionComponent = () => { setStatus('waiting'); const { name, secretKey } = webhookData || data; updateWebhook({ ...data, name, secretKey }) - .then(() => { - setStatus('success'); - setTimeout(() => { - setStatus('initial'); - goToWebhooks(); - }, 500); + .then((res: AxiosResponse) => { + if (res.data) { + setStatus('success'); + setTimeout(() => { + setStatus('initial'); + goToWebhooks(); + }, 500); + } else { + throw jsonData['api-error-messages']['unexpected-error']; + } }) .catch((err: AxiosError) => { showErrorToast(err, jsonData['api-error-messages']['unexpected-error']); @@ -82,9 +90,13 @@ const EditWebhookPage: FunctionComponent = () => { const handleDelete = (id: string) => { setDeleteStatus('waiting'); deleteWebhook(id) - .then(() => { - setDeleteStatus('initial'); - goToWebhooks(); + .then((res: AxiosResponse) => { + if (res.data) { + setDeleteStatus('initial'); + goToWebhooks(); + } else { + throw jsonData['api-error-messages']['unexpected-error']; + } }) .catch((err: AxiosError) => { showErrorToast(err, jsonData['api-error-messages']['unexpected-error']); diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.test.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.test.tsx index 43f34bb9cae..2c3a60d7dce 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/EditWebhookPage/EditWebhookPage.test.tsx @@ -134,6 +134,23 @@ describe('Test DatasetDetails page', () => { expect(addWebhookComponent).toBeInTheDocument(); }); + it('Show error message on empty response of getWebhookByName api', async () => { + (getWebhookByName as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + response: { data: '' }, + }) + ); + const { container } = render(, { + wrapper: MemoryRouter, + }); + const addWebhookComponent = await findByText( + container, + /AddWebhookComponent/i + ); + + expect(addWebhookComponent).toBeInTheDocument(); + }); + it('Show error message on failing of deleteWebhook api', async () => { (deleteWebhook as jest.Mock).mockImplementationOnce(() => Promise.reject({ @@ -150,5 +167,22 @@ describe('Test DatasetDetails page', () => { expect(addWebhookComponent).toBeInTheDocument(); }); + + it('Show error message on on empty response of deleteWebhook api', async () => { + (deleteWebhook as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + response: { data: '' }, + }) + ); + const { container } = render(, { + wrapper: MemoryRouter, + }); + const addWebhookComponent = await findByText( + container, + /AddWebhookComponent/i + ); + + expect(addWebhookComponent).toBeInTheDocument(); + }); }); });