Skip to content

Commit

Permalink
Merge branch 'main' into add-extra-recovery-for-long-numerals
Browse files Browse the repository at this point in the history
Signed-off-by: Miki <miki@amazon.com>
  • Loading branch information
AMoo-Miki committed Feb 27, 2024
2 parents 62dd1fd + 6d5560e commit 2d8d65f
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- [Table Visualization] Fix filter action buttons for split table aggregations ([#5619](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5619))
- [osd/std] Add additional recovery from false-positives in handling of long numerals ([#5956](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5956))
- [BUG][Discover] Allow saved sort from search embeddable to load in Dashboard ([#5934](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5934))
- [BUG][Multiple Datasource] Fix missing customApiRegistryPromise param for test connection ([#5944](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5944))

### 🚞 Infrastructure

Expand Down
3 changes: 2 additions & 1 deletion src/plugins/data_source/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ export class DataSourcePlugin implements Plugin<DataSourcePluginSetup, DataSourc
router,
dataSourceService,
cryptographyServiceSetup,
authRegistryPromise
authRegistryPromise,
customApiSchemaRegistryPromise
);

const registerCredentialProvider = (method: AuthenticationMethod) => {
Expand Down
96 changes: 96 additions & 0 deletions src/plugins/data_source/server/routes/test_connection.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

import supertest from 'supertest';
import { UnwrapPromise } from '@osd/utility-types';
import { setupServer } from '../../../../../src/core/server/test_utils';

import {
IAuthenticationMethodRegistery,
authenticationMethodRegisteryMock,
} from '../auth_registry';
import { CustomApiSchemaRegistry } from '../schema_registry';
import { DataSourceServiceSetup } from '../../server/data_source_service';
import { CryptographyServiceSetup } from '../cryptography_service';
import { registerTestConnectionRoute } from './test_connection';
import { AuthType } from '../../common/data_sources';
// eslint-disable-next-line @osd/eslint/no-restricted-paths
import { opensearchClientMock } from '../../../../../src/core/server/opensearch/client/mocks';

type SetupServerReturn = UnwrapPromise<ReturnType<typeof setupServer>>;

const URL = '/internal/data-source-management/validate';

describe(`Test connection ${URL}`, () => {
let server: SetupServerReturn['server'];
let httpSetup: SetupServerReturn['httpSetup'];
let handlerContext: SetupServerReturn['handlerContext'];
let cryptographyMock: jest.Mocked<CryptographyServiceSetup>;
const customApiSchemaRegistry = new CustomApiSchemaRegistry();
let customApiSchemaRegistryPromise: Promise<CustomApiSchemaRegistry>;
let dataSourceClient: ReturnType<typeof opensearchClientMock.createInternalClient>;
let dataSourceServiceSetupMock: DataSourceServiceSetup;
let authRegistryPromiseMock: Promise<IAuthenticationMethodRegistery>;
const dataSourceAttr = {
endpoint: 'https://test.com',
auth: {
type: AuthType.UsernamePasswordType,
credentials: {
username: 'testUser',
password: 'testPassword',
},
},
};

beforeEach(async () => {
({ server, httpSetup, handlerContext } = await setupServer());
customApiSchemaRegistryPromise = Promise.resolve(customApiSchemaRegistry);
authRegistryPromiseMock = Promise.resolve(authenticationMethodRegisteryMock.create());
dataSourceClient = opensearchClientMock.createInternalClient();

dataSourceServiceSetupMock = {
getDataSourceClient: jest.fn(() => Promise.resolve(dataSourceClient)),
getDataSourceLegacyClient: jest.fn(),
};

const router = httpSetup.createRouter('');
dataSourceClient.info.mockImplementationOnce(() =>
opensearchClientMock.createSuccessTransportRequestPromise({ cluster_name: 'testCluster' })
);
registerTestConnectionRoute(
router,
dataSourceServiceSetupMock,
cryptographyMock,
authRegistryPromiseMock,
customApiSchemaRegistryPromise
);

await server.start();
});

afterEach(async () => {
await server.stop();
});

it('shows successful response', async () => {
const result = await supertest(httpSetup.server.listener)
.post(URL)
.send({
id: 'testId',
dataSourceAttr,
})
.expect(200);
expect(result.body).toEqual({ success: true });
expect(dataSourceServiceSetupMock.getDataSourceClient).toHaveBeenCalledWith(
expect.objectContaining({
savedObjects: handlerContext.savedObjects.client,
cryptography: cryptographyMock,
dataSourceId: 'testId',
testClientDataSourceAttr: dataSourceAttr,
customApiSchemaRegistryPromise,
})
);
});
});
4 changes: 3 additions & 1 deletion src/plugins/data_source/server/routes/test_connection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ export const registerTestConnectionRoute = async (
router: IRouter,
dataSourceServiceSetup: DataSourceServiceSetup,
cryptography: CryptographyServiceSetup,
authRegistryPromise: Promise<IAuthenticationMethodRegistery>
authRegistryPromise: Promise<IAuthenticationMethodRegistery>,
customApiSchemaRegistryPromise: Promise<CustomApiSchemaRegistry>
) => {
const authRegistry = await authRegistryPromise;
router.post(
Expand Down Expand Up @@ -68,6 +69,7 @@ export const registerTestConnectionRoute = async (
testClientDataSourceAttr: dataSourceAttr as DataSourceAttributes,
request,
authRegistry,
customApiSchemaRegistryPromise,
}
);

Expand Down

0 comments on commit 2d8d65f

Please sign in to comment.