mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
Revert "[Saved objects client - bulkUpdate] Passing the correct namespace to …"
This reverts commit 97941682db
.
This commit is contained in:
parent
831004deac
commit
a95f827030
4 changed files with 13 additions and 85 deletions
|
@ -53,7 +53,6 @@ import {
|
||||||
expectError,
|
expectError,
|
||||||
createBadRequestErrorPayload,
|
createBadRequestErrorPayload,
|
||||||
expectUpdateResult,
|
expectUpdateResult,
|
||||||
MULTI_NAMESPACE_TYPE,
|
|
||||||
} from '../../test_helpers/repository.test.common';
|
} from '../../test_helpers/repository.test.common';
|
||||||
import type { ISavedObjectsSecurityExtension } from '@kbn/core-saved-objects-server';
|
import type { ISavedObjectsSecurityExtension } from '@kbn/core-saved-objects-server';
|
||||||
import { savedObjectsExtensionsMock } from '../../mocks/saved_objects_extensions.mock';
|
import { savedObjectsExtensionsMock } from '../../mocks/saved_objects_extensions.mock';
|
||||||
|
@ -621,74 +620,6 @@ describe('#bulkUpdate', () => {
|
||||||
2
|
2
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('migrates single namespace objects using the object namespace', async () => {
|
|
||||||
const modifiedObj2 = {
|
|
||||||
...obj2,
|
|
||||||
coreMigrationVersion: '8.0.0',
|
|
||||||
namespace: 'test',
|
|
||||||
};
|
|
||||||
const objects = [modifiedObj2];
|
|
||||||
migrator.migrateDocument.mockImplementationOnce((doc) => ({ ...doc, migrated: true }));
|
|
||||||
|
|
||||||
await bulkUpdateSuccess(client, repository, registry, objects);
|
|
||||||
|
|
||||||
expect(migrator.migrateDocument).toHaveBeenCalledTimes(2);
|
|
||||||
expectMigrationArgs(
|
|
||||||
{
|
|
||||||
id: modifiedObj2.id,
|
|
||||||
namespace: 'test',
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
2
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('migrates multiple namespace objects using the object namespaces', async () => {
|
|
||||||
const modifiedObj2 = {
|
|
||||||
...obj2,
|
|
||||||
type: MULTI_NAMESPACE_TYPE,
|
|
||||||
coreMigrationVersion: '8.0.0',
|
|
||||||
namespace: 'test',
|
|
||||||
};
|
|
||||||
const objects = [modifiedObj2];
|
|
||||||
migrator.migrateDocument.mockImplementationOnce((doc) => ({ ...doc, migrated: true }));
|
|
||||||
|
|
||||||
await bulkUpdateSuccess(client, repository, registry, objects);
|
|
||||||
|
|
||||||
expect(migrator.migrateDocument).toHaveBeenCalledTimes(2);
|
|
||||||
expectMigrationArgs(
|
|
||||||
{
|
|
||||||
id: modifiedObj2.id,
|
|
||||||
namespaces: ['test'],
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
2
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('migrates namespace agnsostic objects', async () => {
|
|
||||||
const modifiedObj2 = {
|
|
||||||
...obj2,
|
|
||||||
type: NAMESPACE_AGNOSTIC_TYPE,
|
|
||||||
coreMigrationVersion: '8.0.0',
|
|
||||||
namespace: 'test', // specify a namespace, but it should be ignored
|
|
||||||
};
|
|
||||||
const objects = [modifiedObj2];
|
|
||||||
migrator.migrateDocument.mockImplementationOnce((doc) => ({ ...doc, migrated: true }));
|
|
||||||
|
|
||||||
await bulkUpdateSuccess(client, repository, registry, objects);
|
|
||||||
|
|
||||||
expect(migrator.migrateDocument).toHaveBeenCalledTimes(2);
|
|
||||||
expectMigrationArgs(
|
|
||||||
{
|
|
||||||
id: modifiedObj2.id,
|
|
||||||
namespaces: [],
|
|
||||||
},
|
|
||||||
true,
|
|
||||||
2
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('returns', () => {
|
describe('returns', () => {
|
||||||
|
|
|
@ -150,11 +150,17 @@ export const performBulkUpdate = async <T>(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// `objectNamespace` is a namespace string, while `namespace` is a namespace ID.
|
||||||
|
// The object namespace string, if defined, will supersede the operation's namespace ID.
|
||||||
|
const namespaceString = SavedObjectsUtils.namespaceIdToString(namespace);
|
||||||
|
|
||||||
const getNamespaceId = (objectNamespace?: string) =>
|
const getNamespaceId = (objectNamespace?: string) =>
|
||||||
objectNamespace !== undefined
|
objectNamespace !== undefined
|
||||||
? SavedObjectsUtils.namespaceStringToId(objectNamespace)
|
? SavedObjectsUtils.namespaceStringToId(objectNamespace)
|
||||||
: namespace;
|
: namespace;
|
||||||
|
|
||||||
|
const getNamespaceString = (objectNamespace?: string) => objectNamespace ?? namespaceString;
|
||||||
|
|
||||||
const bulkGetDocs = validObjects.map(({ value: { type, id, objectNamespace } }) => ({
|
const bulkGetDocs = validObjects.map(({ value: { type, id, objectNamespace } }) => ({
|
||||||
_id: serializer.generateRawId(getNamespaceId(objectNamespace), type, id),
|
_id: serializer.generateRawId(getNamespaceId(objectNamespace), type, id),
|
||||||
_index: commonHelper.getIndexForType(type),
|
_index: commonHelper.getIndexForType(type),
|
||||||
|
@ -229,6 +235,7 @@ export const performBulkUpdate = async <T>(
|
||||||
mergeAttributes,
|
mergeAttributes,
|
||||||
} = expectedBulkGetResult.value;
|
} = expectedBulkGetResult.value;
|
||||||
|
|
||||||
|
let namespaces: string[] | undefined;
|
||||||
const versionProperties = getExpectedVersionProperties(version);
|
const versionProperties = getExpectedVersionProperties(version);
|
||||||
const indexFound = bulkGetResponse?.statusCode !== 404;
|
const indexFound = bulkGetResponse?.statusCode !== 404;
|
||||||
const actualResult = indexFound ? bulkGetResponse?.body.docs[esRequestIndex] : undefined;
|
const actualResult = indexFound ? bulkGetResponse?.body.docs[esRequestIndex] : undefined;
|
||||||
|
@ -251,18 +258,15 @@ export const performBulkUpdate = async <T>(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let savedObjectNamespace: string | undefined;
|
|
||||||
let savedObjectNamespaces: string[] | undefined;
|
|
||||||
|
|
||||||
if (isMultiNS) {
|
if (isMultiNS) {
|
||||||
// @ts-expect-error MultiGetHit is incorrectly missing _id, _source
|
// @ts-expect-error MultiGetHit is incorrectly missing _id, _source
|
||||||
savedObjectNamespaces = actualResult!._source.namespaces ?? [
|
namespaces = actualResult!._source.namespaces ?? [
|
||||||
// @ts-expect-error MultiGetHit is incorrectly missing _id, _source
|
// @ts-expect-error MultiGetHit is incorrectly missing _id, _source
|
||||||
SavedObjectsUtils.namespaceIdToString(actualResult!._source.namespace),
|
SavedObjectsUtils.namespaceIdToString(actualResult!._source.namespace),
|
||||||
];
|
];
|
||||||
} else if (registry.isSingleNamespace(type)) {
|
} else if (registry.isSingleNamespace(type)) {
|
||||||
// if `objectNamespace` is undefined, fall back to `options.namespace`
|
// if `objectNamespace` is undefined, fall back to `options.namespace`
|
||||||
savedObjectNamespace = objectNamespace ?? namespace;
|
namespaces = [getNamespaceString(objectNamespace)];
|
||||||
}
|
}
|
||||||
|
|
||||||
const document = getSavedObjectFromSource<T>(
|
const document = getSavedObjectFromSource<T>(
|
||||||
|
@ -306,8 +310,8 @@ export const performBulkUpdate = async <T>(
|
||||||
...migrated!,
|
...migrated!,
|
||||||
id,
|
id,
|
||||||
type,
|
type,
|
||||||
...(savedObjectNamespace && { namespace: savedObjectNamespace }),
|
namespace,
|
||||||
...(savedObjectNamespaces && { namespaces: savedObjectNamespaces }),
|
namespaces,
|
||||||
attributes: updatedAttributes,
|
attributes: updatedAttributes,
|
||||||
updated_at: time,
|
updated_at: time,
|
||||||
updated_by: updatedBy,
|
updated_by: updatedBy,
|
||||||
|
@ -317,9 +321,6 @@ export const performBulkUpdate = async <T>(
|
||||||
migratedUpdatedSavedObjectDoc as SavedObjectSanitizedDoc
|
migratedUpdatedSavedObjectDoc as SavedObjectSanitizedDoc
|
||||||
);
|
);
|
||||||
|
|
||||||
const namespaces =
|
|
||||||
savedObjectNamespaces ?? (savedObjectNamespace ? [savedObjectNamespace] : []);
|
|
||||||
|
|
||||||
const expectedResult = {
|
const expectedResult = {
|
||||||
type,
|
type,
|
||||||
id,
|
id,
|
||||||
|
|
|
@ -546,13 +546,9 @@ describe('#update', () => {
|
||||||
namespace: 'default',
|
namespace: 'default',
|
||||||
});
|
});
|
||||||
expect(client.index).toHaveBeenCalledWith(
|
expect(client.index).toHaveBeenCalledWith(
|
||||||
expect.objectContaining({
|
expect.objectContaining({ id: expect.stringMatching(`${type}:${id}`) }),
|
||||||
id: expect.stringMatching(`${type}:${id}`),
|
|
||||||
}),
|
|
||||||
expect.anything()
|
expect.anything()
|
||||||
);
|
);
|
||||||
// Assert that 'namespace' does not exist at all
|
|
||||||
expect(client.index.mock.calls[0][0]).not.toHaveProperty('namespace');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`doesn't prepend namespace to the id when using agnostic-namespace type`, async () => {
|
it(`doesn't prepend namespace to the id when using agnostic-namespace type`, async () => {
|
||||||
|
|
|
@ -716,7 +716,7 @@ export const expectUpdateResult = ({
|
||||||
attributes,
|
attributes,
|
||||||
references,
|
references,
|
||||||
version: mockVersion,
|
version: mockVersion,
|
||||||
namespaces: [],
|
namespaces: ['default'],
|
||||||
...mockTimestampFields,
|
...mockTimestampFields,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue