Postgres: Fix test datasource always returns success (#43762)

This commit is contained in:
Zoltán Bedi
2022-01-07 10:39:25 +01:00
committed by GitHub
parent 20574c130a
commit 85246d7179
2 changed files with 90 additions and 3 deletions

View File

@ -0,0 +1,66 @@
import { backendSrv } from 'app/core/services/backend_srv';
import { of, throwError } from 'rxjs';
import { createFetchResponse } from 'test/helpers/createFetchResponse';
import { PostgresDatasource } from './datasource';
jest.mock('@grafana/runtime', () => ({
...(jest.requireActual('@grafana/runtime') as any),
getBackendSrv: () => backendSrv,
getTemplateSrv: () => ({
replace: (val: string): string => {
return val;
},
}),
}));
describe('Postgres datasource', () => {
beforeEach(() => {
jest.clearAllMocks();
});
describe('when performing testDatasource call', () => {
it('should return the error from the server', async () => {
setupFetchMock(
undefined,
throwError(() => ({
status: 400,
statusText: 'Bad Request',
data: {
results: {
meta: {
error: 'db query error: pq: password authentication failed for user "postgres"',
frames: [
{
schema: {
refId: 'meta',
meta: {
executedQueryString: 'SELECT 1',
},
fields: [],
},
data: {
values: [],
},
},
],
},
},
},
}))
);
const ds = new PostgresDatasource({ name: '', id: 0, jsonData: {} } as any);
const result = await ds.testDatasource();
expect(result.status).toEqual('error');
expect(result.message).toEqual('db query error: pq: password authentication failed for user "postgres"');
});
});
});
function setupFetchMock(response: any, mock?: any) {
const defaultMock = () => mock ?? of(createFetchResponse(response));
const fetchMock = jest.spyOn(backendSrv, 'fetch');
fetchMock.mockImplementation(defaultMock);
return fetchMock;
}