swiftype 0.0.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/.travis.yml +6 -0
- data/Gemfile +1 -1
- data/README.md +202 -283
- data/lib/data/ca-bundle.crt +3554 -0
- data/lib/swiftype.rb +7 -31
- data/lib/swiftype/client.rb +439 -11
- data/lib/swiftype/configuration.rb +29 -4
- data/lib/swiftype/exceptions.rb +2 -0
- data/lib/swiftype/ext/backport-uri.rb +33 -0
- data/lib/swiftype/request.rb +88 -20
- data/lib/swiftype/result_set.rb +43 -6
- data/lib/swiftype/sso.rb +20 -0
- data/lib/swiftype/version.rb +1 -1
- data/spec/client_spec.rb +576 -0
- data/spec/configuration_spec.rb +36 -0
- data/spec/deprecated_spec.rb +20 -0
- data/spec/fixtures/vcr/analytics_autoselects.yml +55 -0
- data/spec/fixtures/vcr/analytics_autoselects_with_document_type.yml +55 -0
- data/spec/fixtures/vcr/analytics_autoselects_with_document_type_and_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_autoselects_with_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_clicks.yml +55 -0
- data/spec/fixtures/vcr/analytics_clicks_with_document_type.yml +55 -0
- data/spec/fixtures/vcr/analytics_clicks_with_document_type_and_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_clicks_with_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_searches.yml +55 -0
- data/spec/fixtures/vcr/analytics_searches_with_document_type_and_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_searches_with_time_range.yml +55 -0
- data/spec/fixtures/vcr/analytics_searchs_with_document_type.yml +55 -0
- data/spec/fixtures/vcr/analytics_top_no_result_queries.yml +55 -0
- data/spec/fixtures/vcr/analytics_top_no_result_queries_paginated.yml +55 -0
- data/spec/fixtures/vcr/analytics_top_queries.yml +55 -0
- data/spec/fixtures/vcr/analytics_top_queries_paginated.yml +55 -0
- data/spec/fixtures/vcr/analytics_top_queries_too_large.yml +51 -0
- data/spec/fixtures/vcr/bulk_create_documents.yml +49 -0
- data/spec/fixtures/vcr/bulk_create_or_update_documents_failure.yml +45 -0
- data/spec/fixtures/vcr/bulk_create_or_update_documents_success.yml +49 -0
- data/spec/fixtures/vcr/bulk_destroy_documents.yml +45 -0
- data/spec/fixtures/vcr/crawl_url.yml +45 -0
- data/spec/fixtures/vcr/create_document.yml +48 -0
- data/spec/fixtures/vcr/create_document_type.yml +45 -0
- data/spec/fixtures/vcr/create_domain.yml +45 -0
- data/spec/fixtures/vcr/create_engine.yml +45 -0
- data/spec/fixtures/vcr/create_or_update_document_create.yml +47 -0
- data/spec/fixtures/vcr/create_or_update_document_update.yml +47 -0
- data/spec/fixtures/vcr/create_user.yml +45 -0
- data/spec/fixtures/vcr/destroy_document.yml +41 -0
- data/spec/fixtures/vcr/destroy_document_type.yml +41 -0
- data/spec/fixtures/vcr/destroy_domain.yml +41 -0
- data/spec/fixtures/vcr/destroy_engine.yml +41 -0
- data/spec/fixtures/vcr/destroy_non_existent_document_type.yml +43 -0
- data/spec/fixtures/vcr/document_type_search.yml +60 -0
- data/spec/fixtures/vcr/document_type_search_pagination.yml +45 -0
- data/spec/fixtures/vcr/document_type_suggest.yml +50 -0
- data/spec/fixtures/vcr/document_type_suggest_pagination.yml +45 -0
- data/spec/fixtures/vcr/engine_search.yml +64 -0
- data/spec/fixtures/vcr/engine_search_facets.yml +162 -0
- data/spec/fixtures/vcr/engine_search_pagination.yml +45 -0
- data/spec/fixtures/vcr/engine_suggest.yml +52 -0
- data/spec/fixtures/vcr/engine_suggest_pagination.yml +45 -0
- data/spec/fixtures/vcr/find_document.yml +47 -0
- data/spec/fixtures/vcr/find_document_type.yml +45 -0
- data/spec/fixtures/vcr/find_domain.yml +45 -0
- data/spec/fixtures/vcr/find_domain_failure.yml +43 -0
- data/spec/fixtures/vcr/find_engine.yml +45 -0
- data/spec/fixtures/vcr/list_document_type.yml +45 -0
- data/spec/fixtures/vcr/list_documents.yml +68 -0
- data/spec/fixtures/vcr/list_documents_with_pagination.yml +68 -0
- data/spec/fixtures/vcr/list_domains.yml +45 -0
- data/spec/fixtures/vcr/list_engines.yml +46 -0
- data/spec/fixtures/vcr/list_users.yml +45 -0
- data/spec/fixtures/vcr/list_users_with_pagination.yml +45 -0
- data/spec/fixtures/vcr/log_clickthrough_failure.yml +43 -0
- data/spec/fixtures/vcr/log_clickthrough_success.yml +45 -0
- data/spec/fixtures/vcr/recrawl_domain_failure.yml +44 -0
- data/spec/fixtures/vcr/recrawl_domain_success.yml +45 -0
- data/spec/fixtures/vcr/show_user.yml +45 -0
- data/spec/fixtures/vcr/update_document.yml +47 -0
- data/spec/fixtures/vcr/update_document_unknown_field_failure.yml +45 -0
- data/spec/fixtures/vcr/update_documents_failure_non_existent_document.yml +45 -0
- data/spec/fixtures/vcr/update_documents_success.yml +45 -0
- data/spec/fixtures/vcr/users_client_secret_incorrect.yml +42 -0
- data/spec/fixtures/vcr/users_no_api_key.yml +42 -0
- data/spec/fixtures/vcr/users_no_client_id_or_secret.yml +43 -0
- data/spec/platform_spec.rb +95 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/ssl_spec.rb +34 -0
- data/spec/sso_spec.rb +24 -0
- data/swiftype.gemspec +10 -11
- metadata +183 -52
- data/lib/swiftype/base_model.rb +0 -89
- data/lib/swiftype/connection.rb +0 -47
- data/lib/swiftype/document.rb +0 -17
- data/lib/swiftype/document_type.rb +0 -69
- data/lib/swiftype/easy.rb +0 -77
- data/lib/swiftype/engine.rb +0 -33
- data/lib/swiftype/search.rb +0 -23
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: put
|
5
|
+
uri: http://hello:@localhost:3000/api/v1/engines/swiftype-api-example/document_types/videos/documents/FtX8nswnUKU/update_fields.json
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"fields":{"not_a_field":"not a field"}}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 400
|
19
|
+
message: Bad Request
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
X-Ua-Compatible:
|
24
|
+
- IE=Edge
|
25
|
+
Cache-Control:
|
26
|
+
- no-cache
|
27
|
+
Set-Cookie:
|
28
|
+
- _session_id=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTAyNzA5MzQyMWU1YjAxMzQ4NDVkNGMxNDIxZWUyZmFhBjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBlU6Gk1vcGVkOjpCU09OOjpPYmplY3RJZCIRUDg5%2By7ZYCnHAAABSSIiJDJhJDEwJE1rNmZOdHA1cC9ZNVIuQU5sZFB2UWUGOwBU--2f8beaf078c885a87f8fe33dc37fff06995d1993;
|
29
|
+
path=/; HttpOnly
|
30
|
+
X-Request-Id:
|
31
|
+
- 0ee335dac175f232bf27d29dc65cc45a
|
32
|
+
X-Runtime:
|
33
|
+
- '0.034146'
|
34
|
+
Connection:
|
35
|
+
- close
|
36
|
+
Server:
|
37
|
+
- thin 1.5.0 codename Knife
|
38
|
+
body:
|
39
|
+
encoding: US-ASCII
|
40
|
+
string: ! '{"error":"Error updating field(s). Attempt to set() nonexistent key. Known
|
41
|
+
keys are: url, thumbnail_url, channel_id, title, caption, category_name, category_id,
|
42
|
+
published_at, duration, view_count, like_count"}'
|
43
|
+
http_version:
|
44
|
+
recorded_at: Thu, 12 Sep 2013 22:40:58 GMT
|
45
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: put
|
5
|
+
uri: http://hello:@localhost:3000/api/v1/engines/swiftype-api-example/document_types/videos/documents/bulk_update.json
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"documents":[{"external_id":"not_there","fields":[{"name":"title","value":"hi","type":"string"}]}]}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
X-Ua-Compatible:
|
24
|
+
- IE=Edge
|
25
|
+
Etag:
|
26
|
+
- ! '"f9e544f77b7eac7add281ef28ca5559f"'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=0, private, must-revalidate
|
29
|
+
Set-Cookie:
|
30
|
+
- _session_id=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTkzYTQ3NTIwNGRmMWY3MTkyMDVmNGZiZTM3ZWU1ZDQyBjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBlU6Gk1vcGVkOjpCU09OOjpPYmplY3RJZCIRUDg5%2By7ZYCnHAAABSSIiJDJhJDEwJE1rNmZOdHA1cC9ZNVIuQU5sZFB2UWUGOwBU--8efc561386be1984b12246d0ab067933720a0179;
|
31
|
+
path=/; HttpOnly
|
32
|
+
X-Request-Id:
|
33
|
+
- a9fd5dc44eb51d4a7d37fd53b165ba3a
|
34
|
+
X-Runtime:
|
35
|
+
- '0.150458'
|
36
|
+
Connection:
|
37
|
+
- close
|
38
|
+
Server:
|
39
|
+
- thin 1.5.0 codename Knife
|
40
|
+
body:
|
41
|
+
encoding: US-ASCII
|
42
|
+
string: ! '[false]'
|
43
|
+
http_version:
|
44
|
+
recorded_at: Thu, 12 Sep 2013 22:46:53 GMT
|
45
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: put
|
5
|
+
uri: http://hello:@localhost:3000/api/v1/engines/swiftype-api-example/document_types/videos/documents/bulk_update.json
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"documents":[{"external_id":"INscMGmhmX4","fields":{"title":"hi"}},{"external_id":"XfY9Dsg_DZk","fields":{"title":"bye"}}]}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
X-Ua-Compatible:
|
24
|
+
- IE=Edge
|
25
|
+
Etag:
|
26
|
+
- ! '"bb009c6dcb5c622766ad5aa1ea1562d9"'
|
27
|
+
Cache-Control:
|
28
|
+
- max-age=0, private, must-revalidate
|
29
|
+
Set-Cookie:
|
30
|
+
- _session_id=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJWM1YzRmN2EwYjg5NzU5YjU3MDE4ZTg0OWUyMzc0ZWU3BjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBlU6Gk1vcGVkOjpCU09OOjpPYmplY3RJZCIRUDg5%2By7ZYCnHAAABSSIiJDJhJDEwJE1rNmZOdHA1cC9ZNVIuQU5sZFB2UWUGOwBU--f928b9637411dd24c049b64c4bb0ca7455bb0508;
|
31
|
+
path=/; HttpOnly
|
32
|
+
X-Request-Id:
|
33
|
+
- 904d7bc728da1bbcb64649cbfb310078
|
34
|
+
X-Runtime:
|
35
|
+
- '0.062213'
|
36
|
+
Connection:
|
37
|
+
- close
|
38
|
+
Server:
|
39
|
+
- thin 1.5.0 codename Knife
|
40
|
+
body:
|
41
|
+
encoding: US-ASCII
|
42
|
+
string: ! '[true,true]'
|
43
|
+
http_version:
|
44
|
+
recorded_at: Thu, 12 Sep 2013 22:57:05 GMT
|
45
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:3000/api/v1/users.json?client_id=0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8&client_secret=wrong
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 401
|
19
|
+
message: Unauthorized
|
20
|
+
headers:
|
21
|
+
Www-Authenticate:
|
22
|
+
- Basic realm="Swiftype"
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
X-Ua-Compatible:
|
26
|
+
- IE=Edge
|
27
|
+
Cache-Control:
|
28
|
+
- no-cache
|
29
|
+
X-Request-Id:
|
30
|
+
- 3605ea2e9f85f5b74652d7bade07e97a
|
31
|
+
X-Runtime:
|
32
|
+
- '0.013547'
|
33
|
+
Connection:
|
34
|
+
- close
|
35
|
+
Server:
|
36
|
+
- thin 1.5.0 codename Knife
|
37
|
+
body:
|
38
|
+
encoding: US-ASCII
|
39
|
+
string: ! '{"error":"You need to sign in or sign up before continuing."}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Fri, 13 Sep 2013 00:53:23 GMT
|
42
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:3000/api/v1/users.json?client_id=0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8&client_secret=f600fb0b16b516cbb9b9f0eeb60f3b35f685b5ec4a94694ae57b5bbb8860f240
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 401
|
19
|
+
message: Unauthorized
|
20
|
+
headers:
|
21
|
+
Www-Authenticate:
|
22
|
+
- Basic realm="Swiftype"
|
23
|
+
Content-Type:
|
24
|
+
- application/json; charset=utf-8
|
25
|
+
X-Ua-Compatible:
|
26
|
+
- IE=Edge
|
27
|
+
Cache-Control:
|
28
|
+
- no-cache
|
29
|
+
X-Request-Id:
|
30
|
+
- 29b283e021cb39b78c9b6ef0c06ec041
|
31
|
+
X-Runtime:
|
32
|
+
- '0.015617'
|
33
|
+
Connection:
|
34
|
+
- close
|
35
|
+
Server:
|
36
|
+
- thin 1.5.0 codename Knife
|
37
|
+
body:
|
38
|
+
encoding: US-ASCII
|
39
|
+
string: ! '{"error":"You need to sign in or sign up before continuing."}'
|
40
|
+
http_version:
|
41
|
+
recorded_at: Fri, 13 Sep 2013 00:53:23 GMT
|
42
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://hello:@localhost:3000/api/v1/users.json?client_id&client_secret
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Swiftype-Ruby/1.0.0
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 400
|
19
|
+
message: Bad Request
|
20
|
+
headers:
|
21
|
+
Content-Type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
X-Ua-Compatible:
|
24
|
+
- IE=Edge
|
25
|
+
Cache-Control:
|
26
|
+
- no-cache
|
27
|
+
Set-Cookie:
|
28
|
+
- _session_id=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTllNTAzNzFlZDcwYWFhOWQ4MGRiOGYzMTkxMDUzODgzBjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBlU6Gk1vcGVkOjpCU09OOjpPYmplY3RJZCIRUDg5%2By7ZYCnHAAABSSIiJDJhJDEwJE1rNmZOdHA1cC9ZNVIuQU5sZFB2UWUGOwBU--3a3ffdd780afdce5468176fe6593400bdc28ab0e;
|
29
|
+
path=/; HttpOnly
|
30
|
+
X-Request-Id:
|
31
|
+
- afbbf899940811879d2af25a041fa397
|
32
|
+
X-Runtime:
|
33
|
+
- '0.026651'
|
34
|
+
Connection:
|
35
|
+
- close
|
36
|
+
Server:
|
37
|
+
- thin 1.5.0 codename Knife
|
38
|
+
body:
|
39
|
+
encoding: US-ASCII
|
40
|
+
string: ! '{"error":"Missing required parameter: client_id"}'
|
41
|
+
http_version:
|
42
|
+
recorded_at: Fri, 13 Sep 2013 00:53:23 GMT
|
43
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'platform user API' do
|
4
|
+
let(:client) { Swiftype::Client.new }
|
5
|
+
|
6
|
+
context 'authentication' do
|
7
|
+
it 'succeeds with api_key and correct client_id and client_secret' do
|
8
|
+
Swiftype.api_key = 'hello'
|
9
|
+
Swiftype.platform_client_id = '0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8'
|
10
|
+
Swiftype.platform_client_secret = 'f600fb0b16b516cbb9b9f0eeb60f3b35f685b5ec4a94694ae57b5bbb8860f240'
|
11
|
+
|
12
|
+
VCR.use_cassette('list_users') do
|
13
|
+
expect do
|
14
|
+
client.users
|
15
|
+
end.to_not raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'fails without api_key' do
|
20
|
+
Swiftype.platform_client_id = '0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8'
|
21
|
+
Swiftype.platform_client_secret = 'f600fb0b16b516cbb9b9f0eeb60f3b35f685b5ec4a94694ae57b5bbb8860f240'
|
22
|
+
|
23
|
+
VCR.use_cassette('users_no_api_key') do
|
24
|
+
expect do
|
25
|
+
client.users
|
26
|
+
end.to raise_error
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'fails with missing client_id and client_secret' do
|
31
|
+
Swiftype.api_key = 'hello'
|
32
|
+
|
33
|
+
VCR.use_cassette('users_no_client_id_or_secret') do
|
34
|
+
expect do
|
35
|
+
client.users
|
36
|
+
end.to raise_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'fails with incorrect client_secret' do
|
41
|
+
Swiftype.platform_client_id = '0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8'
|
42
|
+
Swiftype.platform_client_secret = 'wrong'
|
43
|
+
|
44
|
+
VCR.use_cassette('users_client_secret_incorrect') do
|
45
|
+
expect do
|
46
|
+
client.users
|
47
|
+
end.to raise_error
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'with proper authentication' do
|
53
|
+
before :each do
|
54
|
+
Swiftype.api_key = 'hello'
|
55
|
+
Swiftype.platform_client_id = '0d94f7cf2bd1e65a7e1f9f929d1bcb2b248af69b8112d24484e87014125538f8'
|
56
|
+
Swiftype.platform_client_secret = 'f600fb0b16b516cbb9b9f0eeb60f3b35f685b5ec4a94694ae57b5bbb8860f240'
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'creating a user' do
|
60
|
+
it 'returns a Hash with user info' do
|
61
|
+
VCR.use_cassette('create_user') do
|
62
|
+
user = client.create_user
|
63
|
+
user.should have_key('id')
|
64
|
+
user.should have_key('access_token')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'listing users' do
|
70
|
+
it 'returns the first page of users' do
|
71
|
+
VCR.use_cassette('list_users') do
|
72
|
+
users = client.users
|
73
|
+
users.length.should == 3
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'returns an empty list of users once you page past the end' do
|
78
|
+
VCR.use_cassette('list_users_with_pagination') do
|
79
|
+
users = client.users(:page => 2)
|
80
|
+
users.length.should == 0
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'showing a user' do
|
86
|
+
it 'returns a Hash with user info' do
|
87
|
+
VCR.use_cassette('show_user') do
|
88
|
+
user = client.user('5230b8c82ed960ba2000001d')
|
89
|
+
user['id'].should == '5230b8c82ed960ba2000001d'
|
90
|
+
user['access_token'].should == '0381294b7ef41db44fba20aad86a52d294b9fae67a26e85139d323eb78106706'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'rspec'
|
3
|
+
require 'vcr'
|
4
|
+
require 'awesome_print'
|
5
|
+
require 'swiftype'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
# Run specs in random order to surface order dependencies. If you find an
|
9
|
+
# order dependency and want to debug it, you can fix the order by providing
|
10
|
+
# the seed, which is printed after each run.
|
11
|
+
# --seed 1234
|
12
|
+
config.order = "random"
|
13
|
+
|
14
|
+
VCR.configure do |c|
|
15
|
+
c.cassette_library_dir = 'spec/fixtures/vcr'
|
16
|
+
c.hook_into :webmock
|
17
|
+
end
|
18
|
+
|
19
|
+
config.before :each do
|
20
|
+
Swiftype.endpoint = "http://localhost:3000/api/v1/"
|
21
|
+
end
|
22
|
+
|
23
|
+
config.after :each do
|
24
|
+
Swiftype.reset
|
25
|
+
end
|
26
|
+
end
|
data/spec/ssl_spec.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# These tests use real network connections to test the SSL
|
4
|
+
# support. Since a real API key is not used, the success condition is
|
5
|
+
# that the connection was made and the approriate error message is
|
6
|
+
# returned from the API
|
7
|
+
describe 'SSL support' do
|
8
|
+
let(:client) { Swiftype::Client.new }
|
9
|
+
|
10
|
+
context 'when the endpoint is configured to use SSL' do
|
11
|
+
it 'connects successfully' do
|
12
|
+
Swiftype.endpoint = 'https://api.swiftype.com/api/v1/'
|
13
|
+
|
14
|
+
VCR.turned_off do
|
15
|
+
WebMock.allow_net_connect!
|
16
|
+
expect do
|
17
|
+
client.search('swiftype-api-example', 'test')
|
18
|
+
end.to raise_error(Swiftype::InvalidCredentials)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when the endpoint is configured not to use SSL' do
|
24
|
+
it 'connects successfully' do
|
25
|
+
Swiftype.endpoint = 'http://api.swiftype.com/api/v1/'
|
26
|
+
VCR.turned_off do
|
27
|
+
WebMock.allow_net_connect!
|
28
|
+
expect do
|
29
|
+
client.search('swiftype-api-example', 'test')
|
30
|
+
end.to raise_error(Swiftype::InvalidCredentials)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/spec/sso_spec.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Swiftype::SSO do
|
4
|
+
let(:user_id) { '5064a7de2ed960e715000276' }
|
5
|
+
let(:timestamp) { 1379382520 }
|
6
|
+
before :each do
|
7
|
+
Swiftype.platform_client_id = '3e4fd842fc99aecb4dc50e5b88a186c1e206ddd516cdd336da3622c4afd7e2e9'
|
8
|
+
Swiftype.platform_client_secret = '4441879b5e2a9c3271f5b1a4bc223b715f091e5ed20fe75d1352e1290c7a6dfb'
|
9
|
+
|
10
|
+
Time.any_instance.stub(:to_i).and_return(timestamp)
|
11
|
+
end
|
12
|
+
|
13
|
+
context '.token' do
|
14
|
+
it 'generates an SSO token' do
|
15
|
+
Swiftype::SSO.token(user_id, timestamp).should == '81033d182ad51f231cc9cda9fb24f2298a411437'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '.url' do
|
20
|
+
it 'generates an SSO URL' do
|
21
|
+
Swiftype::SSO.url(user_id).should == 'https://swiftype.com/sso?user_id=5064a7de2ed960e715000276&client_id=3e4fd842fc99aecb4dc50e5b88a186c1e206ddd516cdd336da3622c4afd7e2e9×tamp=1379382520&token=81033d182ad51f231cc9cda9fb24f2298a411437'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|