elastic-enterprise-search 0.2.1 → 7.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ci/.gitignore +1 -0
- data/.ci/Dockerfile +12 -0
- data/.ci/certs/README.md +50 -0
- data/.ci/certs/ca.crt +20 -0
- data/.ci/certs/ca.key +27 -0
- data/.ci/certs/testnode.crt +21 -0
- data/.ci/certs/testnode.key +27 -0
- data/.ci/certs/testnode_no_san.crt +19 -0
- data/.ci/certs/testnode_no_san.key +27 -0
- data/.ci/functions/cleanup.sh +67 -0
- data/.ci/functions/imports.sh +59 -0
- data/.ci/functions/wait-for-container.sh +36 -0
- data/.ci/jobs/defaults.yml +69 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.11.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+pull-request.yml +19 -0
- data/.ci/run-elasticsearch.sh +127 -0
- data/.ci/run-enterprise-search.sh +71 -0
- data/.ci/run-local.sh +14 -0
- data/.ci/run-repository.sh +47 -0
- data/.ci/run-tests +27 -0
- data/.ci/test-matrix.yml +14 -0
- data/.github/workflows/rubocop.yml +15 -0
- data/.github/workflows/testing.yml +40 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +52 -0
- data/CONTRIBUTING.md +43 -0
- data/Gemfile +23 -1
- data/{LICENSE.txt → LICENSE} +33 -32
- data/README.md +29 -93
- data/Rakefile +48 -1
- data/docs/guide/app-search-api.asciidoc +186 -0
- data/docs/guide/connecting.asciidoc +125 -0
- data/docs/guide/development.asciidoc +42 -0
- data/docs/guide/enterprise-search-api.asciidoc +46 -0
- data/docs/guide/index.asciidoc +19 -0
- data/docs/guide/installation.asciidoc +18 -0
- data/docs/guide/overview.asciidoc +59 -0
- data/docs/guide/release_notes/710.asciidoc +4 -0
- data/docs/guide/release_notes/711.asciidoc +27 -0
- data/docs/guide/release_notes/712.asciidoc +26 -0
- data/docs/guide/release_notes/index.asciidoc +14 -0
- data/docs/guide/workplace-search-api.asciidoc +121 -0
- data/elastic-enterprise-search.gemspec +49 -12
- data/lib/elastic-enterprise-search.rb +20 -1
- data/lib/elastic/.rubocop.yml +6 -0
- data/lib/elastic/app-search/api/add_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/api_logs.rb +62 -0
- data/lib/elastic/app-search/api/count_analytics.rb +52 -0
- data/lib/elastic/app-search/api/create_curation.rb +54 -0
- data/lib/elastic/app-search/api/create_engine.rb +53 -0
- data/lib/elastic/app-search/api/create_synonym_set.rb +51 -0
- data/lib/elastic/app-search/api/curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_documents.rb +51 -0
- data/lib/elastic/app-search/api/delete_engine.rb +50 -0
- data/lib/elastic/app-search/api/delete_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/delete_synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/documents.rb +51 -0
- data/lib/elastic/app-search/api/engine.rb +50 -0
- data/lib/elastic/app-search/api/index_documents.rb +51 -0
- data/lib/elastic/app-search/api/list_curations.rb +52 -0
- data/lib/elastic/app-search/api/list_documents.rb +52 -0
- data/lib/elastic/app-search/api/list_engines.rb +49 -0
- data/lib/elastic/app-search/api/list_synonym_sets.rb +52 -0
- data/lib/elastic/app-search/api/log_clickthrough.rb +57 -0
- data/lib/elastic/app-search/api/multi_search.rb +51 -0
- data/lib/elastic/app-search/api/put_curation.rb +57 -0
- data/lib/elastic/app-search/api/put_documents.rb +51 -0
- data/lib/elastic/app-search/api/put_schema.rb +51 -0
- data/lib/elastic/app-search/api/put_search_settings.rb +51 -0
- data/lib/elastic/app-search/api/put_synonym_set.rb +54 -0
- data/lib/elastic/app-search/api/query_suggestion.rb +54 -0
- data/lib/elastic/app-search/api/reset_search_settings.rb +50 -0
- data/lib/elastic/app-search/api/schema.rb +50 -0
- data/lib/elastic/app-search/api/search.rb +50 -0
- data/lib/elastic/app-search/api/search_settings.rb +50 -0
- data/lib/elastic/app-search/api/synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/top_clicks_analytics.rb +54 -0
- data/lib/elastic/app-search/api/top_queries_analytics.rb +53 -0
- data/lib/elastic/app-search/app_search.rb +82 -0
- data/lib/elastic/enterprise-search/api/health.rb +43 -0
- data/lib/elastic/enterprise-search/api/put_read_only.rb +44 -0
- data/lib/elastic/enterprise-search/api/read_only.rb +43 -0
- data/lib/elastic/enterprise-search/api/stats.rb +45 -0
- data/lib/elastic/enterprise-search/api/version.rb +43 -0
- data/lib/elastic/enterprise-search/client.rb +90 -52
- data/lib/elastic/enterprise-search/configuration.rb +32 -16
- data/lib/elastic/enterprise-search/exceptions.rb +19 -0
- data/lib/elastic/enterprise-search/request.rb +59 -81
- data/lib/elastic/enterprise-search/utils.rb +28 -1
- data/lib/elastic/enterprise-search/version.rb +20 -1
- data/lib/elastic/enterprise_search.rb +38 -0
- data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
- data/lib/elastic/workplace-search/api/create_external_identity.rb +51 -0
- data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
- data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
- data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
- data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
- data/lib/elastic/workplace-search/api/put_external_identity.rb +54 -0
- data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/search.rb +60 -0
- data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
- data/lib/elastic/workplace-search/workplace_search.rb +84 -0
- data/spec/app-search/api_count_analytics_spec.rb +34 -0
- data/spec/app-search/api_curations_spec.rb +97 -0
- data/spec/app-search/api_documents_spec.rb +102 -0
- data/spec/app-search/api_engines_spec.rb +67 -0
- data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
- data/spec/app-search/api_logs_spec.rb +36 -0
- data/spec/app-search/api_meta_engines_spec.rb +72 -0
- data/spec/app-search/api_query_suggestion_spec.rb +39 -0
- data/spec/app-search/api_schema_spec.rb +48 -0
- data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
- data/spec/app-search/api_search_settings_spec.rb +76 -0
- data/spec/app-search/api_spec_helper.rb +14 -0
- data/spec/app-search/api_synonyms_spec.rb +79 -0
- data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
- data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
- data/spec/app-search/client_spec.rb +88 -0
- data/spec/app-search/date_spec.rb +69 -0
- data/spec/enterprise-search/client_spec.rb +107 -0
- data/spec/enterprise-search/request_spec.rb +136 -0
- data/spec/enterprise-search/utils_spec.rb +46 -0
- data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
- data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
- data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
- data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
- data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
- data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
- data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
- data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
- data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/search.yml +57 -0
- data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
- data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
- data/spec/fixtures/vcr/workplace_search/add_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/clear_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
- data/spec/fixtures/vcr/workplace_search/create_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/delete_documents.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/delete_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/index_documents.yml +55 -0
- data/spec/fixtures/vcr/workplace_search/list_external_identities.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/list_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
- data/spec/fixtures/vcr/workplace_search/put_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/put_user_permissions.yml +103 -0
- data/spec/fixtures/vcr/workplace_search/remove_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/retrieve_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
- data/spec/fixtures/vcr/workplace_search/user_permissions_empty.yml +53 -0
- data/spec/integration/enterprise_search_api_spec.rb +96 -0
- data/spec/spec_helper.rb +27 -14
- data/spec/webmock_requires.rb +4 -0
- data/spec/workplace-search/client_spec.rb +77 -0
- data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
- data/spec/workplace-search/documents_spec.rb +80 -0
- data/spec/workplace-search/external_identities_spec.rb +84 -0
- data/spec/workplace-search/permissions_spec.rb +136 -0
- data/spec/workplace-search/search_spec.rb +53 -0
- metadata +272 -28
- data/.circleci/config.yml +0 -68
- data/.travis.yml +0 -15
- data/NOTICE.txt +0 -3
- data/lib/elastic/enterprise-search.rb +0 -7
- data/logo-enterprise-search.png +0 -0
- data/spec/client_spec.rb +0 -57
- data/spec/configuration_spec.rb +0 -19
- data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
- data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
data/spec/spec_helper.rb
CHANGED
@@ -1,28 +1,41 @@
|
|
1
|
-
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'simplecov'
|
21
|
+
SimpleCov.start
|
22
|
+
require 'elastic/enterprise_search'
|
2
23
|
require 'rspec'
|
3
|
-
require 'webmock'
|
4
24
|
require 'vcr'
|
5
|
-
require 'awesome_print'
|
6
|
-
require 'elastic/enterprise-search'
|
7
|
-
|
8
25
|
|
9
26
|
RSpec.configure do |config|
|
10
27
|
# Run specs in random order to surface order dependencies. If you find an
|
11
28
|
# order dependency and want to debug it, you can fix the order by providing
|
12
29
|
# the seed, which is printed after each run.
|
13
30
|
# --seed 1234
|
14
|
-
config.order =
|
31
|
+
config.order = 'random'
|
32
|
+
|
33
|
+
config.add_formatter('documentation')
|
34
|
+
config.add_formatter('RspecJunitFormatter', 'enterprise-search-junit.xml')
|
15
35
|
|
16
36
|
VCR.configure do |c|
|
17
37
|
c.cassette_library_dir = 'spec/fixtures/vcr'
|
18
38
|
c.hook_into :webmock
|
19
|
-
|
20
|
-
|
21
|
-
config.before :each do
|
22
|
-
Elastic::EnterpriseSearch.endpoint = ENV["ENDPOINT"]
|
23
|
-
end
|
24
|
-
|
25
|
-
config.after :each do
|
26
|
-
Elastic::EnterpriseSearch.reset
|
39
|
+
c.allow_http_connections_when_no_cassette = true
|
27
40
|
end
|
28
41
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
|
23
|
+
let(:host) { 'https://localhost:8080' }
|
24
|
+
let(:access_token) { 'access_token' }
|
25
|
+
|
26
|
+
context 'dependant on EnterpriseSearch' do
|
27
|
+
let(:ent_client) { Elastic::EnterpriseSearch::Client.new(host: host) }
|
28
|
+
let(:workplace_client) { ent_client.workplace_search }
|
29
|
+
|
30
|
+
it 'initializes a workplace search client' do
|
31
|
+
expect(workplace_client).not_to be nil
|
32
|
+
expect(workplace_client).to be_a(Elastic::EnterpriseSearch::WorkplaceSearch::Client)
|
33
|
+
expect(workplace_client.host).to eq(host)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'sets up authentication during initialization' do
|
37
|
+
ent_client = Elastic::EnterpriseSearch::Client.new(host: host)
|
38
|
+
workplace_client = ent_client.workplace_search(http_auth: access_token)
|
39
|
+
expect(workplace_client.http_auth).to eq access_token
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'sets up authentication as a parameter' do
|
43
|
+
workplace_client.http_auth = access_token
|
44
|
+
expect(workplace_client.http_auth).to eq access_token
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'independent from EnterpriseSearch client' do
|
49
|
+
let(:workplace_client) { Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(host: host) }
|
50
|
+
|
51
|
+
it 'initializes a workplace search client' do
|
52
|
+
expect(workplace_client).not_to be nil
|
53
|
+
expect(workplace_client).to be_a(Elastic::EnterpriseSearch::WorkplaceSearch::Client)
|
54
|
+
expect(workplace_client.host).to eq(host)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'sets up authentication during initialization' do
|
58
|
+
ent_client = Elastic::EnterpriseSearch::Client.new(host: host)
|
59
|
+
workplace_client = ent_client.workplace_search(http_auth: access_token)
|
60
|
+
expect(workplace_client.http_auth).to eq access_token
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'sets up authentication as a parameter' do
|
64
|
+
workplace_client.http_auth = access_token
|
65
|
+
expect(workplace_client.http_auth).to eq access_token
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'OAuth' do
|
70
|
+
let(:client) { Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(host: host) }
|
71
|
+
|
72
|
+
it 'generates an authorization url' do
|
73
|
+
authorization_url = 'https://localhost:8080/ws/oauth/authorize?response_type=code&client_id=client_id&redirect_uri=https%3A%2F%2Flocalhost%3A3002'
|
74
|
+
expect(client.authorization_url('client_id', 'https://localhost:3002')).to eq authorization_url
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
|
23
|
+
let(:host) { ENV['ELASTIC_ENTERPRISE_HOST'] || 'http://localhost:3002' }
|
24
|
+
let(:content_source_id) { ENV['ELASTIC_WORKPLACE_SOURCE_ID'] || 'content_source_id' }
|
25
|
+
let(:client) do
|
26
|
+
Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(
|
27
|
+
host: host
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'create analytics event' do
|
32
|
+
it 'creates an event' do
|
33
|
+
VCR.use_cassette('workplace_search/oauth_request_token') do
|
34
|
+
client_id = 'client_id'
|
35
|
+
client_secret = 'client_secret'
|
36
|
+
redirect_uri = 'http://localhost:9393'
|
37
|
+
|
38
|
+
# gets authorization code via client.authorization_url(client_id, redirect_uri)
|
39
|
+
authorization_code = 'authorization_code'
|
40
|
+
@oauth_access_token = client.request_access_token(client_id, client_secret, authorization_code, redirect_uri)
|
41
|
+
end
|
42
|
+
|
43
|
+
VCR.use_cassette('workplace_search/create_analytics_event') do
|
44
|
+
body = {
|
45
|
+
type: 'click',
|
46
|
+
query_id: 'search_query_id',
|
47
|
+
document_id: 'document_id',
|
48
|
+
page: 1,
|
49
|
+
content_source_id: 'content_source_id',
|
50
|
+
rank: 1,
|
51
|
+
event: 'api'
|
52
|
+
}
|
53
|
+
|
54
|
+
response = client.create_analytics_event(access_token: @oauth_access_token, body: body)
|
55
|
+
expect(response.status).to eq 200
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
|
23
|
+
let(:host) { ENV['ELASTIC_ENTERPRISE_HOST'] || 'http://localhost:3002' }
|
24
|
+
let(:access_token) { ENV['ELASTIC_WORKPLACE_TOKEN'] || 'access_token' }
|
25
|
+
let(:content_source_id) { ENV['ELASTIC_WORKPLACE_SOURCE_ID'] || 'content_source_id' }
|
26
|
+
let(:client) do
|
27
|
+
Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(
|
28
|
+
host: host,
|
29
|
+
http_auth: access_token
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'documents' do
|
34
|
+
let(:documents) do
|
35
|
+
[
|
36
|
+
{ 'id' => '4e696e74656e646f203634',
|
37
|
+
'url' => 'https://www.elastic.co/blog/introducing-quick-start-guides-getting-started-with-elastic-enterprise-search-for-free',
|
38
|
+
'title' => 'Getting started with Elastic Enterprise Search for free',
|
39
|
+
'body' => 'this is a test' },
|
40
|
+
{
|
41
|
+
'id' => '47616d6520426f7920436f6c6f72',
|
42
|
+
'url' => 'https://www.elastic.co/workplace-search',
|
43
|
+
'title' => 'One-stop answer shop for the virtual workplace',
|
44
|
+
'body' => 'this is also a test'
|
45
|
+
}
|
46
|
+
]
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'indexes' do
|
50
|
+
VCR.use_cassette('workplace_search/index_documents') do
|
51
|
+
response = client.index_documents(content_source_id, documents: documents)
|
52
|
+
|
53
|
+
expect(response.status).to eq 200
|
54
|
+
expect(response.body)
|
55
|
+
.to eq(
|
56
|
+
{ 'results' =>
|
57
|
+
[
|
58
|
+
{ 'id' => '4e696e74656e646f203634', 'errors' => [] },
|
59
|
+
{ 'id' => '47616d6520426f7920436f6c6f72', 'errors' => [] }
|
60
|
+
] }
|
61
|
+
)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'deletes' do
|
66
|
+
VCR.use_cassette('workplace_search/delete_documents') do
|
67
|
+
response = client.delete_documents(content_source_id, document_ids: documents.map { |doc| doc['id'] })
|
68
|
+
expect(response.status).to eq 200
|
69
|
+
expect(response.body)
|
70
|
+
.to eq(
|
71
|
+
{ 'results' =>
|
72
|
+
[
|
73
|
+
{ 'id' => '4e696e74656e646f203634', 'success' => true },
|
74
|
+
{ 'id' => '47616d6520426f7920436f6c6f72', 'success' => true }
|
75
|
+
] }
|
76
|
+
)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
|
23
|
+
let(:host) { ENV['ELASTIC_ENTERPRISE_HOST'] || 'http://localhost:3002' }
|
24
|
+
let(:access_token) { ENV['ELASTIC_WORKPLACE_TOKEN'] || 'access_token' }
|
25
|
+
let(:content_source_id) { ENV['ELASTIC_WORKPLACE_SOURCE_ID'] || 'content_source_id' }
|
26
|
+
let(:client) do
|
27
|
+
Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(
|
28
|
+
host: host,
|
29
|
+
http_auth: access_token
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'external identities' do
|
34
|
+
let(:user) { 'elastic_user' }
|
35
|
+
let(:source_user_id) { 'example@elastic.co' }
|
36
|
+
|
37
|
+
it 'creates an external identity' do
|
38
|
+
VCR.use_cassette('workplace_search/create_external_identity') do
|
39
|
+
body = { user: user, source_user_id: source_user_id }
|
40
|
+
response = client.create_external_identity(content_source_id, body: body)
|
41
|
+
|
42
|
+
expect(response.status).to eq 200
|
43
|
+
expect(response.body).to eq({ 'source_user_id' => source_user_id, 'user' => user })
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'retrieves an external identity' do
|
48
|
+
VCR.use_cassette('workplace_search/retrieve_external_identity') do
|
49
|
+
response = client.external_identity(content_source_id, user: user)
|
50
|
+
|
51
|
+
expect(response.status).to eq 200
|
52
|
+
expect(response.body).to eq({ 'source_user_id' => source_user_id, 'user' => user })
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'lists external identities' do
|
57
|
+
VCR.use_cassette('workplace_search/list_external_identities') do
|
58
|
+
response = client.list_external_identities(content_source_id)
|
59
|
+
|
60
|
+
expect(response.status).to eq 200
|
61
|
+
expect(response.body['results']).to eq([{ 'source_user_id' => source_user_id, 'user' => user }])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'updates an external identity' do
|
66
|
+
VCR.use_cassette('workplace_search/put_external_identity') do
|
67
|
+
body = { source_user_id: 'example2@elastic.co' }
|
68
|
+
response = client.put_external_identity(content_source_id, user: user, body: body)
|
69
|
+
|
70
|
+
expect(response.status).to eq 200
|
71
|
+
expect(response.body).to eq({ 'source_user_id' => 'example2@elastic.co', 'user' => user })
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'deletes an external identity' do
|
76
|
+
VCR.use_cassette('workplace_search/delete_external_identity') do
|
77
|
+
response = client.delete_external_identity(content_source_id, user: user)
|
78
|
+
|
79
|
+
expect(response.status).to eq 200
|
80
|
+
expect(response.body).to eq 'ok'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
# frozen_string_literal: true
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Elastic::EnterpriseSearch::WorkplaceSearch::Client do
|
23
|
+
let(:host) { ENV['ELASTIC_ENTERPRISE_HOST'] || 'http://localhost:3002' }
|
24
|
+
let(:access_token) { ENV['ELASTIC_WORKPLACE_TOKEN'] || 'access_token' }
|
25
|
+
let(:content_source_id) { ENV['ELASTIC_WORKPLACE_SOURCE_ID'] || 'content_source_id' }
|
26
|
+
let(:client) do
|
27
|
+
Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(
|
28
|
+
host: host,
|
29
|
+
http_auth: access_token
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'permissions' do
|
34
|
+
let(:user) { 'enterprise_search' }
|
35
|
+
|
36
|
+
it 'lists permissions' do
|
37
|
+
VCR.use_cassette('workplace_search/list_permissions') do
|
38
|
+
response = client.list_permissions(content_source_id)
|
39
|
+
|
40
|
+
expect(response.status).to eq 200
|
41
|
+
|
42
|
+
expect(response.body)
|
43
|
+
.to eq(
|
44
|
+
{ 'meta' =>
|
45
|
+
{ 'page' => { 'current' => 1, 'total_pages' => 1, 'total_results' => 1, 'size' => 25 } }, 'results' => [
|
46
|
+
{ 'user' => 'enterprise_search', 'permissions' => [] }
|
47
|
+
] }
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'gets user permissions' do
|
53
|
+
clear_user_permissions
|
54
|
+
|
55
|
+
VCR.use_cassette('workplace_search/user_permissions_empty') do
|
56
|
+
response = client.user_permissions(content_source_id, { user: user })
|
57
|
+
|
58
|
+
expect(response.status).to eq 200
|
59
|
+
|
60
|
+
expect(response.body)
|
61
|
+
.to eq(
|
62
|
+
{ 'user' => 'enterprise_search', 'permissions' => [] }
|
63
|
+
)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def clear_user_permissions
|
68
|
+
VCR.use_cassette('workplace_search/clear_user_permissions') do
|
69
|
+
client.put_user_permissions(
|
70
|
+
content_source_id,
|
71
|
+
{ permissions: [], user: user }
|
72
|
+
)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'updates user permissions' do
|
77
|
+
VCR.use_cassette('workplace_search/put_user_permissions') do
|
78
|
+
response = client.add_user_permissions(
|
79
|
+
content_source_id,
|
80
|
+
{ permissions: ['testing', 'more', 'permissions'], user: user }
|
81
|
+
)
|
82
|
+
|
83
|
+
expect(response.status).to eq 200
|
84
|
+
|
85
|
+
expect(response.body)
|
86
|
+
.to eq(
|
87
|
+
{ 'user' => 'enterprise_search', 'permissions' => ['testing', 'more', 'permissions'] }
|
88
|
+
)
|
89
|
+
|
90
|
+
response = client.put_user_permissions(
|
91
|
+
content_source_id,
|
92
|
+
{ permissions: [], user: user }
|
93
|
+
)
|
94
|
+
|
95
|
+
expect(response.status).to eq 200
|
96
|
+
|
97
|
+
expect(response.body)
|
98
|
+
.to eq(
|
99
|
+
{ 'user' => 'enterprise_search', 'permissions' => [] }
|
100
|
+
)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'adds and removes permissions from a user' do
|
105
|
+
VCR.use_cassette('workplace_search/add_user_permissions') do
|
106
|
+
permissions = ['permission1', 'permission2']
|
107
|
+
response = client.add_user_permissions(
|
108
|
+
content_source_id,
|
109
|
+
{ permissions: permissions, user: user }
|
110
|
+
)
|
111
|
+
|
112
|
+
expect(response.status).to eq 200
|
113
|
+
|
114
|
+
expect(response.body)
|
115
|
+
.to eq(
|
116
|
+
{ 'user' => 'enterprise_search', 'permissions' => ['permission1', 'permission2'] }
|
117
|
+
)
|
118
|
+
end
|
119
|
+
|
120
|
+
VCR.use_cassette('workplace_search/remove_user_permissions') do
|
121
|
+
permissions = ['permission1', 'permission2']
|
122
|
+
response = client.remove_user_permissions(
|
123
|
+
content_source_id,
|
124
|
+
{ permissions: permissions, user: user }
|
125
|
+
)
|
126
|
+
|
127
|
+
expect(response.status).to eq 200
|
128
|
+
|
129
|
+
expect(response.body)
|
130
|
+
.to eq(
|
131
|
+
{ 'user' => 'enterprise_search', 'permissions' => [] }
|
132
|
+
)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|