mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
# Backport This will backport the following commits from `main` to `8.17`: - [[Automatic Import] Fix generated name for integration title (#210916)](https://github.com/elastic/kibana/pull/210916) <!--- Backport version: 9.6.4 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Bharat Pasupula","email":"123897612+bhapas@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-02-13T16:02:03Z","message":"[Automatic Import] Fix generated name for integration title (#210916)\n\n## Summary\r\n\r\nA bug was introduced with #210770 and this PR fixes that. The Package\r\nname generated is validated.","sha":"cf0f338d8749c90024b2409fbb7b036469bfab6e","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","v9.0.0","backport:prev-minor","backport:prev-major","Team:Security-Scalability","Feature:AutomaticImport","v9.1.0"],"title":"[Automatic Import] Fix generated name for integration title","number":210916,"url":"https://github.com/elastic/kibana/pull/210916","mergeCommit":{"message":"[Automatic Import] Fix generated name for integration title (#210916)\n\n## Summary\r\n\r\nA bug was introduced with #210770 and this PR fixes that. The Package\r\nname generated is validated.","sha":"cf0f338d8749c90024b2409fbb7b036469bfab6e"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"9.0","label":"v9.0.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/211037","number":211037,"state":"MERGED","mergeCommit":{"sha":"badb523efc6e567dc33136f84bae6c240de7ab4c","message":"[9.0] [Automatic Import] Fix generated name for integration title (#210916) (#211037)\n\n# Backport\n\nThis will backport the following commits from `main` to `9.0`:\n- [[Automatic Import] Fix generated name for integration title\n(#210916)](https://github.com/elastic/kibana/pull/210916)\n\n<!--- Backport version: 9.4.3 -->\n\n### Questions ?\nPlease refer to the [Backport tool\ndocumentation](https://github.com/sqren/backport)\n\n<!--BACKPORT [{\"author\":{\"name\":\"Bharat\nPasupula\",\"email\":\"123897612+bhapas@users.noreply.github.com\"},\"sourceCommit\":{\"committedDate\":\"2025-02-13T16:02:03Z\",\"message\":\"[Automatic\nImport] Fix generated name for integration title (#210916)\\n\\n##\nSummary\\r\\n\\r\\nA bug was introduced with #210770 and this PR fixes that.\nThe Package\\r\\nname generated is\nvalidated.\",\"sha\":\"cf0f338d8749c90024b2409fbb7b036469bfab6e\",\"branchLabelMapping\":{\"^v9.1.0$\":\"main\",\"^v8.19.0$\":\"8.x\",\"^v(\\\\d+).(\\\\d+).\\\\d+$\":\"$1.$2\"}},\"sourcePullRequest\":{\"labels\":[\"release_note:fix\",\"backport:prev-minor\",\"Team:Security-Scalability\",\"Feature:AutomaticImport\",\"v9.1.0\"],\"title\":\"[Automatic\nImport] Fix generated name for integration\ntitle\",\"number\":210916,\"url\":\"https://github.com/elastic/kibana/pull/210916\",\"mergeCommit\":{\"message\":\"[Automatic\nImport] Fix generated name for integration title (#210916)\\n\\n##\nSummary\\r\\n\\r\\nA bug was introduced with #210770 and this PR fixes that.\nThe Package\\r\\nname generated is\nvalidated.\",\"sha\":\"cf0f338d8749c90024b2409fbb7b036469bfab6e\"}},\"sourceBranch\":\"main\",\"suggestedTargetBranches\":[],\"targetPullRequestStates\":[{\"branch\":\"main\",\"label\":\"v9.1.0\",\"branchLabelMappingKey\":\"^v9.1.0$\",\"isSourceBranch\":true,\"state\":\"MERGED\",\"url\":\"https://github.com/elastic/kibana/pull/210916\",\"number\":210916,\"mergeCommit\":{\"message\":\"[Automatic\nImport] Fix generated name for integration title (#210916)\\n\\n##\nSummary\\r\\n\\r\\nA bug was introduced with #210770 and this PR fixes that.\nThe Package\\r\\nname generated is\nvalidated.\",\"sha\":\"cf0f338d8749c90024b2409fbb7b036469bfab6e\"}}]}]\nBACKPORT-->\n\nCo-authored-by: Bharat Pasupula <123897612+bhapas@users.noreply.github.com>"}},{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/210916","number":210916,"mergeCommit":{"message":"[Automatic Import] Fix generated name for integration title (#210916)\n\n## Summary\r\n\r\nA bug was introduced with #210770 and this PR fixes that. The Package\r\nname generated is validated.","sha":"cf0f338d8749c90024b2409fbb7b036469bfab6e"}}]}] BACKPORT--> --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
276752e8b1
commit
3367949254
2 changed files with 56 additions and 4 deletions
|
@ -8,7 +8,7 @@
|
|||
import React from 'react';
|
||||
import { render, act, type RenderResult, fireEvent } from '@testing-library/react';
|
||||
import { TestProvider } from '../../../../../mocks/test_provider';
|
||||
import { DataStreamStep } from './data_stream_step';
|
||||
import { DataStreamStep, getNameFromTitle } from './data_stream_step';
|
||||
import { ActionsProvider } from '../../state';
|
||||
import { mockActions, mockState } from '../../mocks/state';
|
||||
|
||||
|
@ -243,4 +243,55 @@ describe('DataStreamStep', () => {
|
|||
expect(result.queryByTestId('generationModal')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
describe('when integrationSettings has an invalid generated name from title', () => {
|
||||
describe.each(['123 abc', '1a'])('should render error for %s', (invalidTitle) => {
|
||||
let result: RenderResult;
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
result = render(
|
||||
<DataStreamStep
|
||||
integrationSettings={{ title: invalidTitle }}
|
||||
connector={mockState.connector}
|
||||
isGenerating={false}
|
||||
/>,
|
||||
{ wrapper }
|
||||
);
|
||||
});
|
||||
|
||||
it('should set empty name for invalid title', () => {
|
||||
const input = result.getByTestId('nameInput');
|
||||
expect(input).toHaveValue(''); // name is not set
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when integrationSettings has an valid generated name from title', () => {
|
||||
describe.each(['abc 123', '$abc123', 'abc 123 abc', 'abc_123', 'abc_123_abc'])(
|
||||
'should render error for %s',
|
||||
(validTitle) => {
|
||||
let result: RenderResult;
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
result = render(
|
||||
<DataStreamStep
|
||||
integrationSettings={{ title: validTitle }}
|
||||
connector={mockState.connector}
|
||||
isGenerating={false}
|
||||
/>,
|
||||
{ wrapper }
|
||||
);
|
||||
});
|
||||
|
||||
it('should auto-generate name from title', () => {
|
||||
const input = result.getByTestId('nameInput');
|
||||
expect(input).toHaveValue(getNameFromTitle(validTitle));
|
||||
expect(mockActions.setIntegrationSettings).toHaveBeenCalledWith({
|
||||
name: getNameFromTitle(validTitle),
|
||||
title: validTitle,
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -45,7 +45,8 @@ export const InputTypeOptions: Array<EuiComboBoxOptionOption<InputType>> = [
|
|||
];
|
||||
|
||||
const isValidName = (name: string) => NAME_REGEX_PATTERN.test(name);
|
||||
const getNameFromTitle = (title: string) => title.toLowerCase().replaceAll(/[^a-z0-9]/g, '_');
|
||||
export const getNameFromTitle = (title: string) =>
|
||||
title.toLowerCase().replaceAll(/[^a-z0-9]/g, '_');
|
||||
|
||||
interface DataStreamStepProps {
|
||||
integrationSettings: State['integrationSettings'];
|
||||
|
@ -114,7 +115,7 @@ export const DataStreamStep = React.memo<DataStreamStepProps>(
|
|||
// Only executed once when the packageNames are loaded
|
||||
if (packageNames != null && integrationSettings?.name == null && integrationSettings?.title) {
|
||||
const generatedName = getNameFromTitle(integrationSettings.title);
|
||||
if (!packageNames.has(generatedName)) {
|
||||
if (!packageNames.has(generatedName) && isValidName(generatedName)) {
|
||||
setName(generatedName);
|
||||
setIntegrationValues({ name: generatedName });
|
||||
}
|
||||
|
@ -170,7 +171,7 @@ export const DataStreamStep = React.memo<DataStreamStepProps>(
|
|||
<EuiFieldText
|
||||
name="name"
|
||||
data-test-subj="nameInput"
|
||||
value={isValidName(name) ? name : ''}
|
||||
value={name}
|
||||
onChange={onChange.name}
|
||||
isInvalid={invalidFields.name}
|
||||
isLoading={isLoadingPackageNames}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue