## Summary
Fixes the non-legacy ES test client to work with SSL.
Without this if you try to migrate `siem rules` or `alerting` or `CASE` or anything else that is using SSL based tests you get this error when trying to use the non-legacy:
```ts
// pull in non-legacy service for functional tests
const es = getService('es');
```
```ts
// use it somewhere where your config.ts is utilizing SSL in a functional test
// ...
```
In your console you get this error:
```ts
ConnectionError: self signed certificate in certificate chain
at onResponse (node_modules/@elastic/elasticsearch/lib/Transport.js:205:13)
at ClientRequest.request.on.err (node_modules/@elastic/elasticsearch/lib/Connection.js:98:9)
at TLSSocket.socketErrorListener (_http_client.js:401:9)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
```
This fixes that by adding the CA certs from test to the ES test client.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* FTR configurable test users (#52431)
* initial implementation of configurable test users
* user superuser by default to match master
* referenced the configs in reporting and api integration
* setting the minimum number of default roles
* looking for x-pack tests with users and roles
* add testUserService in dashboard mode tests
* running only ciGroup7
* uncommenting - addign visualization
* re-enabling all CI groups to run on CI
* reinstating Jenkinsfile
* disable Test user for OIDC config
* improved logging and added Roles for OSS tests to get better info on the runs.
* disable test_user for auth tests
* don't fetch enabledPlugins when testuser disabled
* fix es-lint
* running oss tests with x-pack enabled
* [revertme] build default dist for oss tests
* updating NOTICE.txt file as it complained in the kibana intake tests
* changed to pick OSS builds
* trying a license change to trial
* switch back to xpack builds
* created a new sample data role and used it in homepage tests
* revert test/scripts/jenkins_ci_group.sh
* only refresh browser and wait for chrome if we are already on Kibana page
* fix large_string test to use minimum set of roles and privileges
* fix for date nanos custom timestamp with a configured role
* changes to the files with addition of new roles for the test_user
* reverting to OSS changes and few additions to the time_zone test to run as a test_user
* changes to security
* changes to the x-pack test to use elastic superuser
* fix for chart_types test
* fixes to area chart , input control test
* fix for dashboard filtering test and a new config role
* changes to handle the x-pack tests
* additional role for date nanos mixed
* added the logstash role to the accessibility tests
* removed telemetry setting
* docs+few changes to the tests
* removed Page navigation
* removed pageNavigation which was unused
* test/accessibility/apps/management.ts
* update management.ts
* aria label, and other changes
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* accidentally checked in a piped file with results.
* reverted
* unloading of logstash data, fixing aria label
* aria-label
* added the required role
* fix for tsvb chart
* fix for sample data test reverted home_page pageobject file
* changes to sample data test and visualize index file to incorporate OSS changes
* changes to describe() and some more changes to incorporate in settings_page
* re-adding the after()
* removed unwanted roles
* replaced kibana_user with kibana_admin
* added the check of deprecated kibana_user
* testing with kibana_admin role
* fix for discover test
* incorporated the review comments
* incorporated the review comments
* incorporate review comments and added restoreDefaults()
* removed describe.only
* reverted the OSS logic change I had here- pulled into seperate PR
* incorporated the review comments
* incorporated review changes
* adding hidden=true to find hidden kibanaChrome
* change field.test.tsx to be same as that of master branch
Co-authored-by: spalger <spalger@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* removed the accidentally added file
Co-authored-by: spalger <spalger@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [FTR] expose new es client service (#51066)
* always extend all common config and expose new es client service
* replace `es` service with `legacyEs`
* fix one refernce that's unique to 7.x
* use a custom wrapper around chance with longer defaults to avoid conflicts
* fix a reference to chance
* fix another reference to chance service
# Conflicts:
# x-pack/test/saml_api_integration/apis/security/saml_login.ts
* [dev-utils] implement basic KbnClient util for talking to Kibana server
* update KbnClient to expose full KibanaServerService API
* expose request() function and uriencode helper
* [uiSettings] retry read on conflicts auto upgrading
* expose function for resolving a Kibana server url
* only use apis in test hooks
* run x-pack-ciGroup2 60 times
* log retries as errors so they are included in console output for job
* bump
* Revert "run x-pack-ciGroup2 60 times"
This reverts commit 6b6f392edf.
* refactor urlencode tag to be a little clearer
* support customizing maxAttempts in request method
* [ftr/savedObjects] add simple saved object api client to ftr services
* fix typo
* use consistent spacing
* fix types and TS-ify the rest of kibanaServer service
* expose server urls with better API
* tweak status api response types
* fix http body param name
* second arg to axios post is the post data
* use standardized error handling behavior
* Revert "use standardized error handling behavior"
This reverts commit 7e9a7f8dc5.
* revert unnecessary changes
* [services/es_archiver] retry uiSettings update
* run x-pack-ciGroup7 30x times
* Revert "run x-pack-ciGroup7 30x times"
This reverts commit 80e199c3aa.
* [saved_object_api_integration/common/services] add retry service to the set
* add retry service for x-pack api tests
In https://github.com/elastic/kibana/pull/31234 there were some extra changes that I've reverted, like use of the `tsconfig-paths` package to magically rewrite import statements to defy the standard node module resolution algorithm, the inclusion of several unnecessary options in the `test/tsconfig.json` file, and changes of the line-endings in the config files. This also brings a few enhancements from https://github.com/elastic/kibana/pull/30190 including a modularized version of the expect.js types, and options for explicit mappings for the PageObjects and services used in ftr tests.
This PR implements the `uiSettings.overrides` setting which [when stored in kibana.yml or passed as config args when starting Kibana] allows forcing some uiSettings to always have a specific value. This setting accepts a map of uiSetting keys to values that will always be used to override whatever is stored in the config saved object.

When users view the settings in the advanced settings UI they are disabled and describe why they can't be changed.

Attempting to change these values from the uiSettings client/service/api is also prevented, causing a 400 error to be thrown and/or sent as the response.
We currently use the `retry` service to call a function over and over in a loop, waiting for it to run without throwing an error, and ultimately failing if it does not succeed before a timeout is exceeded. This is the easiest way to get certain interactions to work, either because we don't know when we should be able to execute the interaction successfully, or because the timing is just too tricky to plan out correctly. Another place where we are using the `retry` service, which I don't think is appropriate, is when we need to wait for a certain condition to be met. This is where `retry.waitFor()` comes in:
```js
await retry.waitFor('dashboard search to be enabled', async () => {
const searchInput = await testSubjects.find('savedObjectFinderSearchInput');
return await searchInput.isEnabled();
})
```
The `retry.waitFor()` method behaves much like the `retry.try()` method behind the scenes, calling a function over and over, but instead of waiting for it to run without throwing an error it waits for it to return a "truthy" value. It also requires a description string that is used to make rather nice log output and a more descriptive error message than something like https://github.com/elastic/kibana/blob/master/test/functional/apps/dashboard/_data_shared_attributes.js#L61-L67
* [kbn-test] convert kibana-install-dir flag to installDir option
* [kbn-test] replicate kibana-install-dir handling to startServers
* [ftr] try running functional tests in production in CI
* Revert "[ftr] try running functional tests in production in CI"
This reverts commit e5b94aa024.
* [core/public/legacyPlatform] exclude ui/test_harness from the distributable
* [optimizer] fix `process.env.IS_KIBANA_DISTRIBUTABLE` definition
* [optimizer] only define `process.env.IS_KIBANA_DISTRIBUTABLE` when needed
Adding a `webpack.DefinePlugin` slows down the optimizer a small amount,
so only apply it when it is necessary, and skip it if it is going to
be defined as "false".
* [kbn-test/startServer] don't run in --dev mode if running from dist
* [ftr/kibanaServer/version] attach `-SNAPSHOT` suffix to version if running build_snapshot
In order to make the license that applies to each file as clear as possible, and to be consistent with elasticsearch, we are adding Apache 2.0 license headers to the top of each file.
Existence of this header is enforced by eslint and tslint and missing headers were automatically added in the last commit by running:
```
node scripts/eslint --fix && node scripts/tslint --fix
```
* [es][savedObjects/index] put template on each savedObject write
The elasticsearch plugin currently checks for the Kibana index on each iteration of the healthCheck, and creates it if it does not exist. This removes that step from the healthCheck and instead, before each savedObject is written to elasticsearch, ensures that Elasticsearch has the necessary index template should the write result in index creation.
The healthCheck still has the `patchKibanaIndex()` logic, which checks the type in the Kibana index and adds any missing types. This step now does nothing when the Kibana index does not exist, and does what it has always done when it does.
* [ftr] remove unused kibanaIndex service
(cherry picked from commit b1ef897dafeb6d43fe279776e44a9d793a389dc3)
* [savedObjects/integration] create now creates kibana index
* [es/healthCheck] remove use of format()
* [es/healthCheck/tests] use sinon assertions
* [es/patchKibanaIndex] test for kibana index missing behavior
* [savedObjects/errors] add tests for EsAutoCreateIndexError
* [savedObjects/config] deprecate and remove savedObjects.indexCheckTimeout config
* use dangling commas consistently
* [ui/error_auto_create_index] fix class names
* [ui/savedObjectsClient] no need to specify basePath
* [eslint] fix linting issue
* [eslint] upgrade to 4.10.0
* [eslint-config-kibana] limit jest config to jest test files
* [ui_framework] remove trailing comma from rest-spreads
* [dashboard/tests] tag jest helpers with .test.js suffix
* explicitly import expect.js where used
* [eslint] apply auto-fixes
* [eslint] manually add/wrap some parens for compliance
* [npm] point to local packages for testing/review
* [jest] remove .test extension from jest helpers
* [ui_framework] fix trailing comma removal from 3bc661a1c8
* [packages] upgrade eslint packages
* [uiSettings] auto upgrade savedConfig doc when missing
* naming tweaks
* fix comments
* ensure that rcVersions are not found within a version
* add some tests for non-single digit versions/rcs/betas
* return the condition, rather than using an if()
* assert that getUpgradeableConfig() is always called once
* [uiSettingsService] remove excess space
* [savedObjectsClient] only attempt to createOrUpgradeSavedConfig once
* [uiSettings/routes/tests] remove unused assert helper
* [functional/console] correct test title
* [ftr/kibanaServer/uiSettings] fix disableToastAutohide timeout
* [SavedObjectClient] emit detectable errors
* [uiSettingsService] consume new SavedObjectsClient errors
* [SavedObjectsClient] expose errorTypeHelpers as such
* [elasticsearch/tests] recreate error for each test
* [http] wait for elasticsearch plugin to be ready
* [shortUrl/tests] ensure that create request responds with 200
* [shortUrl] use errorTypeHelpers to filter errors
* [uiSettings/savedObjectsClientStub] stub errorTypeHelpers
* [SavedObjectsClient/errors] expose error module so tests can make errors
* [shortUrl/tests] use actual SavedObjectsClient errors
* [uiSettings/savedObjectsClientStub] use actual errors lib
* [SavedObjectsClient] use decorate instead of "wrap"
* [server/routes/uiSettings] refactor routes to forward Boom errors from uiSettings
* [uiSettings] colocate routes and service
* [testUtils/esTestCluster] use more standard api style
* [testUtils/es] add createCallCluster util
* [testUtils/esTestCluster] add getters for client/callCluster
* [es/healthcheck] ensure that healtcheck stops when server is stopped
* [uiSettings/routes] add param/payload validation
* [uiSettings/routes] add tests that verify error behaviors
* ensure timezone attribute is adhered to
Two issues - one the archiver was loading the visualize mapping after
the config setting so it was bring overwritten, and two,
uiSettings.replace wasn’t working correctly to begin with.
* extra line to ensure server is stabilized to prevent transitory failures