diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts index 9585c40e6a161..d8c1b8edb9558 100644 --- a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts +++ b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.mock.ts @@ -14,10 +14,7 @@ jest.mock('../../../../elasticsearch', () => { return { getErrorMessage: mockGetEsErrorMessage }; }); -// Mock these functions to return empty results, as this simplifies test cases and we don't need to exercise alternate code paths for these -jest.mock('@kbn/es-query', () => { - return { nodeTypes: { function: { buildNode: jest.fn() } } }; -}); +// Mock this function to return empty results, as this simplifies test cases and we don't need to exercise alternate code paths for these jest.mock('../search_dsl', () => { return { getSearchDsl: jest.fn() }; }); diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts index 7ccacffb9a4d2..4968340335627 100644 --- a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts +++ b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.test.ts @@ -33,7 +33,7 @@ describe('deleteLegacyUrlAliases', () => { } const type = 'obj-type'; - const id = 'obj-id'; + const id = 'id-1:'; // include a colon (special character) in the object ID to implicitly assert that the kuery node builder handles it gracefully it('throws an error if namespaces includes the "all namespaces" string', async () => { const namespaces = [ALL_NAMESPACES_STRING]; diff --git a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts index 4d38afeac6eaa..33b6b7bc347ba 100644 --- a/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts +++ b/src/core/server/saved_objects/service/lib/legacy_url_aliases/delete_legacy_url_aliases.ts @@ -63,8 +63,8 @@ export async function deleteLegacyUrlAliases(params: DeleteLegacyUrlAliasesParam } const { buildNode } = esKuery.nodeTypes.function; - const match1 = buildNode('is', `${LEGACY_URL_ALIAS_TYPE}.targetType`, type); - const match2 = buildNode('is', `${LEGACY_URL_ALIAS_TYPE}.targetId`, id); + const match1 = buildNode('is', getKueryKey('targetType'), type); + const match2 = buildNode('is', getKueryKey('targetId'), `"${id}"`); // Enclose in quotes to escape any special characters like ':' and prevent parsing errors (Technically an object ID can contain a colon) const kueryNode = buildNode('and', [match1, match2]); try { @@ -107,3 +107,8 @@ export async function deleteLegacyUrlAliases(params: DeleteLegacyUrlAliasesParam function throwError(type: string, id: string, message: string) { throw new Error(`Failed to delete legacy URL aliases for ${type}/${id}: ${message}`); } + +function getKueryKey(attribute: string) { + // Note: these node keys do NOT include '.attributes' for type-level fields because we are using the query in the ES client (instead of the SO client) + return `${LEGACY_URL_ALIAS_TYPE}.${attribute}`; +}