Index: third_party/gsutil/third_party/boto/tests/unit/cloudsearchdomain/test_cloudsearchdomain.py |
diff --git a/third_party/gsutil/third_party/boto/tests/unit/cloudsearchdomain/test_cloudsearchdomain.py b/third_party/gsutil/third_party/boto/tests/unit/cloudsearchdomain/test_cloudsearchdomain.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..694e98ff66710dc3dd029cdc0bfd85ecd79b3d9b |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/unit/cloudsearchdomain/test_cloudsearchdomain.py |
@@ -0,0 +1,127 @@ |
+#!/usr/bin env python |
+import json |
+import mock |
+from tests.unit import AWSMockServiceTestCase |
+from boto.cloudsearch2.domain import Domain |
+from boto.cloudsearch2.layer1 import CloudSearchConnection |
+from boto.cloudsearchdomain.layer1 import CloudSearchDomainConnection |
+ |
+ |
+class CloudSearchDomainConnectionTest(AWSMockServiceTestCase): |
+ connection_class = CloudSearchDomainConnection |
+ |
+ domain_status = """{ |
+ "SearchInstanceType": null, |
+ "DomainId": "1234567890/demo", |
+ "DomainName": "demo", |
+ "Deleted": false, |
+ "SearchInstanceCount": 0, |
+ "Created": true, |
+ "SearchService": { |
+ "Endpoint": "search-demo.us-east-1.cloudsearch.amazonaws.com" |
+ }, |
+ "RequiresIndexDocuments": false, |
+ "Processing": false, |
+ "DocService": { |
+ "Endpoint": "doc-demo.us-east-1.cloudsearch.amazonaws.com" |
+ }, |
+ "ARN": "arn:aws:cs:us-east-1:1234567890:domain/demo", |
+ "SearchPartitionCount": 0 |
+ }""" |
+ |
+ def create_service_connection(self, **kwargs): |
+ if kwargs.get('host', None) is None: |
+ kwargs['host'] = 'search-demo.us-east-1.cloudsearch.amazonaws.com' |
+ return super(CloudSearchDomainConnectionTest, self).\ |
+ create_service_connection(**kwargs) |
+ |
+ def test_get_search_service(self): |
+ layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id', |
+ aws_secret_access_key='aws_secret_access_key', |
+ sign_request=True) |
+ domain = Domain(layer1=layer1, data=json.loads(self.domain_status)) |
+ search_service = domain.get_search_service() |
+ |
+ self.assertEqual(search_service.sign_request, True) |
+ |
+ def test_get_document_service(self): |
+ layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id', |
+ aws_secret_access_key='aws_secret_access_key', |
+ sign_request=True) |
+ domain = Domain(layer1=layer1, data=json.loads(self.domain_status)) |
+ document_service = domain.get_document_service() |
+ |
+ self.assertEqual(document_service.sign_request, True) |
+ |
+ def test_search_with_auth(self): |
+ layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id', |
+ aws_secret_access_key='aws_secret_access_key', |
+ sign_request=True) |
+ domain = Domain(layer1=layer1, data=json.loads(self.domain_status)) |
+ search_service = domain.get_search_service() |
+ |
+ response = { |
+ 'rank': '-text_relevance', |
+ 'match-expr': "Test", |
+ 'hits': { |
+ 'found': 30, |
+ 'start': 0, |
+ 'hit': { |
+ 'id': '12341', |
+ 'fields': { |
+ 'title': 'Document 1', |
+ 'rank': 1 |
+ } |
+ } |
+ }, |
+ 'status': { |
+ 'rid': 'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08', |
+ 'time-ms': 2, |
+ 'cpu-time-ms': 0 |
+ } |
+ |
+ } |
+ |
+ self.set_http_response(status_code=200, body=json.dumps(response)) |
+ search_service.domain_connection = self.service_connection |
+ resp = search_service.search() |
+ |
+ headers = self.actual_request.headers |
+ |
+ self.assertIsNotNone(headers.get('Authorization')) |
+ |
+ def test_upload_documents_with_auth(self): |
+ layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id', |
+ aws_secret_access_key='aws_secret_access_key', |
+ sign_request=True) |
+ domain = Domain(layer1=layer1, data=json.loads(self.domain_status)) |
+ document_service = domain.get_document_service() |
+ |
+ response = { |
+ 'status': 'success', |
+ 'adds': 1, |
+ 'deletes': 0, |
+ } |
+ |
+ document = { |
+ "id": "1234", |
+ "title": "Title 1", |
+ "category": ["cat_a", "cat_b", "cat_c"] |
+ } |
+ |
+ self.set_http_response(status_code=200, body=json.dumps(response)) |
+ document_service.domain_connection = self.service_connection |
+ document_service.add("1234", document) |
+ resp = document_service.commit() |
+ |
+ headers = self.actual_request.headers |
+ |
+ self.assertIsNotNone(headers.get('Authorization')) |
+ |
+ def test_no_host_provided(self): |
+ # A host must be provided or a error is thrown. |
+ with self.assertRaises(ValueError): |
+ CloudSearchDomainConnection( |
+ aws_access_key_id='aws_access_key_id', |
+ aws_secret_access_key='aws_secret_access_key' |
+ ) |