From 07b40acdca5bda4f80cd80655736ed2713881eeb Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Mon, 13 Sep 2021 13:57:03 -0700 Subject: [PATCH 1/3] Fixed context issue --- ui/package.json | 1 + ui/src/app/App.constant.js | 10 ++++++++-- ui/src/app/App.js | 3 ++- ui/src/app/App.test.js | 6 ++++++ ui/src/app/admin/container/EditGroup.js | 3 ++- ui/src/app/admin/container/EditRole.js | 3 ++- ui/src/app/admin/container/NewGroup.js | 3 ++- ui/src/app/admin/container/NewRole.js | 3 ++- ui/src/app/admin/hoc/RoleProvider.test.js | 6 ++++++ ui/src/app/admin/hoc/RolesProvider.test.js | 6 ++++++ ui/src/app/admin/hooks.test.js | 6 ++++++ ui/src/app/core/components/Footer.test.js | 6 ++++++ ui/src/app/core/components/Header.js | 3 ++- ui/src/app/core/components/Header.test.js | 6 ++++++ ui/src/app/core/components/VersionInfo.js | 3 ++- ui/src/app/core/components/VersionInfo.test.js | 6 ++++++ ui/src/app/core/user/UserContext.test.js | 6 ++++++ ui/src/app/i18n/context/I18n.provider.test.js | 6 ++++++ ui/src/app/i18n/hooks.test.js | 5 +++++ .../component/MetadataFilterConfigurationListItem.js | 3 ++- .../EntityAttributesFilterDefinition.test.js | 7 +++++++ .../filter/definition/NameIdFilterDefinition.test.js | 7 +++++++ ui/src/app/metadata/domain/index.test.js | 6 ++++++ .../domain/provider/component/ProviderList.test.js | 6 ++++++ .../provider/definition/BaseProviderDefinition.test.js | 7 +++++++ .../DynamicHttpMetadataProviderDefinition.test.js | 8 +++++++- .../FileBackedHttpMetadataProviderDefinition.js | 3 ++- .../domain/source/definition/SourceDefinition.test.js | 6 ++++++ ui/src/app/metadata/hooks/api.test.js | 6 ++++++ ui/src/app/metadata/hooks/configuration.test.js | 6 ++++++ ui/src/app/metadata/hooks/schema.test.js | 6 ++++++ ui/src/app/metadata/view/MetadataUpload.js | 2 +- 32 files changed, 151 insertions(+), 13 deletions(-) diff --git a/ui/package.json b/ui/package.json index af87df3d6..4b40ce671 100644 --- a/ui/package.json +++ b/ui/package.json @@ -2,6 +2,7 @@ "name": "ui", "version": "0.1.0", "private": true, + "homepage": ".", "dependencies": { "@fortawesome/fontawesome-free": "^5.15.3", "@fortawesome/fontawesome-svg-core": "^1.2.35", diff --git a/ui/src/app/App.constant.js b/ui/src/app/App.constant.js index c08fda543..3b6af7f89 100644 --- a/ui/src/app/App.constant.js +++ b/ui/src/app/App.constant.js @@ -1,7 +1,13 @@ -export const API_BASE_PATH = 'api'; +export const getBasePath = () => { + const url = new URL(document.getElementsByTagName('base')[0].href); + return url.pathname?.replace(/^\/+/g, ''); -export const FILTER_PLUGIN_TYPES = ['RequiredValidUntil', 'SignatureValidation', 'EntityRoleWhiteList']; + //replace(/^\/|\/$/g, '') +}; +export const BASE_PATH = getBasePath(); +export const API_BASE_PATH = `${BASE_PATH}api`; +export const FILTER_PLUGIN_TYPES = ['RequiredValidUntil', 'SignatureValidation', 'EntityRoleWhiteList']; export default API_BASE_PATH; diff --git a/ui/src/app/App.js b/ui/src/app/App.js index e52a45f4a..ba9ced5f5 100644 --- a/ui/src/app/App.js +++ b/ui/src/app/App.js @@ -29,6 +29,7 @@ import { SessionModal } from './core/user/SessionModal'; import { Roles } from './admin/Roles'; import Button from 'react-bootstrap/Button'; import { Groups } from './admin/Groups'; +import { BASE_PATH } from './App.constant'; function App() { @@ -66,7 +67,7 @@ function App() { {(message, confirm, confirmCallback, setConfirm, getConfirmation) => - +
diff --git a/ui/src/app/App.test.js b/ui/src/app/App.test.js index 0b91c687f..3ee0682ba 100644 --- a/ui/src/app/App.test.js +++ b/ui/src/app/App.test.js @@ -2,6 +2,12 @@ import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; +jest.mock('./App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + it('renders without crashing', () => { const div = document.createElement('div'); ReactDOM.render(, div); diff --git a/ui/src/app/admin/container/EditGroup.js b/ui/src/app/admin/container/EditGroup.js index 066350356..3edbac5ec 100644 --- a/ui/src/app/admin/container/EditGroup.js +++ b/ui/src/app/admin/container/EditGroup.js @@ -11,6 +11,7 @@ import { GroupForm } from '../component/GroupForm'; import { GroupProvider } from '../hoc/GroupProvider'; import { createNotificationAction, NotificationTypes, useNotificationDispatcher } from '../../notifications/hoc/Notifications'; import { useTranslator } from '../../i18n/hooks'; +import { BASE_PATH } from '../../App.constant'; export function EditGroup() { @@ -67,7 +68,7 @@ export function EditGroup() {
{(group) => - + {(schema) => <>{group && diff --git a/ui/src/app/admin/container/EditRole.js b/ui/src/app/admin/container/EditRole.js index 16b503aed..1181b8eac 100644 --- a/ui/src/app/admin/container/EditRole.js +++ b/ui/src/app/admin/container/EditRole.js @@ -11,6 +11,7 @@ import { RoleForm } from '../component/RoleForm'; import { RoleProvider } from '../hoc/RoleProvider'; import { createNotificationAction, NotificationTypes, useNotificationDispatcher } from '../../notifications/hoc/Notifications'; import { useTranslator } from '../../i18n/hooks'; +import { BASE_PATH } from '../../App.constant'; export function EditRole() { @@ -67,7 +68,7 @@ export function EditRole() {
{(role) => - + {(schema) => <>{role && diff --git a/ui/src/app/admin/container/NewGroup.js b/ui/src/app/admin/container/NewGroup.js index 28994abd0..dfa53bfc1 100644 --- a/ui/src/app/admin/container/NewGroup.js +++ b/ui/src/app/admin/container/NewGroup.js @@ -9,6 +9,7 @@ import { GroupForm } from '../component/GroupForm'; import { createNotificationAction, NotificationTypes, useNotificationDispatcher } from '../../notifications/hoc/Notifications'; import { useTranslator } from '../../i18n/hooks'; +import { BASE_PATH } from '../../App.constant'; export function NewGroup() { const history = useHistory(); @@ -59,7 +60,7 @@ export function NewGroup() {
- + {(schema) => {(data, errors) => diff --git a/ui/src/app/admin/container/NewRole.js b/ui/src/app/admin/container/NewRole.js index 6d1abfc56..fff718ea7 100644 --- a/ui/src/app/admin/container/NewRole.js +++ b/ui/src/app/admin/container/NewRole.js @@ -9,6 +9,7 @@ import { RoleForm } from '../component/RoleForm'; import { createNotificationAction, NotificationTypes, useNotificationDispatcher } from '../../notifications/hoc/Notifications'; import { useTranslator } from '../../i18n/hooks'; +import { BASE_PATH } from '../../App.constant'; export function NewRole() { const history = useHistory(); @@ -59,7 +60,7 @@ export function NewRole() {
- + {(schema) => {(data, errors) => diff --git a/ui/src/app/admin/hoc/RoleProvider.test.js b/ui/src/app/admin/hoc/RoleProvider.test.js index a7d3347b4..480118e94 100644 --- a/ui/src/app/admin/hoc/RoleProvider.test.js +++ b/ui/src/app/admin/hoc/RoleProvider.test.js @@ -5,6 +5,12 @@ import {RoleProvider} from './RoleProvider'; import {useRole} from '../hooks'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('../hooks'); describe('RoleProvider component', () => { diff --git a/ui/src/app/admin/hoc/RolesProvider.test.js b/ui/src/app/admin/hoc/RolesProvider.test.js index 11c01481e..65cc3ee22 100644 --- a/ui/src/app/admin/hoc/RolesProvider.test.js +++ b/ui/src/app/admin/hoc/RolesProvider.test.js @@ -6,6 +6,12 @@ import { RolesProvider } from './RolesProvider'; import { useRoles } from '../hooks'; import { useNotificationDispatcher } from "../../notifications/hoc/Notifications"; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('../hooks'); jest.mock('../../notifications/hoc/Notifications'); diff --git a/ui/src/app/admin/hooks.test.js b/ui/src/app/admin/hooks.test.js index d739c9aa1..0da6a7a62 100644 --- a/ui/src/app/admin/hooks.test.js +++ b/ui/src/app/admin/hooks.test.js @@ -6,6 +6,12 @@ import { import useFetch from 'use-http'; import API_BASE_PATH from '../App.constant'; +jest.mock('../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('use-http'); describe('api hooks', () => { diff --git a/ui/src/app/core/components/Footer.test.js b/ui/src/app/core/components/Footer.test.js index 8f9453338..63c89e9e1 100644 --- a/ui/src/app/core/components/Footer.test.js +++ b/ui/src/app/core/components/Footer.test.js @@ -2,6 +2,12 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import { Footer } from './Footer'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('../../i18n/hooks', () => ({ useTranslation: (value) => value })); diff --git a/ui/src/app/core/components/Header.js b/ui/src/app/core/components/Header.js index b2085d133..3e553c595 100644 --- a/ui/src/app/core/components/Header.js +++ b/ui/src/app/core/components/Header.js @@ -13,6 +13,7 @@ import { useTranslator } from '../../i18n/hooks'; import { brand } from '../../app.brand'; import { useIsAdmin } from '../user/UserContext'; +import { BASE_PATH } from '../../App.constant'; export function Header () { @@ -73,7 +74,7 @@ export function Header () { Dashboard - + Logout diff --git a/ui/src/app/core/components/Header.test.js b/ui/src/app/core/components/Header.test.js index f154789b2..30b6a857d 100644 --- a/ui/src/app/core/components/Header.test.js +++ b/ui/src/app/core/components/Header.test.js @@ -3,6 +3,12 @@ import { render, screen } from '@testing-library/react'; import { BrowserRouter as Router } from 'react-router-dom'; import { Header } from './Header'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('../../i18n/hooks', () => ({ useTranslator: () => (value) => value, useTranslation: (value) => value diff --git a/ui/src/app/core/components/VersionInfo.js b/ui/src/app/core/components/VersionInfo.js index ab1fff8d5..1c6badfc1 100644 --- a/ui/src/app/core/components/VersionInfo.js +++ b/ui/src/app/core/components/VersionInfo.js @@ -1,6 +1,7 @@ import React from 'react'; import useFetch from 'use-http'; +import { BASE_PATH } from '../../App.constant'; import Translate from '../../i18n/components/translate'; @@ -11,7 +12,7 @@ const params = { year }; export function VersionInfo () { - const { data = {} } = useFetch('/actuator/info', {}, []); + const { data = {} } = useFetch(`${BASE_PATH}actuator/info`, {}, []); const [ versionData, setVersionData ] = React.useState(''); diff --git a/ui/src/app/core/components/VersionInfo.test.js b/ui/src/app/core/components/VersionInfo.test.js index 28a8a6b47..8a14c3154 100644 --- a/ui/src/app/core/components/VersionInfo.test.js +++ b/ui/src/app/core/components/VersionInfo.test.js @@ -4,6 +4,12 @@ import { render, screen } from '@testing-library/react'; import { VersionInfo } from './VersionInfo'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const data = { "git": { "branch": "react", "commit": { "id": "634f1a4", "time": "2021-06-10T19:00:29Z" } }, "build": { "artifact": "shibui", "name": "backend", "time": "2021-06-10T19:26:14.478Z", "version": "2.0.0-SNAPSHOT", "group": "edu.internet2.tier.shibboleth.admin.ui" } }; jest.mock('../../i18n/components/translate', () => { diff --git a/ui/src/app/core/user/UserContext.test.js b/ui/src/app/core/user/UserContext.test.js index d5e2ce1cb..9807981bf 100644 --- a/ui/src/app/core/user/UserContext.test.js +++ b/ui/src/app/core/user/UserContext.test.js @@ -2,6 +2,12 @@ import React from 'react'; import { render, screen, waitFor } from '@testing-library/react'; import { UserProvider, useIsAdmin } from './UserContext'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const getFn = jest.fn(); const okFn = jest.fn(); diff --git a/ui/src/app/i18n/context/I18n.provider.test.js b/ui/src/app/i18n/context/I18n.provider.test.js index e63d5e62e..80a6d75f0 100644 --- a/ui/src/app/i18n/context/I18n.provider.test.js +++ b/ui/src/app/i18n/context/I18n.provider.test.js @@ -2,6 +2,12 @@ import React from 'react'; import { render, screen, waitFor } from '@testing-library/react'; import { I18nProvider } from './I18n.provider'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const getFn = jest.fn(); const okFn = jest.fn(); diff --git a/ui/src/app/i18n/hooks.test.js b/ui/src/app/i18n/hooks.test.js index 8dcaf32fd..b9e67b324 100644 --- a/ui/src/app/i18n/hooks.test.js +++ b/ui/src/app/i18n/hooks.test.js @@ -1,6 +1,11 @@ import React from 'react'; import { translate, getMessage, useTranslation, useTranslator } from './hooks'; +jest.mock('../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); const msgs = { foo: 'bar { baz }' }; diff --git a/ui/src/app/metadata/domain/filter/component/MetadataFilterConfigurationListItem.js b/ui/src/app/metadata/domain/filter/component/MetadataFilterConfigurationListItem.js index 3c336a27e..cc5aa3480 100644 --- a/ui/src/app/metadata/domain/filter/component/MetadataFilterConfigurationListItem.js +++ b/ui/src/app/metadata/domain/filter/component/MetadataFilterConfigurationListItem.js @@ -11,13 +11,14 @@ import { getDefinition } from '../../../domain/index'; import { MetadataConfiguration } from '../../../component/MetadataConfiguration'; import { useMetadataConfiguration } from '../../../hooks/configuration'; import useFetch from 'use-http'; +import { BASE_PATH } from '../../../../App.constant'; export function MetadataFilterConfigurationListItem ({ filter, isLast, isFirst, onOrderUp, onOrderDown, onEnable, editable, onRemove, loading, index }) { const [open, setOpen] = React.useState(false); const definition = React.useMemo(() => getDefinition(filter['@type'], ), [filter]); - const { get, response } = useFetch(''); + const { get, response } = useFetch(`${BASE_PATH}`); const [schema, setSchema] = React.useState(); diff --git a/ui/src/app/metadata/domain/filter/definition/EntityAttributesFilterDefinition.test.js b/ui/src/app/metadata/domain/filter/definition/EntityAttributesFilterDefinition.test.js index e0450ec9b..2e50b8c3c 100644 --- a/ui/src/app/metadata/domain/filter/definition/EntityAttributesFilterDefinition.test.js +++ b/ui/src/app/metadata/domain/filter/definition/EntityAttributesFilterDefinition.test.js @@ -1,4 +1,11 @@ import { EntityAttributesFilterWizard } from "./EntityAttributesFilterDefinition"; + +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const addErrorMockFn = jest.fn(); const filters = [ diff --git a/ui/src/app/metadata/domain/filter/definition/NameIdFilterDefinition.test.js b/ui/src/app/metadata/domain/filter/definition/NameIdFilterDefinition.test.js index b2500cfc3..e6473eee3 100644 --- a/ui/src/app/metadata/domain/filter/definition/NameIdFilterDefinition.test.js +++ b/ui/src/app/metadata/domain/filter/definition/NameIdFilterDefinition.test.js @@ -1,4 +1,11 @@ import { NameIDFilterWizard } from "./NameIdFilterDefinition"; + +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const addErrorMockFn = jest.fn(); const filters = [ diff --git a/ui/src/app/metadata/domain/index.test.js b/ui/src/app/metadata/domain/index.test.js index 639c66e5a..dd5d62c63 100644 --- a/ui/src/app/metadata/domain/index.test.js +++ b/ui/src/app/metadata/domain/index.test.js @@ -3,6 +3,12 @@ import { getDefinition } from './index'; import { FileSystemMetadataProviderEditor } from './provider/definition/FileSystemMetadataProviderDefinition'; import { SourceEditor } from './source/definition/SourceDefinition'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + describe('getDefinitions method', () => { it('should retrieve the definition', () => { expect(getDefinition('source')).toBe(SourceEditor); diff --git a/ui/src/app/metadata/domain/provider/component/ProviderList.test.js b/ui/src/app/metadata/domain/provider/component/ProviderList.test.js index c45628109..e13fa2d0b 100644 --- a/ui/src/app/metadata/domain/provider/component/ProviderList.test.js +++ b/ui/src/app/metadata/domain/provider/component/ProviderList.test.js @@ -3,6 +3,12 @@ import { render, screen } from '@testing-library/react'; import { ProviderList } from './ProviderList'; +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('../../../../i18n/hooks', () => ({ useTranslation: (value) => value })); diff --git a/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.test.js b/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.test.js index 0019675e3..7ff3784d4 100644 --- a/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.test.js +++ b/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.test.js @@ -1,5 +1,12 @@ import { BaseProviderDefinition } from './BaseProviderDefinition'; import schema from '../../../../../testing/dynamic-http.schema'; + +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const addErrorMockFn = jest.fn(); const providers = [ diff --git a/ui/src/app/metadata/domain/provider/definition/DynamicHttpMetadataProviderDefinition.test.js b/ui/src/app/metadata/domain/provider/definition/DynamicHttpMetadataProviderDefinition.test.js index 5d8cb6d97..747a642c8 100644 --- a/ui/src/app/metadata/domain/provider/definition/DynamicHttpMetadataProviderDefinition.test.js +++ b/ui/src/app/metadata/domain/provider/definition/DynamicHttpMetadataProviderDefinition.test.js @@ -1,5 +1,11 @@ import { DynamicHttpMetadataProviderWizard } from './DynamicHttpMetadataProviderDefinition'; -import schema from '../../../../../testing/dynamic-http.schema'; + +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + const addErrorMockFn = jest.fn(); const providers = [ diff --git a/ui/src/app/metadata/domain/provider/definition/FileBackedHttpMetadataProviderDefinition.js b/ui/src/app/metadata/domain/provider/definition/FileBackedHttpMetadataProviderDefinition.js index 4d7146c98..6bfd34fad 100644 --- a/ui/src/app/metadata/domain/provider/definition/FileBackedHttpMetadataProviderDefinition.js +++ b/ui/src/app/metadata/domain/provider/definition/FileBackedHttpMetadataProviderDefinition.js @@ -2,12 +2,13 @@ import defaultsDeep from 'lodash/defaultsDeep'; import { BaseProviderDefinition, HttpMetadataResolverAttributesSchema, MetadataFilterPluginsSchema } from './BaseProviderDefinition'; import { DurationOptions } from '../../data'; +import { BASE_PATH } from '../../../../App.constant'; export const FileBackedHttpMetadataProviderWizard = { ...BaseProviderDefinition, label: 'FileBackedHttpMetadataProvider', type: 'FileBackedHttpMetadataResolver', - schema: '/assets/schema/provider/filebacked-http.schema.json', + schema: `${BASE_PATH}assets/schema/provider/filebacked-http.schema.json`, steps: [ ...BaseProviderDefinition.steps, { diff --git a/ui/src/app/metadata/domain/source/definition/SourceDefinition.test.js b/ui/src/app/metadata/domain/source/definition/SourceDefinition.test.js index 98001cf0b..18dbc589c 100644 --- a/ui/src/app/metadata/domain/source/definition/SourceDefinition.test.js +++ b/ui/src/app/metadata/domain/source/definition/SourceDefinition.test.js @@ -1,5 +1,11 @@ import { SourceBase } from './SourceDefinition'; +jest.mock('../../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + describe('SourceDefinition', () => { describe('parser', () => { it('should remove null values', () => { diff --git a/ui/src/app/metadata/hooks/api.test.js b/ui/src/app/metadata/hooks/api.test.js index cf6ba8c71..4f2133677 100644 --- a/ui/src/app/metadata/hooks/api.test.js +++ b/ui/src/app/metadata/hooks/api.test.js @@ -27,6 +27,12 @@ import API_BASE_PATH from '../../App.constant'; import { MetadataFilterTypes } from '../domain/filter'; import { useContentionDispatcher } from '../contention/ContentionContext'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + jest.mock('use-http'); jest.mock('../contention/ContentionContext'); diff --git a/ui/src/app/metadata/hooks/configuration.test.js b/ui/src/app/metadata/hooks/configuration.test.js index 126a81041..ddf41d74e 100644 --- a/ui/src/app/metadata/hooks/configuration.test.js +++ b/ui/src/app/metadata/hooks/configuration.test.js @@ -5,6 +5,12 @@ import { useMetadataConfiguration } from './configuration'; +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + describe('useMetadataConfiguration hook', () => { it('should return an empty object if any parameters are not supplied', () => { expect(useMetadataConfiguration(null, {}, {})).toEqual({}); diff --git a/ui/src/app/metadata/hooks/schema.test.js b/ui/src/app/metadata/hooks/schema.test.js index 67b6450db..b1d68e55a 100644 --- a/ui/src/app/metadata/hooks/schema.test.js +++ b/ui/src/app/metadata/hooks/schema.test.js @@ -9,6 +9,12 @@ import uiSchemaResult from '../../../testing/uiSchema'; import { useIsAdmin } from '../../core/user/UserContext'; jest.mock('../../core/user/UserContext'); +jest.mock('../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + describe('useUiSchema', () => { let realUseMemo; let useMemoMock; diff --git a/ui/src/app/metadata/view/MetadataUpload.js b/ui/src/app/metadata/view/MetadataUpload.js index 76ab28c5a..59318aa53 100644 --- a/ui/src/app/metadata/view/MetadataUpload.js +++ b/ui/src/app/metadata/view/MetadataUpload.js @@ -37,7 +37,7 @@ export function MetadataUpload() { type = 'application/x-www-form-urlencoded'; } - const response = await fetch(`${API_BASE_PATH}${getMetadataPath('source')}?spName=${serviceProviderName}`, { + const response = await fetch(`/${API_BASE_PATH}${getMetadataPath('source')}?spName=${serviceProviderName}`, { method: 'POST', cache: 'no-cache', headers: { From c82a2694c8b5aa51f3a26352adb9f183f00df10f Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Mon, 13 Sep 2021 15:02:10 -0700 Subject: [PATCH 2/3] Fixed issue with attribute creation path --- ui/src/app/form/component/fields/FilterTargetField.js | 1 + .../app/metadata/domain/attribute/CustomAttributeDefinition.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/src/app/form/component/fields/FilterTargetField.js b/ui/src/app/form/component/fields/FilterTargetField.js index 3bd6fb26a..659a0d55e 100644 --- a/ui/src/app/form/component/fields/FilterTargetField.js +++ b/ui/src/app/form/component/fields/FilterTargetField.js @@ -210,6 +210,7 @@ const FilterTargetField = ({ className="form-control" type="text" name="script" + value={selectedTarget[0]} onChange={ ({target: { value }}) => handleTextChange(value) } /> {errorSchema?.value?.__errors ? diff --git a/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.js b/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.js index cf671e547..595f0140e 100644 --- a/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.js +++ b/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.js @@ -1,10 +1,11 @@ import { defaultsDeep } from "lodash"; +import { BASE_PATH } from "../../../App.constant"; export const CustomAttributeDefinition = { label: 'Metadata Attribute', type: '@MetadataAttribute', steps: [], - schema: `/assets/schema/attribute/attribute.schema.json`, + schema: `${BASE_PATH}assets/schema/attribute/attribute.schema.json`, uiSchema: { layout: { From 2410b63676421435d9dc20a20601f69e90429579 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Mon, 13 Sep 2021 15:18:16 -0700 Subject: [PATCH 3/3] Fixed test --- .../domain/attribute/CustomAttributeDefinition.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.test.js b/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.test.js index 3b6c865ca..e4229e8cc 100644 --- a/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.test.js +++ b/ui/src/app/metadata/domain/attribute/CustomAttributeDefinition.test.js @@ -1,5 +1,11 @@ import { CustomAttributeDefinition } from "./CustomAttributeDefinition"; +jest.mock('../../../App.constant', () => ({ + get API_BASE_PATH() { + return '/'; + } +})); + describe('formatter', () => { it('should format the object passed for the json-schema-form', () => {