Skip to content

Commit

Permalink
Added new global error treatment (client-side) (#4163)
Browse files Browse the repository at this point in the history
* Fixed catch error throw string instead error

* Added ErrorFactory with tests

* Implemented ErrorFactory on generic-request and tests

* Fixed tests

* Refactored errorfactory for create differents error types

* Added prevent create new error when it is

* Added error factory in wz-request

* Added error factory in wz-api-check

* Added error factory in saved-objects and tests

* Changed wz-api-check for typescript file

* Refactoring error factory

* Fixed  generic-request test

* Added Settings Controller tests for onInit event

* Edited ErrorFactory createError

* Added check api service tests

* Moved error factory files

* Added error-handler with new implementation

* Fixed types and unit tests

* Skiped some unit tests

* Skiped react services unit tests

* Added unit test to return error in error handler

* Added new errors  classes relantionship

* Resolved conflict

* Reordered folder structure

* Added error factory unit test for every error classes

* Added error handler unit tests

* Fixed and skipped some errors

* Updated hook and hoc unit tests

* Restoring services state

* Added README

* Fixed unit tests

* Fixed check api service

* Unit tests check api service

* Added unit tests for errorHandler HOC and updated README

* Updated handle error return error instance and unit tests

* Added logOptions in error classes, types and unit tests

* Fixed unit test useErrorHandler hook

* Added WazuhError abstract class

* Added error handler decorator v1

* Fixed generic request unit tests

* Fixed saved objects unit tests

* Fixed wz api check unit tests

* Removed wz request unit test

* Changed log error options

* Cleaned decorator

* Fixed decorator unit tests

* Cleaned code decorator unit tests

* Modified error handler hook and fixed unit tests

* Added README content index

* Fixed content links

* Updated README

* Updated README with more error management details

* Checking signed commit

* Checking which unit test throw error

* Fixed unit tests for Hook and Decorator

* Added error types treatment in README

* Updated README

* Renamed elastic to indexer

* Added error display with custom title and message

* Added title and message customization for every error

* Added error prompt in error handler HOC

* Modified callback call in error handler hook

* Added new error categorization method with unit tests

* Adde docs folder and examples with unit tests

* Updated docs README

* Updated root README

* Solved unit tests

* Added error handler uses cases examples docs

* Updated README error treatment by types

* Updated Readme

* Added title to log native javascript errors

* Modified console log error message structure

* [Backport 4.5-2.3-wzd] Fix Changelog for WzD (#4893)

Fix Changelog for WzD (#4890)

(cherry picked from commit 8391897)

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>

* Init changelog 4.5.0

* Bump to 4.5.0

* Bump development Docker environments to 4.5.0 (#4896)

* Fix references to Elasticsearch in plugin for Wazuh stack (#4894)

* fix references to elasticsearch in plugin for wazuh stack

* CHANGELOG

* cleaning code

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>

* [Backport 4.5] Typo correction (#4688)  (#4913)

Typo correction (#4688) (#4911)

* Typo correction (#4688)

* Fix adn typo in module description

* Fix arequest typo in comment

* Fix avaliable typo in error message

* Fix badgets typo in comment

* fix de/the typo in comment

* Fix dependentes typo in comment

* Fix missing apostrophe in UI warning message

* Fix Iventory typo in module description

* Fix onwner typo in filter bar descriptions of the FIM inventory

* Fix "othe" typo in module description

* Remove word apparently added by mistake in PR #3120

* Fix "resouces" typo in module description

* Fix "resutls" typo in module description

* Fix "retuns" typo in comment code

* Added missing "y" to "successfull" message when removing policy

* Fix "sugguestions" typo in comment

* Removed extra t in "VirustTotal" on the sample data screen

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>

* Update Changelog

* fix(tests): update snapshots

Co-authored-by: Juan Carlos Tello <juancarlos.tello@wazuh.com>
Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com>
(cherry picked from commit 4ca3aea)

* [Backport 4.5] Fix IPV6 visualizations (#4920)

Fix IPV6 visualizations (#4909)

* create compression function

* Implement IPv6 compressor

* Fix visualization in agent view

* Create unit tests for ipv6-services

* Update changelog

* Add data type verification

* Migrate to ts

* Migrate to ts

* Update to match the styleguide

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>
(cherry picked from commit a83bc15)

Co-authored-by: Nico Guevara <42900763+Tostti@users.noreply.github.com>

* [Backport 4.5] 4711 error not caught and wrong error message in pci module  (#4922)

merge

* Fix display of remote protocols when there are more than one (#4917) (#4941)

* Modify render function to separate arrays

* Update changelog

(cherry picked from commit 5dba6f4)

* [Backport 4.5] Add endpoint response (#4995)

Add endpoint response (#4934)

(cherry picked from commit be03e6a)

Co-authored-by: Nico Guevara <42900763+Tostti@users.noreply.github.com>

* [Backport 4.5] Fix changelog (#5106)

Fix changelog (#4936)

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>
(cherry picked from commit ecf8784)

Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com>

* Bump v4.4.0-2.4.1-rc1

* Create codeql.yml (#4987)

* Create codeql.yml

Test CodeQL

* Fix codeql workflow branches selector

Suggested codeql branches were incorrectly set unquoted when the doc states they should be quoted

* Create SECURITY.md

* Update codeql.yml

Update target branches as the workflow was not running as expected.

* Update codeql.yml

Remove CodeQL analysis results from pull requests (which are public)

* Create dependabot.yml

Create dependabot configuration, indicating the package manager manually for each branch.

* Update codeql.yml

Add a schedule and new branches to the codeql analysis job

* Enable npm scan instead of yarn scan

Use package.json instead of yarn as there are no yarn.lock in this repository yet.

* Update dependabot.yml

* Update dependabot.yml

Use quotation in branches with numeric shape, so it is recognized as a string, instead of a number. Added quotes in all target-branch instances to avoid doubt when editing.

* Update codeql.yml

- Add matrix strategy to run the workflow on the desired branches.
- Remove `on :push` trigger.

* Update codeql.yml

Add manual trigger

* Update codeql.yml

* Fix tests

* Fix imposter's response

* Add ignore and restrict fields (#5203)

* Add ignore and restrict fields

* change labels

* add changelog

* Remove the last dot

* Change RexExp (#5201)

* change RexExp

* add changelog

* Add `rel="noopener noreferrer"` in documentation links (#5197)

* add rel="noopener noreferrer"

* add changelog

* edit changelog

---------

Co-authored-by: Álex Ruiz <alejandro.ruiz.becerra@wazuh.com>

* Add development Docker image for OpenSearch 2.6.0

Simplifies the images reciving the version to build as parameter

* [Backport 4.5] Remove trailing `-` character for OS value in the list of agents (#5266)

Remove trailing `-` character for OS value in the list of agents (#4828)

* Remove - character when version is empty

* Simplify field default value

* Add changelog

* Update CHANGELOG.md

* Update CHANGELOG.md

* Change group default value to -

* Conflit resolution

---------

Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>
(cherry picked from commit 6a50c9b)

Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com>

* Bump angular-material from 1.1.18 to 1.2.5 (#5147)

Bumps [angular-material](https://github.com/angular/material) from 1.1.18 to 1.2.5.
- [Release notes](https://github.com/angular/material/releases)
- [Changelog](https://github.com/angular/material/blob/master/CHANGELOG.md)
- [Commits](angular/material@v1.1.18...v1.2.5)

---
updated-dependencies:
- dependency-name: angular-material
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump jwt-decode from 2.2.0 to 3.1.2 (#5148)

Bumps [jwt-decode](https://github.com/auth0/jwt-decode) from 2.2.0 to 3.1.2.
- [Release notes](https://github.com/auth0/jwt-decode/releases)
- [Changelog](https://github.com/auth0/jwt-decode/blob/master/CHANGELOG.md)
- [Commits](auth0/jwt-decode@v2.2.0...v3.1.2)

---
updated-dependencies:
- dependency-name: jwt-decode
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump markdown-it-link-attributes from 3.0.0 to 4.0.1 (#5149)

Bumps [markdown-it-link-attributes](https://github.com/crookedneighbor/markdown-it-link-attributes) from 3.0.0 to 4.0.1.
- [Release notes](https://github.com/crookedneighbor/markdown-it-link-attributes/releases)
- [Changelog](https://github.com/crookedneighbor/markdown-it-link-attributes/blob/main/CHANGELOG.md)
- [Commits](crookedneighbor/markdown-it-link-attributes@v3.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: markdown-it-link-attributes
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump tslint from 5.20.1 to 6.1.3 (#5248)

Bumps [tslint](https://github.com/palantir/tslint) from 5.20.1 to 6.1.3.
- [Release notes](https://github.com/palantir/tslint/releases)
- [Changelog](https://github.com/palantir/tslint/blob/master/CHANGELOG.md)
- [Commits](palantir/tslint@5.20.1...6.1.3)

---
updated-dependencies:
- dependency-name: tslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump winston from 3.5.1 to 3.8.2 (#5249)

Bumps [winston](https://github.com/winstonjs/winston) from 3.5.1 to 3.8.2.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](winstonjs/winston@v3.5.1...v3.8.2)

---
updated-dependencies:
- dependency-name: winston
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump axios from 0.21.4 to 1.3.4 (#5230)

Bumps [axios](https://github.com/axios/axios) from 0.21.4 to 1.3.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v0.21.4...v1.3.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump eslint-import-resolver-typescript from 2.7.1 to 3.5.3 (#5250)

Bumps [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) from 2.7.1 to 3.5.3.
- [Release notes](https://github.com/import-js/eslint-import-resolver-typescript/releases)
- [Changelog](https://github.com/import-js/eslint-import-resolver-typescript/blob/master/CHANGELOG.md)
- [Commits](import-js/eslint-import-resolver-typescript@v2.7.1...v3.5.3)

---
updated-dependencies:
- dependency-name: eslint-import-resolver-typescript
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump install from 0.10.4 to 0.13.0 (#5251)

Bumps [install](https://github.com/benjamn/install) from 0.10.4 to 0.13.0.
- [Release notes](https://github.com/benjamn/install/releases)
- [Commits](benjamn/install@v0.10.4...v0.13.0)

---
updated-dependencies:
- dependency-name: install
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump needle from 2.9.1 to 3.2.0 (#5253)

Bumps [needle](https://github.com/tomas/needle) from 2.9.1 to 3.2.0.
- [Release notes](https://github.com/tomas/needle/releases)
- [Commits](https://github.com/tomas/needle/commits/v3.2.0)

---
updated-dependencies:
- dependency-name: needle
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump angular-animate from 1.7.8 to 1.8.3 (#5257)

Bumps [angular-animate](https://github.com/angular/angular.js) from 1.7.8 to 1.8.3.
- [Release notes](https://github.com/angular/angular.js/releases)
- [Changelog](https://github.com/angular/angular.js/blob/master/CHANGELOG.md)
- [Commits](angular/angular.js@v1.7.8...v1.8.3)

---
updated-dependencies:
- dependency-name: angular-animate
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump typescript-eslint-parser from 18.0.0 to 22.0.0 (#5255)

Bumps [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser) from 18.0.0 to 22.0.0.
- [Release notes](https://github.com/eslint/typescript-eslint-parser/releases)
- [Changelog](https://github.com/eslint/typescript-eslint-parser/blob/master/CHANGELOG.md)
- [Commits](eslint/typescript-eslint-parser@v18.0.0...v22.0.0)

---
updated-dependencies:
- dependency-name: typescript-eslint-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump eslint-plugin-filenames-simple from 0.7.0 to 0.8.0 (#5256)

Bumps [eslint-plugin-filenames-simple](https://github.com/epaew/eslint-plugin-filenames-simple) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/epaew/eslint-plugin-filenames-simple/releases)
- [Changelog](https://github.com/epaew/eslint-plugin-filenames-simple/blob/master/CHANGELOG.md)
- [Commits](epaew/eslint-plugin-filenames-simple@v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-filenames-simple
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump js2xmlparser from 3.0.0 to 5.0.0 (#5252)

Bumps [js2xmlparser](https://github.com/michaelkourlas/node-js2xmlparser) from 3.0.0 to 5.0.0.
- [Release notes](https://github.com/michaelkourlas/node-js2xmlparser/releases)
- [Changelog](https://github.com/michaelkourlas/node-js2xmlparser/blob/master/CHANGES.md)
- [Commits](michaelkourlas/node-js2xmlparser@v3.0.0...v5.0.0)

---
updated-dependencies:
- dependency-name: js2xmlparser
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix jest config

Map axios module

* Bump platform version to 2.6.0

* [Backport 4.5] Fix cannot read null properties bug in settings section (#5217)

Fix cannot read null properties bug in settings section (#5135)

* fixed bug cannot read null properties in settings section

* changelog

(cherry picked from commit 4c113f7)

Co-authored-by: Chantal Belén kelm <99441266+chantal-kelm@users.noreply.github.com>

* Revert "[Backport 4.5] Fix cannot read null properties bug in settings section" (#5275)

Revert "[Backport 4.5] Fix cannot read null properties bug in settings section (#5217)"

This reverts commit 2548fe3.

* [Backport 4.5] Fix cannot read null properties bug in settings section (#5276)

Fix cannot read null properties bug in settings section (#5135)

* fixed bug cannot read null properties in settings section

* changelog

(cherry picked from commit 4c113f7)

Co-authored-by: Chantal Belén kelm <99441266+chantal-kelm@users.noreply.github.com>

* Add noopener noreferrer to externals links (#5274)

* Add noopener noreferrer to externals links

* Fix test

* Add target=_blank and rel=noopener noreferrer

* add changelog

* Fixed catch error throw string instead error

* Added error factory in saved-objects and tests

* Restoring services state

* Resolved conflict in check api service

* Updated CHANGELOG

* Fixed throw error when saved object index pattern not exists

* Fix TypeError in FIM Inventory using new error handler (#5364)

* Resolved requested changes

* Updated CHANGELOG

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Álex <alejandro.ruiz.becerra@wazuh.com>
Co-authored-by: Chantal Belén kelm <99441266+chantal-kelm@users.noreply.github.com>
Co-authored-by: Nico Guevara <42900763+Tostti@users.noreply.github.com>
Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com>
Co-authored-by: Gabriel Díaz <gdiaz@qswarm.com>
Co-authored-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com>
  • Loading branch information
10 people authored Apr 17, 2023
1 parent 54c3e1f commit 16b55a1
Show file tree
Hide file tree
Showing 47 changed files with 2,389 additions and 150 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ All notable changes to the Wazuh app project will be documented in this file.

- Added rel="noopener noreferrer" in documentation links. [#5197](https://github.com/wazuh/wazuh-kibana-app/pull/5197) [#5274](https://github.com/wazuh/wazuh-kibana-app/pull/5274) [#5298](https://github.com/wazuh/wazuh-kibana-app/pull/5298)
- Added `ignore` and `restrict` options to Syslog configuration. [#5203](https://github.com/wazuh/wazuh-kibana-app/pull/5203)
- Added new global error treatment (client-side) [#4163](https://github.com/wazuh/wazuh-kibana-app/pull/4163)

### Changed

Expand All @@ -22,6 +23,7 @@ All notable changes to the Wazuh app project will be documented in this file.
- Handling endpoint response was done when there is no data to show [#4918](https://github.com/wazuh/wazuh-kibana-app/pull/4918)
- Fixed references to Elasticsearch in Wazuh-stack plugin [4894](https://github.com/wazuh/wazuh-kibana-app/pull/4894)
- Fixed the 2 errors that appeared in console in Settings>Configuration section. [#5135](https://github.com/wazuh/wazuh-kibana-app/pull/5135)
- Fixed TypeError in FIM Inventory using new error handler [#5364](https://github.com/wazuh/wazuh-kibana-app/pull/5364)

## Wazuh v4.4.1 - OpenSearch Dashboards 2.6.0 - Revision 01

Expand Down
40 changes: 23 additions & 17 deletions public/components/agents/fim/inventory/fileDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import { getDataPlugin, getUiSettings } from '../../../../kibana-services';
import { RegistryValues } from './registryValues';
import { formatUIDate } from '../../../../react-services/time-service';
import { FilterManager } from '../../../../../../../src/plugins/data/public/';
import { ErrorHandler } from '../../../../react-services/error-management';

export class FileDetails extends Component {
props!: {
Expand Down Expand Up @@ -228,23 +229,28 @@ export class FileDetails extends Component {
}

async checkFilterManager(filters) {
const { filterManager } = getDataPlugin().query;
const _filters = filterManager.getFilters();
if (_filters && _filters.length) {
const syscheckPathFilters = _filters.filter((x) => {
return x.meta.key === 'syscheck.path';
});
syscheckPathFilters.map((x) => {
filterManager.removeFilter(x);
});
filterManager.addFilters([filters]);
const scope = await ModulesHelper.getDiscoverScope();
scope.updateQueryAndFetch({ query: null });
} else {
setTimeout(() => {
this.checkFilterManager(filters);
}, 200);
try {
const { filterManager } = getDataPlugin().query;
const _filters = filterManager.getFilters();
if (_filters && _filters.length) {
const syscheckPathFilters = _filters.filter((x) => {
return x.meta.key === 'syscheck.path';
});
syscheckPathFilters.map((x) => {
filterManager.removeFilter(x);
});
filterManager.addFilters([filters]);
const scope = await ModulesHelper.getDiscoverScope();
scope.updateQueryAndFetch && scope.updateQueryAndFetch({ query: null });
} else {
setTimeout(() => {
this.checkFilterManager(filters);
}, 200);
}
}catch(error){
ErrorHandler.handleError(error as Error);
}

}

addFilter(field, value) {
Expand Down Expand Up @@ -501,4 +507,4 @@ export class FileDetails extends Component {
</Fragment>
);
}
}
}
4 changes: 2 additions & 2 deletions public/components/agents/sca/inventory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -631,5 +631,5 @@ export class Inventory extends Component<InventoryProps, InventoryState> {
}

Inventory.defaultProps = {
onClickRow: undefined,
};
onClickRow: undefined
}
121 changes: 121 additions & 0 deletions public/components/health-check/services/check-api.service.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
import * as service from './check-api.service';
import { CheckLogger } from '../types/check_logger';
import { ApiCheck, AppState } from '../../../react-services';
import axios, { AxiosResponse } from 'axios';

jest.mock('axios');
// app state
jest.mock('../../../react-services/app-state');
jest.mock('../../../kibana-services', () => ({
...(jest.requireActual('../../../kibana-services') as object),
getHttp: jest.fn().mockReturnValue({
basePath: {
get: () => {
return 'http://localhost:5601';
},
prepend: (url) => {
return `http://localhost:5601${url}`;
},
},
}),
getCookies: jest.fn().mockReturnValue({
set: (name, value, options) => {
return true;
},
get: () => {
return '{}';
},
remove: () => {
return;
},
}),
}));

const hostData = {
id: 'api',
url: 'url-mocked',
port: 9000,
username: 'username',
password: 'password',
run_as: false,
};
const getApiHostsResponse: AxiosResponse = {
data: [hostData],
status: 200,
statusText: 'OK',
headers: {},
config: {},
request: {},
};

const checkStoredErrorResponse: AxiosResponse = {
data: {
statusCode: 500,
error: 'Internal Server Error',
message: '3099 - ERROR3099 - Wazuh not ready yet',
},
status: 500,
statusText: 'Internal Server Error',
headers: {},
config: {},
request: {},
};

// checkLogger mocked
const checkLoggerMocked: CheckLogger = {
info: jest.fn(),
error: jest.fn(),
action: jest.fn(),
};

describe.skip('CheckApi Service', () => {
it('Should show logs info when api check pass successfully and have cluster_info ', async () => {
const currentApi = { id: 'api-mocked' };
AppState.getCurrentAPI = jest.fn().mockReturnValue(JSON.stringify(currentApi));
AppState.setClusterInfo = jest.fn();
const checkStoredResponse = {
data: {
data: {
url: 'url-mocked',
port: 9000,
username: 'username',
password: 'password',
run_as: false,
cluster_info: {
status: 'enabled',
node: 'master',
manager: 'manager-mocked',
cluster: 'cluster-mocked',
},
},
},
};
ApiCheck.checkStored = jest.fn().mockResolvedValue(Promise.resolve(checkStoredResponse));
await service.checkApiService({})(checkLoggerMocked);
expect(checkLoggerMocked.info).toBeCalledWith(`Current API id [${currentApi.id}]`);
expect(checkLoggerMocked.info).toBeCalledWith(`Checking current API id [${currentApi.id}]...`);
expect(checkLoggerMocked.info).toBeCalledWith(`Set cluster info in cookie`);
expect(checkLoggerMocked.info).toBeCalledTimes(3);
});

it('Should return ERROR and show logs info when api check fails on checkApi', async () => {
const currentApi = { id: 'api-mocked' };
AppState.getCurrentAPI = jest.fn().mockReturnValue(JSON.stringify(currentApi));
AppState.setClusterInfo = jest.fn();
ApiCheck.checkStored = jest.fn().mockResolvedValue(Promise.reject(checkStoredErrorResponse));
(axios as jest.MockedFunction<typeof axios>).mockResolvedValue(
Promise.resolve(getApiHostsResponse)
);

ApiCheck.checkApi = jest.fn().mockResolvedValue(Promise.reject(checkStoredErrorResponse));

try {
await service.checkApiService({})(checkLoggerMocked);
} catch (error) {
expect(error).toBeDefined();
expect(typeof error).not.toBe('string');
expect(error.message).toContain('No API available to connect');
expect(error).toBeInstanceOf(Error);
}
});
});
6 changes: 3 additions & 3 deletions public/components/health-check/services/check-api.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,13 @@ const trySetDefault = async (checkLogger: CheckLogger) => {
);
}
}
return Promise.reject('No API available to connect');
return Promise.reject(new Error('No API available to connect'));
}
}
return Promise.reject('No API configuration found');
return Promise.reject(new Error('No API configuration found'));
} catch (error) {
checkLogger.error(`Error connecting to API: ${error}`);
return Promise.reject(`Error connecting to API: ${error}`);
return Promise.reject(new Error(`Error connecting to API: ${error}`));
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,53 +5,47 @@ import { Provider } from 'react-redux';
import configureMockStore from 'redux-mock-store';

jest.mock('../../../../../../kibana-services', () => ({
getUiSettings:() => ({
get:() => {
return false
}
}),
getAngularModule: jest.fn(),
getUiSettings: () => ({
get: () => {
return false;
},
}),
}));

const mockProps = {
"clusterNodeSelected":"master-node",
"agent":{
"id":"000"
clusterNodeSelected: 'master-node',
agent: {
id: '000',
},
refreshTime: false,
currentConfig: {
'analysis-alerts': {
alerts: {
email_alert_level: 12,
log_alert_level: 3,
},
},
"refreshTime":false,
"currentConfig":{
"analysis-alerts":{
"alerts":{
"email_alert_level":12,
"log_alert_level":3
}
},
"analysis-labels":{
"labels":[

]
},
"mail-alerts":"Fetch configuration. 3013 - Error connecting with socket",
"monitor-reports":{

},
"csyslog-csyslog":"Fetch configuration. 3013 - Error connecting with socket"
'analysis-labels': {
labels: [],
},
"wazuhNotReadyYet":""
}

'mail-alerts': 'Fetch configuration. 3013 - Error connecting with socket',
'monitor-reports': {},
'csyslog-csyslog': 'Fetch configuration. 3013 - Error connecting with socket',
},
wazuhNotReadyYet: '',
};

const mockStore = configureMockStore();
const store = mockStore({});

describe('WzConfigurationAlerts component mount OK', () => {

it('renders correctly to match the snapshot', () => {
const wrapper = shallow(
<Provider store={store}>
<WzConfigurationAlerts {...mockProps} />
</Provider>
);
<Provider store={store}>
<WzConfigurationAlerts {...mockProps} />
</Provider>
);
expect(wrapper).toMatchSnapshot();
});

});
});
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ import { Provider } from 'react-redux';
import configureMockStore from 'redux-mock-store';

jest.mock('../../../../../../kibana-services', () => ({
getAngularModule: jest.fn(),
getUiSettings: () => ({
get: (uiSetting: string) => {
if (uiSetting === 'theme:darkMode') {
return false
return false;
}
}
})
},
}),
}));

const mockStore = configureMockStore();
Expand Down
Loading

0 comments on commit 16b55a1

Please sign in to comment.