4
from tests.unit import AWSMockServiceTestCase
5
from boto.cloudsearch2.domain import Domain
6
from boto.cloudsearch2.layer1 import CloudSearchConnection
7
from boto.cloudsearchdomain.layer1 import CloudSearchDomainConnection
10
class CloudSearchDomainConnectionTest(AWSMockServiceTestCase):
11
connection_class = CloudSearchDomainConnection
14
"SearchInstanceType": null,
15
"DomainId": "1234567890/demo",
18
"SearchInstanceCount": 0,
21
"Endpoint": "search-demo.us-east-1.cloudsearch.amazonaws.com"
23
"RequiresIndexDocuments": false,
26
"Endpoint": "doc-demo.us-east-1.cloudsearch.amazonaws.com"
28
"ARN": "arn:aws:cs:us-east-1:1234567890:domain/demo",
29
"SearchPartitionCount": 0
32
def create_service_connection(self, **kwargs):
33
if kwargs.get('host', None) is None:
34
kwargs['host'] = 'search-demo.us-east-1.cloudsearch.amazonaws.com'
35
return super(CloudSearchDomainConnectionTest, self).\
36
create_service_connection(**kwargs)
38
def test_get_search_service(self):
39
layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id',
40
aws_secret_access_key='aws_secret_access_key',
42
domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
43
search_service = domain.get_search_service()
45
self.assertEqual(search_service.sign_request, True)
47
def test_get_document_service(self):
48
layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id',
49
aws_secret_access_key='aws_secret_access_key',
51
domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
52
document_service = domain.get_document_service()
54
self.assertEqual(document_service.sign_request, True)
56
def test_search_with_auth(self):
57
layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id',
58
aws_secret_access_key='aws_secret_access_key',
60
domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
61
search_service = domain.get_search_service()
64
'rank': '-text_relevance',
72
'title': 'Document 1',
78
'rid': 'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08',
85
self.set_http_response(status_code=200, body=json.dumps(response))
86
search_service.domain_connection = self.service_connection
87
resp = search_service.search()
89
headers = self.actual_request.headers
91
self.assertIsNotNone(headers.get('Authorization'))
93
def test_upload_documents_with_auth(self):
94
layer1 = CloudSearchConnection(aws_access_key_id='aws_access_key_id',
95
aws_secret_access_key='aws_secret_access_key',
97
domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
98
document_service = domain.get_document_service()
109
"category": ["cat_a", "cat_b", "cat_c"]
112
self.set_http_response(status_code=200, body=json.dumps(response))
113
document_service.domain_connection = self.service_connection
114
document_service.add("1234", document)
115
resp = document_service.commit()
117
headers = self.actual_request.headers
119
self.assertIsNotNone(headers.get('Authorization'))
121
def test_no_host_provided(self):
122
# A host must be provided or a error is thrown.
123
with self.assertRaises(ValueError):
124
CloudSearchDomainConnection(
125
aws_access_key_id='aws_access_key_id',
126
aws_secret_access_key='aws_secret_access_key'