mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
* [UA] Handle privilege error during node precheck * Fix tests
This commit is contained in:
parent
8b11d0235d
commit
c7d06cc30b
2 changed files with 65 additions and 2 deletions
|
@ -6,7 +6,11 @@
|
|||
|
||||
import { SemVer } from 'semver';
|
||||
import { CURRENT_VERSION } from '../../common/version';
|
||||
import { getAllNodeVersions, verifyAllMatchKibanaVersion } from './es_version_precheck';
|
||||
import {
|
||||
EsVersionPrecheck,
|
||||
getAllNodeVersions,
|
||||
verifyAllMatchKibanaVersion,
|
||||
} from './es_version_precheck';
|
||||
|
||||
describe('getAllNodeVersions', () => {
|
||||
it('returns a list of unique node versions', async () => {
|
||||
|
@ -52,3 +56,51 @@ describe('verifyAllMatchKibanaVersion', () => {
|
|||
expect(() => verifyAllMatchKibanaVersion(versions)).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe('EsVersionPrecheck', () => {
|
||||
it('throws a 403 when callCluster fails with a 403', async () => {
|
||||
const fakeCallWithRequest = jest.fn().mockRejectedValue({ status: 403 });
|
||||
const fakeGetCluster = jest.fn(() => ({ callWithRequest: fakeCallWithRequest }));
|
||||
const fakeRequest = {
|
||||
server: { plugins: { elasticsearch: { getCluster: fakeGetCluster } } },
|
||||
} as any;
|
||||
|
||||
await expect(EsVersionPrecheck.method(fakeRequest, {} as any)).rejects.toHaveProperty(
|
||||
'output.statusCode',
|
||||
403
|
||||
);
|
||||
});
|
||||
|
||||
it('throws a 426 message when nodes are not on same version', async () => {
|
||||
const fakeCallWithRequest = jest.fn().mockResolvedValue({
|
||||
nodes: {
|
||||
node1: { version: CURRENT_VERSION.raw },
|
||||
node2: { version: CURRENT_VERSION.inc('major').raw },
|
||||
},
|
||||
});
|
||||
const fakeGetCluster = jest.fn(() => ({ callWithRequest: fakeCallWithRequest }));
|
||||
const fakeRequest = {
|
||||
server: { plugins: { elasticsearch: { getCluster: fakeGetCluster } } },
|
||||
} as any;
|
||||
|
||||
await expect(EsVersionPrecheck.method(fakeRequest, {} as any)).rejects.toHaveProperty(
|
||||
'output.statusCode',
|
||||
426
|
||||
);
|
||||
});
|
||||
|
||||
it('returns true when nodes are on same version', async () => {
|
||||
const fakeCallWithRequest = jest.fn().mockResolvedValue({
|
||||
nodes: {
|
||||
node1: { version: CURRENT_VERSION.raw },
|
||||
node2: { version: CURRENT_VERSION.raw },
|
||||
},
|
||||
});
|
||||
const fakeGetCluster = jest.fn(() => ({ callWithRequest: fakeCallWithRequest }));
|
||||
const fakeRequest = {
|
||||
server: { plugins: { elasticsearch: { getCluster: fakeGetCluster } } },
|
||||
} as any;
|
||||
|
||||
await expect(EsVersionPrecheck.method(fakeRequest, {} as any)).resolves.toBe(true);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -49,7 +49,18 @@ export const EsVersionPrecheck = {
|
|||
const { callWithRequest } = request.server.plugins.elasticsearch.getCluster('admin');
|
||||
const callCluster = callWithRequest.bind(callWithRequest, request) as CallCluster;
|
||||
|
||||
const allNodeVersions = await getAllNodeVersions(callCluster);
|
||||
let allNodeVersions: SemVer[];
|
||||
|
||||
try {
|
||||
allNodeVersions = await getAllNodeVersions(callCluster);
|
||||
} catch (e) {
|
||||
if (e.status === 403) {
|
||||
throw Boom.forbidden(e.message);
|
||||
}
|
||||
|
||||
throw e;
|
||||
}
|
||||
|
||||
// This will throw if there is an issue
|
||||
verifyAllMatchKibanaVersion(allNodeVersions);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue