18d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi#!/usr/bin env python
28d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
38d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom tests.unit import AWSMockServiceTestCase
48d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
58d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom boto.cloudsearch2.domain import Domain
68d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom boto.cloudsearch2.layer1 import CloudSearchConnection
78d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
88d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
98d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestCloudSearchCreateDomain(AWSMockServiceTestCase):
108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    connection_class = CloudSearchConnection
118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def default_body(self):
138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        return b"""
148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi{
158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  "CreateDomainResponse": {
168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "CreateDomainResult": {
178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "DomainStatus": {
188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchInstanceType": null,
198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DomainId": "1234567890/demo",
208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DomainName": "demo",
218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Deleted": false,
228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchInstanceCount": 0,
238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Created": true,
248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchService": {
258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "Endpoint": "search-demo.us-east-1.cloudsearch.amazonaws.com"
268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        },
278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "RequiresIndexDocuments": false,
288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Processing": false,
298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DocService": {
308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "Endpoint": "doc-demo.us-east-1.cloudsearch.amazonaws.com"
318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        },
328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "ARN": "arn:aws:cs:us-east-1:1234567890:domain/demo",
338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchPartitionCount": 0
348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      }
358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    },
368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "ResponseMetadata": {
378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "RequestId": "00000000-0000-0000-0000-000000000000"
388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    }
398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  }
408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi}
418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi"""
428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_create_domain(self):
448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.service_connection.create_domain('demo')
468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assert_request_parameters({
488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Action': 'CreateDomain',
498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'ContentType': 'JSON',
508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'DomainName': 'demo',
518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Version': '2013-01-01',
528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        })
538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_connect_result_endpoints(self):
558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """Check that endpoints & ARNs are correctly returned from AWS"""
568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.create_domain('demo')
598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain = Domain(self, api_response['CreateDomainResponse']
608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['CreateDomainResult']
618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['DomainStatus'])
628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(
648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            domain.doc_service_endpoint,
658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            "doc-demo.us-east-1.cloudsearch.amazonaws.com")
668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.service_arn,
678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                         "arn:aws:cs:us-east-1:1234567890:domain/demo")
688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(
698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            domain.search_service_endpoint,
708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            "search-demo.us-east-1.cloudsearch.amazonaws.com")
718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_connect_result_statuses(self):
738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """Check that domain statuses are correctly returned from AWS"""
748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.create_domain('demo')
768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain = Domain(self, api_response['CreateDomainResponse']
778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['CreateDomainResult']
788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['DomainStatus'])
798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.created, True)
818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.processing, False)
828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.requires_index_documents, False)
838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.deleted, False)
848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_connect_result_details(self):
868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """Check that the domain information is correctly returned from AWS"""
878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.create_domain('demo')
898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain = Domain(self, api_response['CreateDomainResponse']
908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['CreateDomainResult']
918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['DomainStatus'])
928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.id, "1234567890/demo")
948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(domain.name, "demo")
958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_documentservice_creation(self):
978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.create_domain('demo')
998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain = Domain(self, api_response['CreateDomainResponse']
1008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['CreateDomainResult']
1018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['DomainStatus'])
1028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        document = domain.get_document_service()
1048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(
1068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            document.endpoint,
1078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            "doc-demo.us-east-1.cloudsearch.amazonaws.com")
1088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_searchservice_creation(self):
1108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
1118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.create_domain('demo')
1128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain = Domain(self, api_response['CreateDomainResponse']
1138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['CreateDomainResult']
1148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                          ['DomainStatus'])
1158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        search = domain.get_search_service()
1178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(
1198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            search.endpoint,
1208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            "search-demo.us-east-1.cloudsearch.amazonaws.com")
1218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass CloudSearchConnectionDeletionTest(AWSMockServiceTestCase):
1248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    connection_class = CloudSearchConnection
1258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def default_body(self):
1278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        return b"""
1288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi{
1298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  "DeleteDomainResponse": {
1308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "DeleteDomainResult": {
1318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "DomainStatus": {
1328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchInstanceType": null,
1338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DomainId": "1234567890/demo",
1348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DomainName": "test",
1358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Deleted": true,
1368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchInstanceCount": 0,
1378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Created": true,
1388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchService": {
1398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "Endpoint": null
1408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        },
1418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "RequiresIndexDocuments": false,
1428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "Processing": false,
1438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "DocService": {
1448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "Endpoint": null
1458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        },
1468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "ARN": "arn:aws:cs:us-east-1:1234567890:domain/demo",
1478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        "SearchPartitionCount": 0
1488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      }
1498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    },
1508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "ResponseMetadata": {
1518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "RequestId": "00000000-0000-0000-0000-000000000000"
1528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    }
1538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  }
1548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi}
1558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi"""
1568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_deletion(self):
1588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
1598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        Check that the correct arguments are sent to AWS when creating a
1608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        cloudsearch connection.
1618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
1628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
1638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.service_connection.delete_domain('demo')
1648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assert_request_parameters({
1668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Action': 'DeleteDomain',
1678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'ContentType': 'JSON',
1688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'DomainName': 'demo',
1698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Version': '2013-01-01',
1708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        })
1718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass CloudSearchConnectionIndexDocumentTest(AWSMockServiceTestCase):
1748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    connection_class = CloudSearchConnection
1758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
1768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def default_body(self):
1778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        return b"""
1788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi{
1798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  "IndexDocumentsResponse": {
1808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "IndexDocumentsResult": {
1818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "FieldNames": [
1828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "average_score",
1838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "brand_id",
1848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "colors",
1858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "context",
1868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "context_owner",
1878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "created_at",
1888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "creator_id",
1898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "description",
1908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "file_size",
1918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "format",
1928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "has_logo",
1938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "has_messaging",
1948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "height",
1958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "image_id",
1968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "ingested_from",
1978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "is_advertising",
1988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "is_photo",
1998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "is_reviewed",
2008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "modified_at",
2018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "subject_date",
2028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "tags",
2038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "title",
2048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi          "width"
2058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      ]
2068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    },
2078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    "ResponseMetadata": {
2088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi      "RequestId": "42e618d9-c4d9-11e3-8242-c32da3041159"
2098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    }
2108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi  }
2118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi}
2128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi"""
2138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
2148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_index_documents(self):
2158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
2168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        Check that the correct arguments are sent to AWS when indexing a
2178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain.
2188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
2198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
2208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.service_connection.index_documents('demo')
2218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
2228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assert_request_parameters({
2238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Action': 'IndexDocuments',
2248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'ContentType': 'JSON',
2258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'DomainName': 'demo',
2268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi            'Version': '2013-01-01',
2278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        })
2288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
2298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi    def test_cloudsearch_index_documents_resp(self):
2308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
2318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        Check that the AWS response is being parsed correctly when indexing a
2328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        domain.
2338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        """
2348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.set_http_response(status_code=200)
2358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        api_response = self.service_connection.index_documents('demo')
2368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
2378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        fields = (api_response['IndexDocumentsResponse']
2388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                              ['IndexDocumentsResult']
2398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                              ['FieldNames'])
2408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi
2418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi        self.assertEqual(fields, ['average_score', 'brand_id', 'colors',
2428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'context', 'context_owner',
2438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'created_at', 'creator_id',
2448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'description', 'file_size', 'format',
2458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'has_logo', 'has_messaging', 'height',
2468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'image_id', 'ingested_from',
2478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'is_advertising', 'is_photo',
2488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'is_reviewed', 'modified_at',
2498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'subject_date', 'tags', 'title',
2508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi                                  'width'])
251