| Index: third_party/gsutil/boto/tests/unit/cloudsearch/test_connection.py
|
| diff --git a/third_party/gsutil/boto/tests/unit/cloudsearch/test_connection.py b/third_party/gsutil/boto/tests/unit/cloudsearch/test_connection.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d2f67526a0eb0f298fb428cf9067a7c18e4e19bb
|
| --- /dev/null
|
| +++ b/third_party/gsutil/boto/tests/unit/cloudsearch/test_connection.py
|
| @@ -0,0 +1,241 @@
|
| +#!/usr/bin env python
|
| +
|
| +from tests.unit import AWSMockServiceTestCase
|
| +
|
| +from boto.cloudsearch.domain import Domain
|
| +from boto.cloudsearch.layer1 import Layer1
|
| +
|
| +import json
|
| +
|
| +class TestCloudSearchCreateDomain(AWSMockServiceTestCase):
|
| + connection_class = Layer1
|
| +
|
| + def default_body(self):
|
| + return """
|
| +<CreateDomainResponse xmlns="http://cloudsearch.amazonaws.com/doc/2011-02-01">
|
| + <CreateDomainResult>
|
| + <DomainStatus>
|
| + <SearchPartitionCount>0</SearchPartitionCount>
|
| + <SearchService>
|
| + <Arn>arn:aws:cs:us-east-1:1234567890:search/demo</Arn>
|
| + <Endpoint>search-demo-userdomain.us-east-1.cloudsearch.amazonaws.com</Endpoint>
|
| + </SearchService>
|
| + <NumSearchableDocs>0</NumSearchableDocs>
|
| + <Created>true</Created>
|
| + <DomainId>1234567890/demo</DomainId>
|
| + <Processing>false</Processing>
|
| + <SearchInstanceCount>0</SearchInstanceCount>
|
| + <DomainName>demo</DomainName>
|
| + <RequiresIndexDocuments>false</RequiresIndexDocuments>
|
| + <Deleted>false</Deleted>
|
| + <DocService>
|
| + <Arn>arn:aws:cs:us-east-1:1234567890:doc/demo</Arn>
|
| + <Endpoint>doc-demo-userdomain.us-east-1.cloudsearch.amazonaws.com</Endpoint>
|
| + </DocService>
|
| + </DomainStatus>
|
| + </CreateDomainResult>
|
| + <ResponseMetadata>
|
| + <RequestId>00000000-0000-0000-0000-000000000000</RequestId>
|
| + </ResponseMetadata>
|
| +</CreateDomainResponse>
|
| +"""
|
| +
|
| + def test_create_domain(self):
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| +
|
| + self.assert_request_parameters({
|
| + 'Action': 'CreateDomain',
|
| + 'DomainName': 'demo',
|
| + 'AWSAccessKeyId': 'aws_access_key_id',
|
| + 'SignatureMethod': 'HmacSHA256',
|
| + 'SignatureVersion': 2,
|
| + 'Version': '2011-02-01',
|
| + }, ignore_params_values=['Timestamp'])
|
| +
|
| + def test_cloudsearch_connect_result_endpoints(self):
|
| + """Check that endpoints & ARNs are correctly returned from AWS"""
|
| +
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| + domain = Domain(self, api_response)
|
| +
|
| + self.assertEqual(domain.doc_service_arn,
|
| + "arn:aws:cs:us-east-1:1234567890:doc/demo")
|
| + self.assertEqual(
|
| + domain.doc_service_endpoint,
|
| + "doc-demo-userdomain.us-east-1.cloudsearch.amazonaws.com")
|
| + self.assertEqual(domain.search_service_arn,
|
| + "arn:aws:cs:us-east-1:1234567890:search/demo")
|
| + self.assertEqual(
|
| + domain.search_service_endpoint,
|
| + "search-demo-userdomain.us-east-1.cloudsearch.amazonaws.com")
|
| +
|
| + def test_cloudsearch_connect_result_statuses(self):
|
| + """Check that domain statuses are correctly returned from AWS"""
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| + domain = Domain(self, api_response)
|
| +
|
| + self.assertEqual(domain.created, True)
|
| + self.assertEqual(domain.processing, False)
|
| + self.assertEqual(domain.requires_index_documents, False)
|
| + self.assertEqual(domain.deleted, False)
|
| +
|
| + def test_cloudsearch_connect_result_details(self):
|
| + """Check that the domain information is correctly returned from AWS"""
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| + domain = Domain(self, api_response)
|
| +
|
| + self.assertEqual(domain.id, "1234567890/demo")
|
| + self.assertEqual(domain.name, "demo")
|
| +
|
| + def test_cloudsearch_documentservice_creation(self):
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| + domain = Domain(self, api_response)
|
| +
|
| + document = domain.get_document_service()
|
| +
|
| + self.assertEqual(
|
| + document.endpoint,
|
| + "doc-demo-userdomain.us-east-1.cloudsearch.amazonaws.com")
|
| +
|
| + def test_cloudsearch_searchservice_creation(self):
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.create_domain('demo')
|
| + domain = Domain(self, api_response)
|
| +
|
| + search = domain.get_search_service()
|
| +
|
| + self.assertEqual(
|
| + search.endpoint,
|
| + "search-demo-userdomain.us-east-1.cloudsearch.amazonaws.com")
|
| +
|
| +
|
| +class CloudSearchConnectionDeletionTest(AWSMockServiceTestCase):
|
| + connection_class = Layer1
|
| +
|
| + def default_body(self):
|
| + return """
|
| +<DeleteDomainResponse xmlns="http://cloudsearch.amazonaws.com/doc/2011-02-01">
|
| + <DeleteDomainResult>
|
| + <DomainStatus>
|
| + <SearchPartitionCount>0</SearchPartitionCount>
|
| + <SearchService>
|
| + <Arn>arn:aws:cs:us-east-1:1234567890:search/demo</Arn>
|
| + <Endpoint>search-demo-userdomain.us-east-1.cloudsearch.amazonaws.com</Endpoint>
|
| + </SearchService>
|
| + <NumSearchableDocs>0</NumSearchableDocs>
|
| + <Created>true</Created>
|
| + <DomainId>1234567890/demo</DomainId>
|
| + <Processing>false</Processing>
|
| + <SearchInstanceCount>0</SearchInstanceCount>
|
| + <DomainName>demo</DomainName>
|
| + <RequiresIndexDocuments>false</RequiresIndexDocuments>
|
| + <Deleted>false</Deleted>
|
| + <DocService>
|
| + <Arn>arn:aws:cs:us-east-1:1234567890:doc/demo</Arn>
|
| + <Endpoint>doc-demo-userdomain.us-east-1.cloudsearch.amazonaws.com</Endpoint>
|
| + </DocService>
|
| + </DomainStatus>
|
| + </DeleteDomainResult>
|
| + <ResponseMetadata>
|
| + <RequestId>00000000-0000-0000-0000-000000000000</RequestId>
|
| + </ResponseMetadata>
|
| +</DeleteDomainResponse>
|
| +"""
|
| +
|
| + def test_cloudsearch_deletion(self):
|
| + """
|
| + Check that the correct arguments are sent to AWS when creating a
|
| + cloudsearch connection.
|
| + """
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.delete_domain('demo')
|
| +
|
| + self.assert_request_parameters({
|
| + 'Action': 'DeleteDomain',
|
| + 'DomainName': 'demo',
|
| + 'AWSAccessKeyId': 'aws_access_key_id',
|
| + 'SignatureMethod': 'HmacSHA256',
|
| + 'SignatureVersion': 2,
|
| + 'Version': '2011-02-01',
|
| + }, ignore_params_values=['Timestamp'])
|
| +
|
| +
|
| +class CloudSearchConnectionIndexDocumentTest(AWSMockServiceTestCase):
|
| + connection_class = Layer1
|
| +
|
| + def default_body(self):
|
| + return """
|
| +<IndexDocumentsResponse xmlns="http://cloudsearch.amazonaws.com/doc/2011-02-01">
|
| + <IndexDocumentsResult>
|
| + <FieldNames>
|
| + <member>average_score</member>
|
| + <member>brand_id</member>
|
| + <member>colors</member>
|
| + <member>context</member>
|
| + <member>context_owner</member>
|
| + <member>created_at</member>
|
| + <member>creator_id</member>
|
| + <member>description</member>
|
| + <member>file_size</member>
|
| + <member>format</member>
|
| + <member>has_logo</member>
|
| + <member>has_messaging</member>
|
| + <member>height</member>
|
| + <member>image_id</member>
|
| + <member>ingested_from</member>
|
| + <member>is_advertising</member>
|
| + <member>is_photo</member>
|
| + <member>is_reviewed</member>
|
| + <member>modified_at</member>
|
| + <member>subject_date</member>
|
| + <member>tags</member>
|
| + <member>title</member>
|
| + <member>width</member>
|
| + </FieldNames>
|
| + </IndexDocumentsResult>
|
| + <ResponseMetadata>
|
| + <RequestId>eb2b2390-6bbd-11e2-ab66-93f3a90dcf2a</RequestId>
|
| + </ResponseMetadata>
|
| +</IndexDocumentsResponse>
|
| +"""
|
| +
|
| + def test_cloudsearch_index_documents(self):
|
| + """
|
| + Check that the correct arguments are sent to AWS when indexing a
|
| + domain.
|
| + """
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.index_documents('demo')
|
| +
|
| + self.assert_request_parameters({
|
| + 'Action': 'IndexDocuments',
|
| + 'DomainName': 'demo',
|
| + 'AWSAccessKeyId': 'aws_access_key_id',
|
| + 'SignatureMethod': 'HmacSHA256',
|
| + 'SignatureVersion': 2,
|
| + 'Version': '2011-02-01',
|
| + }, ignore_params_values=['Timestamp'])
|
| +
|
| + def test_cloudsearch_index_documents_resp(self):
|
| + """
|
| + Check that the AWS response is being parsed correctly when indexing a
|
| + domain.
|
| + """
|
| + self.set_http_response(status_code=200)
|
| + api_response = self.service_connection.index_documents('demo')
|
| +
|
| + self.assertEqual(api_response, ['average_score', 'brand_id', 'colors',
|
| + 'context', 'context_owner',
|
| + 'created_at', 'creator_id',
|
| + 'description', 'file_size', 'format',
|
| + 'has_logo', 'has_messaging', 'height',
|
| + 'image_id', 'ingested_from',
|
| + 'is_advertising', 'is_photo',
|
| + 'is_reviewed', 'modified_at',
|
| + 'subject_date', 'tags', 'title',
|
| + 'width'])
|
|
|