diff --git a/x-pack/docs/build.gradle b/x-pack/docs/build.gradle deleted file mode 100644 index f3624c2b41894..0000000000000 --- a/x-pack/docs/build.gradle +++ /dev/null @@ -1,840 +0,0 @@ -apply plugin: 'elasticsearch.docs-test' -apply plugin: 'elasticsearch.rest-resources' - -/* List of files that have snippets that probably should be converted to - * `// CONSOLE` and `// TESTRESPONSE` but have yet to be converted. Try and - * only remove entries from this list. When it is empty we'll remove it - * entirely and have a party! There will be cake and everything.... */ -// tasks.named("buildRestTests").configure { -// expectedUnconvertedCandidates = [ -// 'en/rest-api/watcher/put-watch.asciidoc', -// 'en/security/authentication/user-cache.asciidoc', -// 'en/security/authorization/run-as-privilege.asciidoc', -// 'en/security/ccs-clients-integrations/http.asciidoc', -// 'en/rest-api/watcher/stats.asciidoc', -// 'en/watcher/example-watches/watching-time-series-data.asciidoc', -// ] -// } - -dependencies { - yamlRestTestImplementation(testArtifact(project(xpackModule('core')))) - yamlRestTestImplementation(testArtifact(project(':x-pack:plugin'))) -} - -restResources { - restApi { - include '*' - } -} - -testClusters.matching { it.name == "yamlRestTest" }.configureEach { - extraConfigFile 'op-jwks.json', project(':x-pack:test:idp-fixture').file("oidc/op-jwks.json") - extraConfigFile 'idp-docs-metadata.xml', project(':x-pack:test:idp-fixture').file("idp/shibboleth-idp/metadata/idp-docs-metadata.xml") - extraConfigFile 'testClient.crt', project(':x-pack:plugin:security').file("src/test/resources/org/elasticsearch/xpack/security/action/pki_delegation/testClient.crt") - setting 'xpack.security.enabled', 'true' - setting 'xpack.security.authc.api_key.enabled', 'true' - setting 'xpack.security.authc.token.enabled', 'true' - // disable the ILM history for doc tests to avoid potential lingering tasks that'd cause test flakiness - setting 'indices.lifecycle.history_index_enabled', 'false' - setting 'xpack.license.self_generated.type', 'trial' - setting 'xpack.security.authc.realms.file.file.order', '0' - setting 'xpack.security.authc.realms.native.native.order', '1' - setting 'xpack.security.authc.realms.oidc.oidc1.order', '2' - setting 'xpack.security.authc.realms.oidc.oidc1.op.issuer', 'http://127.0.0.1:8080' - setting 'xpack.security.authc.realms.oidc.oidc1.op.authorization_endpoint', "http://127.0.0.1:8080/c2id-login" - setting 'xpack.security.authc.realms.oidc.oidc1.op.token_endpoint', "http://127.0.0.1:8080/c2id/token" - setting 'xpack.security.authc.realms.oidc.oidc1.op.jwkset_path', 'op-jwks.json' - setting 'xpack.security.authc.realms.oidc.oidc1.rp.redirect_uri', 'https://my.fantastic.rp/cb' - setting 'xpack.security.authc.realms.oidc.oidc1.rp.client_id', 'elasticsearch-rp' - keystore 'xpack.security.authc.realms.oidc.oidc1.rp.client_secret', 'b07efb7a1cf6ec9462afe7b6d3ab55c6c7880262aa61ac28dded292aca47c9a2' - setting 'xpack.security.authc.realms.oidc.oidc1.rp.response_type', 'id_token' - setting 'xpack.security.authc.realms.oidc.oidc1.claims.principal', 'sub' - setting 'xpack.security.authc.realms.pki.pki1.order', '3' - setting 'xpack.security.authc.realms.pki.pki1.certificate_authorities', '[ "testClient.crt" ]' - setting 'xpack.security.authc.realms.pki.pki1.delegation.enabled', 'true' - setting 'xpack.security.authc.realms.saml.saml1.order', '4' - setting 'xpack.security.authc.realms.saml.saml1.sp.logout', 'https://kibana.org/logout' - setting 'xpack.security.authc.realms.saml.saml1.idp.entity_id', 'https://my-idp.org' - setting 'xpack.security.authc.realms.saml.saml1.idp.metadata.path', 'idp-docs-metadata.xml' - setting 'xpack.security.authc.realms.saml.saml1.sp.entity_id', 'https://kibana.org' - setting 'xpack.security.authc.realms.saml.saml1.sp.acs', 'https://kibana.org/api/security/saml/callback' - setting 'xpack.security.authc.realms.saml.saml1.attributes.principal', 'uid' - setting 'xpack.security.authc.realms.saml.saml1.attributes.name', 'urn:oid:2.5.4.3' - - user username: 'test_admin' - user username: 'test_user' -} - -tasks.named("buildRestTests").configure { buildRestTests -> - - buildRestTests.docs = fileTree(projectDir) { - // No snippets in here! - exclude 'build.gradle' - // That is where the snippets go, not where they come from! - exclude 'build/**' - // These file simply doesn't pass yet. We should figure out how to fix them. - exclude 'en/watcher/reference/actions.asciidoc' - exclude 'en/rest-api/security/ssl.asciidoc' - } - - Map setups = buildRestTests.setups - setups['my_inactive_watch'] = ''' - - do: - watcher.put_watch: - id: "my_watch" - active: false - body: > - { - "trigger": { - "schedule": { - "hourly": { - "minute": [ 0, 5 ] - } - } - }, - "input": { - "simple": { - "payload": { - "send": "yes" - } - } - }, - "condition": { - "always": {} - }, - "actions": { - "test_index": { - "index": { - "index": "test" - } - } - } - } - - match: { _id: "my_watch" } -''' - setups['my_active_watch'] = setups['my_inactive_watch'].replace( - 'active: false', 'active: true') - -// Used by SQL because it looks SQL-ish - setups['library'] = ''' - - do: - indices.create: - index: library - body: - settings: - number_of_shards: 1 - number_of_replicas: 1 - mappings: - book: - properties: - name: - type: text - fields: - keyword: - type: keyword - author: - type: text - fields: - keyword: - type: keyword - release_date: - type: date - page_count: - type: short - - do: - bulk: - index: library - type: book - refresh: true - body: | - {"index":{"_id": "Leviathan Wakes"}} - {"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561} - {"index":{"_id": "Hyperion"}} - {"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482} - {"index":{"_id": "Dune"}} - {"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604} - {"index":{"_id": "Dune Messiah"}} - {"name": "Dune Messiah", "author": "Frank Herbert", "release_date": "1969-10-15", "page_count": 331} - {"index":{"_id": "Children of Dune"}} - {"name": "Children of Dune", "author": "Frank Herbert", "release_date": "1976-04-21", "page_count": 408} - {"index":{"_id": "God Emperor of Dune"}} - {"name": "God Emperor of Dune", "author": "Frank Herbert", "release_date": "1981-05-28", "page_count": 454} - {"index":{"_id": "Consider Phlebas"}} - {"name": "Consider Phlebas", "author": "Iain M. Banks", "release_date": "1987-04-23", "page_count": 471} - {"index":{"_id": "Pandora's Star"}} - {"name": "Pandora's Star", "author": "Peter F. Hamilton", "release_date": "2004-03-02", "page_count": 768} - {"index":{"_id": "Revelation Space"}} - {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585} - {"index":{"_id": "A Fire Upon the Deep"}} - {"name": "A Fire Upon the Deep", "author": "Vernor Vinge", "release_date": "1992-06-01", "page_count": 613} - {"index":{"_id": "Ender's Game"}} - {"name": "Ender's Game", "author": "Orson Scott Card", "release_date": "1985-06-01", "page_count": 324} - {"index":{"_id": "1984"}} - {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328} - {"index":{"_id": "Fahrenheit 451"}} - {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227} - {"index":{"_id": "Brave New World"}} - {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268} - {"index":{"_id": "Foundation"}} - {"name": "Foundation", "author": "Isaac Asimov", "release_date": "1951-06-01", "page_count": 224} - {"index":{"_id": "The Giver"}} - {"name": "The Giver", "author": "Lois Lowry", "release_date": "1993-04-26", "page_count": 208} - {"index":{"_id": "Slaughterhouse-Five"}} - {"name": "Slaughterhouse-Five", "author": "Kurt Vonnegut", "release_date": "1969-06-01", "page_count": 275} - {"index":{"_id": "The Hitchhiker's Guide to the Galaxy"}} - {"name": "The Hitchhiker's Guide to the Galaxy", "author": "Douglas Adams", "release_date": "1979-10-12", "page_count": 180} - {"index":{"_id": "Snow Crash"}} - {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470} - {"index":{"_id": "Neuromancer"}} - {"name": "Neuromancer", "author": "William Gibson", "release_date": "1984-07-01", "page_count": 271} - {"index":{"_id": "The Handmaid's Tale"}} - {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} - {"index":{"_id": "Starship Troopers"}} - {"name": "Starship Troopers", "author": "Robert A. Heinlein", "release_date": "1959-12-01", "page_count": 335} - {"index":{"_id": "The Left Hand of Darkness"}} - {"name": "The Left Hand of Darkness", "author": "Ursula K. Le Guin", "release_date": "1969-06-01", "page_count": 304} - {"index":{"_id": "The Moon is a Harsh Mistress"}} - {"name": "The Moon is a Harsh Mistress", "author": "Robert A. Heinlein", "release_date": "1966-04-01", "page_count": 288} - -''' - setups['sample_job'] = ''' - - do: - ml.put_job: - job_id: "sample_job" - body: > - { - "description" : "Very basic job", - "analysis_config" : { - "bucket_span":"10m", - "detectors" :[ - { - "function": "count" - } - ]}, - "data_description" : { - "time_field":"timestamp", - "time_format": "epoch_ms" - } - } -''' - setups['farequote_index'] = ''' - - do: - indices.create: - index: farequote - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - metric: - properties: - time: - type: date - responsetime: - type: float - airline: - type: keyword - doc_count: - type: integer -''' - setups['farequote_data'] = setups['farequote_index'] + ''' - - do: - bulk: - index: farequote - type: metric - refresh: true - body: | - {"index": {"_id":"1"}} - {"airline":"JZA","responsetime":990.4628,"time":"2016-02-07T00:00:00+0000", "doc_count": 5} - {"index": {"_id":"2"}} - {"airline":"JBU","responsetime":877.5927,"time":"2016-02-07T00:00:00+0000", "doc_count": 23} - {"index": {"_id":"3"}} - {"airline":"KLM","responsetime":1355.4812,"time":"2016-02-07T00:00:00+0000", "doc_count": 42} -''' - setups['farequote_job'] = setups['farequote_data'] + ''' - - do: - ml.put_job: - job_id: "farequote" - body: > - { - "analysis_config": { - "bucket_span": "60m", - "detectors": [{ - "function": "mean", - "field_name": "responsetime", - "by_field_name": "airline" - }], - "summary_count_field_name": "doc_count" - }, - "data_description": { - "time_field": "time" - } - } -''' - setups['farequote_datafeed'] = setups['farequote_job'] + ''' - - do: - ml.put_datafeed: - datafeed_id: "datafeed-farequote" - body: > - { - "job_id":"farequote", - "indexes":"farequote" - } -''' - setups['ml_filter_safe_domains'] = ''' - - do: - ml.put_filter: - filter_id: "safe_domains" - body: > - { - "description": "A list of safe domains", - "items": ["*.google.com", "wikipedia.org"] - } -''' - setups['server_metrics_index'] = ''' - - do: - indices.create: - index: server-metrics - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - metric: - properties: - timestamp: - type: date - total: - type: long -''' - setups['server_metrics_data'] = setups['server_metrics_index'] + ''' - - do: - bulk: - index: server-metrics - type: metric - refresh: true - body: | - {"index": {"_id":"1177"}} - {"timestamp":"2017-03-23T13:00:00","total":40476} - {"index": {"_id":"1178"}} - {"timestamp":"2017-03-23T13:00:00","total":15287} - {"index": {"_id":"1179"}} - {"timestamp":"2017-03-23T13:00:00","total":-776} - {"index": {"_id":"1180"}} - {"timestamp":"2017-03-23T13:00:00","total":11366} - {"index": {"_id":"1181"}} - {"timestamp":"2017-03-23T13:00:00","total":3606} - {"index": {"_id":"1182"}} - {"timestamp":"2017-03-23T13:00:00","total":19006} - {"index": {"_id":"1183"}} - {"timestamp":"2017-03-23T13:00:00","total":38613} - {"index": {"_id":"1184"}} - {"timestamp":"2017-03-23T13:00:00","total":19516} - {"index": {"_id":"1185"}} - {"timestamp":"2017-03-23T13:00:00","total":-258} - {"index": {"_id":"1186"}} - {"timestamp":"2017-03-23T13:00:00","total":9551} - {"index": {"_id":"1187"}} - {"timestamp":"2017-03-23T13:00:00","total":11217} - {"index": {"_id":"1188"}} - {"timestamp":"2017-03-23T13:00:00","total":22557} - {"index": {"_id":"1189"}} - {"timestamp":"2017-03-23T13:00:00","total":40508} - {"index": {"_id":"1190"}} - {"timestamp":"2017-03-23T13:00:00","total":11887} - {"index": {"_id":"1191"}} - {"timestamp":"2017-03-23T13:00:00","total":31659} -''' - setups['server_metrics_job'] = setups['server_metrics_data'] + ''' - - do: - ml.put_job: - job_id: "total-requests" - body: > - { - "description" : "Total sum of requests", - "analysis_config" : { - "bucket_span":"10m", - "detectors" :[ - { - "detector_description": "Sum of total", - "function": "sum", - "field_name": "total" - } - ]}, - "data_description" : { - "time_field":"timestamp", - "time_format": "epoch_ms" - } - } -''' - setups['server_metrics_datafeed'] = setups['server_metrics_job'] + ''' - - do: - ml.put_datafeed: - datafeed_id: "datafeed-total-requests" - body: > - { - "job_id":"total-requests", - "indexes":"server-metrics" - } -''' - setups['server_metrics_openjob'] = setups['server_metrics_datafeed'] + ''' - - do: - ml.open_job: - job_id: "total-requests" -''' - setups['server_metrics_startdf'] = setups['server_metrics_openjob'] + ''' - - do: - ml.start_datafeed: - datafeed_id: "datafeed-total-requests" -''' - setups['calendar_outages'] = ''' - - do: - ml.put_calendar: - calendar_id: "planned-outages" -''' - setups['calendar_outages_addevent'] = setups['calendar_outages'] + ''' - - do: - ml.post_calendar_events: - calendar_id: "planned-outages" - body: > - { "description": "event 1", "start_time": "2017-12-01T00:00:00Z", "end_time": "2017-12-02T00:00:00Z", "calendar_id": "planned-outages" } - - -''' - setups['calendar_outages_openjob'] = setups['server_metrics_openjob'] + ''' - - do: - ml.put_calendar: - calendar_id: "planned-outages" -''' - setups['calendar_outages_addjob'] = setups['server_metrics_openjob'] + ''' - - do: - ml.put_calendar: - calendar_id: "planned-outages" - body: > - { - "job_ids": ["total-requests"] - } -''' - setups['calendar_outages_addevent'] = setups['calendar_outages_addjob'] + ''' - - do: - ml.post_calendar_events: - calendar_id: "planned-outages" - body: > - { "events" : [ - { "description": "event 1", "start_time": "1513641600000", "end_time": "1513728000000"}, - { "description": "event 2", "start_time": "1513814400000", "end_time": "1513900800000"}, - { "description": "event 3", "start_time": "1514160000000", "end_time": "1514246400000"} - ]} -''' - setups['role_mapping'] = ''' - - do: - security.put_role_mapping: - name: "mapping1" - body: > - { - "enabled": true, - "roles": [ "user" ], - "rules": { "field": { "username": "*" } } - } -''' - setups['sensor_rollup_job'] = ''' - - do: - indices.create: - index: sensor-1 - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - properties: - timestamp: - type: date - temperature: - type: long - voltage: - type: float - node: - type: keyword - - do: - rollup.put_job: - id: "sensor" - body: > - { - "index_pattern": "sensor-*", - "rollup_index": "sensor_rollup", - "cron": "*/30 * * * * ?", - "page_size" :1000, - "groups" : { - "date_histogram": { - "field": "timestamp", - "interval": "1h", - "delay": "7d" - }, - "terms": { - "fields": ["node"] - } - }, - "metrics": [ - { - "field": "temperature", - "metrics": ["min", "max", "sum"] - }, - { - "field": "voltage", - "metrics": ["avg"] - } - ] - } -''' - setups['sensor_started_rollup_job'] = ''' - - do: - indices.create: - index: sensor-1 - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - properties: - timestamp: - type: date - temperature: - type: long - voltage: - type: float - node: - type: keyword - - - do: - bulk: - index: sensor-1 - refresh: true - body: | - {"index":{}} - {"timestamp": 1516729294000, "temperature": 200, "voltage": 5.2, "node": "a"} - {"index":{}} - {"timestamp": 1516642894000, "temperature": 201, "voltage": 5.8, "node": "b"} - {"index":{}} - {"timestamp": 1516556494000, "temperature": 202, "voltage": 5.1, "node": "a"} - {"index":{}} - {"timestamp": 1516470094000, "temperature": 198, "voltage": 5.6, "node": "b"} - {"index":{}} - {"timestamp": 1516383694000, "temperature": 200, "voltage": 4.2, "node": "c"} - {"index":{}} - {"timestamp": 1516297294000, "temperature": 202, "voltage": 4.0, "node": "c"} - - - do: - rollup.put_job: - id: "sensor" - body: > - { - "index_pattern": "sensor-*", - "rollup_index": "sensor_rollup", - "cron": "* * * * * ?", - "page_size" :1000, - "groups" : { - "date_histogram": { - "field": "timestamp", - "interval": "1h", - "delay": "7d" - }, - "terms": { - "fields": ["node"] - } - }, - "metrics": [ - { - "field": "temperature", - "metrics": ["min", "max", "sum"] - }, - { - "field": "voltage", - "metrics": ["avg"] - } - ] - } - - do: - rollup.start_job: - id: "sensor" -''' - - setups['sensor_index'] = ''' - - do: - indices.create: - index: sensor-1 - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - properties: - timestamp: - type: date - temperature: - type: long - voltage: - type: float - node: - type: keyword - load: - type: double - net_in: - type: long - net_out: - type: long - hostname: - type: keyword - datacenter: - type: keyword -''' - - setups['sensor_prefab_data'] = ''' - - do: - indices.create: - index: sensor-1 - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - properties: - timestamp: - type: date - temperature: - type: long - voltage: - type: float - node: - type: keyword - - do: - indices.create: - index: sensor_rollup - body: - settings: - number_of_shards: 1 - number_of_replicas: 0 - mappings: - properties: - node.terms.value: - type: keyword - temperature.sum.value: - type: double - temperature.max.value: - type: double - temperature.min.value: - type: double - timestamp.date_histogram.time_zone: - type: keyword - timestamp.date_histogram.interval: - type: keyword - timestamp.date_histogram.timestamp: - type: date - timestamp.date_histogram._count: - type: long - voltage.avg.value: - type: double - voltage.avg._count: - type: long - _rollup.id: - type: keyword - _rollup.version: - type: long - _meta: - _rollup: - sensor: - cron: "* * * * * ?" - rollup_index: "sensor_rollup" - index_pattern: "sensor-*" - timeout: "20s" - page_size: 1000 - groups: - date_histogram: - field: "timestamp" - interval: "7d" - time_zone: "UTC" - terms: - fields: - - "node" - id: sensor - metrics: - - field: "temperature" - metrics: - - min - - max - - sum - - field: "voltage" - metrics: - - avg - - - do: - bulk: - index: sensor_rollup - refresh: true - body: | - {"index":{}} - {"node.terms.value":"b","temperature.sum.value":201.0,"temperature.max.value":201.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":201.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":5.800000190734863,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516640400000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - {"index":{}} - {"node.terms.value":"c","temperature.sum.value":200.0,"temperature.max.value":200.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":200.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":4.199999809265137,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516381200000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - {"index":{}} - {"node.terms.value":"a","temperature.sum.value":202.0,"temperature.max.value":202.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":202.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":5.099999904632568,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516554000000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - {"index":{}} - {"node.terms.value":"a","temperature.sum.value":200.0,"temperature.max.value":200.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":200.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":5.199999809265137,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516726800000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - {"index":{}} - {"node.terms.value":"b","temperature.sum.value":198.0,"temperature.max.value":198.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":198.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":5.599999904632568,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516467600000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - {"index":{}} - {"node.terms.value":"c","temperature.sum.value":202.0,"temperature.max.value":202.0,"timestamp.date_histogram.time_zone":"UTC","temperature.min.value":202.0,"timestamp.date_histogram._count":1,"timestamp.date_histogram.interval":"1h","_rollup.computed":["temperature.sum","temperature.min","voltage.avg","temperature.max","node.terms","timestamp.date_histogram"],"voltage.avg.value":4.0,"node.terms._count":1,"_rollup.version":1,"timestamp.date_histogram.timestamp":1516294800000,"voltage.avg._count":1.0,"_rollup.id":"sensor"} - -''' - setups['admin_role'] = ''' - - do: - security.put_role: - name: "my_admin_role" - body: > - { - "cluster": ["all"], - "indices": [ - {"names": ["index1", "index2" ], "privileges": ["all"], "field_security" : {"grant" : [ "title", "body" ]}} - ], - "run_as": [ "other_user" ], - "metadata" : {"version": 1} - } -''' - setups['jacknich_user'] = ''' - - do: - security.put_user: - username: "jacknich" - body: > - { - "password" : "l0ng-r4nd0m-p@ssw0rd", - "roles" : [ "admin", "other_role1" ], - "full_name" : "Jack Nicholson", - "email" : "jacknich@example.com", - "metadata" : { "intelligence" : 7 } - } - - do: - security.activate_user_profile: - body: > - { - "grant_type": "password", - "username": "jacknich", - "password" : "l0ng-r4nd0m-p@ssw0rd" - } -''' - setups['app0102_privileges'] = ''' - - do: - security.put_privileges: - body: > - { - "myapp": { - "read": { - "application": "myapp", - "name": "read", - "actions": [ - "data:read/*", - "action:login" ], - "metadata": { - "description": "Read access to myapp" - } - } - } - } -''' - setups['service_token42'] = ''' - - do: - security.create_service_token: - namespace: elastic - service: fleet-server - name: token42 -''' - setups['user_profiles'] = ''' - - do: - security.put_user: - username: "jacknich" - body: > - { - "password" : "l0ng-r4nd0m-p@ssw0rd", - "roles" : [ "admin", "other_role1" ], - "full_name" : "Jack Nicholson", - "email" : "jacknich@example.com" - } - - do: - security.put_user: - username: "jackrea" - body: > - { - "password" : "l0ng-r4nd0m-p@ssw0rd", - "roles" : [ "admin" ], - "full_name" : "Jack Reacher", - "email" : "jackrea@example.com" - } - - do: - security.put_user: - username: "jackspa" - body: > - { - "password" : "l0ng-r4nd0m-p@ssw0rd", - "roles" : [ "user" ], - "full_name" : "Jack Sparrow", - "email" : "jackspa@example.com" - } - - do: - security.activate_user_profile: - body: > - { - "grant_type": "password", - "username": "jacknich", - "password" : "l0ng-r4nd0m-p@ssw0rd" - } - - do: - security.activate_user_profile: - body: > - { - "grant_type": "password", - "username": "jackrea", - "password" : "l0ng-r4nd0m-p@ssw0rd" - } - - do: - security.activate_user_profile: - body: > - { - "grant_type": "password", - "username": "jackspa", - "password" : "l0ng-r4nd0m-p@ssw0rd" - } - # jacknich - - do: - security.update_user_profile_data: - uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0" - body: > - { - "labels": { - "direction": "north" - }, - "data": { - "app1": { - "key1": "value1" - } - } - } - # jackrea - - do: - security.update_user_profile_data: - uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0" - body: > - { - "labels": { - "direction": "west" - } - } - # jackspa - - do: - security.update_user_profile_data: - uid: "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0" - body: > - { - "labels": { - "direction": "south" - } - } -''' -} diff --git a/x-pack/docs/src/yamlRestTest/java/org/elasticsearch/smoketest/XDocsClientYamlTestSuiteIT.java b/x-pack/docs/src/yamlRestTest/java/org/elasticsearch/smoketest/XDocsClientYamlTestSuiteIT.java deleted file mode 100644 index 2c81a5686becc..0000000000000 --- a/x-pack/docs/src/yamlRestTest/java/org/elasticsearch/smoketest/XDocsClientYamlTestSuiteIT.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -package org.elasticsearch.smoketest; - -import com.carrotsearch.randomizedtesting.annotations.Name; - -import org.apache.http.HttpHost; -import org.elasticsearch.Version; -import org.elasticsearch.client.RestClient; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.test.rest.yaml.ClientYamlDocsTestClient; -import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; -import org.elasticsearch.test.rest.yaml.ClientYamlTestClient; -import org.elasticsearch.test.rest.yaml.ClientYamlTestResponse; -import org.elasticsearch.test.rest.yaml.restspec.ClientYamlSuiteRestSpec; -import org.elasticsearch.xpack.test.rest.AbstractXPackRestTest; -import org.junit.After; - -import java.util.List; -import java.util.Map; - -import static java.util.Collections.emptyList; -import static java.util.Collections.emptyMap; -import static java.util.Collections.singletonMap; -import static org.elasticsearch.xpack.core.security.authc.support.UsernamePasswordToken.basicAuthHeaderValue; -import static org.hamcrest.Matchers.is; - -public class XDocsClientYamlTestSuiteIT extends AbstractXPackRestTest { - private static final String USER_TOKEN = basicAuthHeaderValue("test_admin", new SecureString("x-pack-test-password".toCharArray())); - - public XDocsClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { - super(testCandidate); - } - - @Override - protected void afterIfFailed(List errors) { - super.afterIfFailed(errors); - String name = getTestName().split("=")[1]; - name = name.substring(0, name.length() - 1); - name = name.replaceAll("/([^/]+)$", ".asciidoc:$1"); - logger.error( - "This failing test was generated by documentation starting at {}. It may include many snippets. " - + "See Elasticsearch's docs/README.asciidoc for an explanation of test generation.", - name - ); - } - - @Override - protected boolean preserveTemplatesUponCompletion() { - return true; - } - - @Override - protected ClientYamlTestClient initClientYamlTestClient( - final ClientYamlSuiteRestSpec restSpec, - final RestClient restClient, - final List hosts, - final Version esVersion, - final Version masterVersion, - final String os - ) { - return new ClientYamlDocsTestClient( - restSpec, - restClient, - hosts, - esVersion, - masterVersion, - os, - this::getClientBuilderWithSniffedHosts - ); - } - - /** - * All tests run as a an administrative user but use es-shield-runas-user to become a less privileged user. - */ - @Override - protected Settings restClientSettings() { - return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", USER_TOKEN).build(); - } - - /** - * Re-enables watcher after every test just in case any test disables it. One does. - */ - @After - public void reenableWatcher() throws Exception { - if (isWatcherTest()) { - assertBusy(() -> { - ClientYamlTestResponse response = getAdminExecutionContext().callApi("watcher.stats", emptyMap(), emptyList(), emptyMap()); - String state = (String) response.evaluate("stats.0.watcher_state"); - - switch (state) { - case "stopped": - ClientYamlTestResponse startResponse = getAdminExecutionContext().callApi( - "watcher.start", - emptyMap(), - emptyList(), - emptyMap() - ); - boolean isAcknowledged = (boolean) startResponse.evaluate("acknowledged"); - assertThat(isAcknowledged, is(true)); - throw new AssertionError("waiting until stopped state reached started state"); - case "stopping": - throw new AssertionError("waiting until stopping state reached stopped state to start again"); - case "starting": - throw new AssertionError("waiting until starting state reached started state"); - case "started": - // all good here, we are done - break; - default: - throw new AssertionError("unknown state[" + state + "]"); - } - }); - } - } - - protected boolean isWatcherTest() { - String testName = getTestName(); - return testName != null && (testName.contains("watcher/") || testName.contains("watcher\\")); - } - - @Override - protected boolean isMachineLearningTest() { - String testName = getTestName(); - return testName != null && (testName.contains("ml/") || testName.contains("ml\\")); - } - - /** - * Deletes users after every test just in case any test adds any. - */ - @After - public void deleteUsers() throws Exception { - ClientYamlTestResponse response = getAdminExecutionContext().callApi("security.get_user", emptyMap(), emptyList(), emptyMap()); - @SuppressWarnings("unchecked") - Map users = (Map) response.getBody(); - for (String user : users.keySet()) { - Map metadataMap = (Map) ((Map) users.get(user)).get("metadata"); - Boolean reserved = metadataMap == null ? null : (Boolean) metadataMap.get("_reserved"); - if (reserved == null || reserved == false) { - logger.warn("Deleting leftover user {}", user); - getAdminExecutionContext().callApi("security.delete_user", singletonMap("username", user), emptyList(), emptyMap()); - } - } - } - - @Override - protected boolean randomizeContentType() { - return false; - } -}