~ubuntu-branches/ubuntu/wily/python-boto/wily-proposed

« back to all changes in this revision

Viewing changes to tests/unit/cloudsearchdomain/test_cloudsearchdomain.py

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2015-07-09 16:11:38 UTC
  • mfrom: (19.1.6 sid)
  • Revision ID: package-import@ubuntu.com-20150709161138-1tiv60tdcbnpex33
Tags: 2.38.0-1ubuntu1
* Merge from Debian unstable.  Remaining changes:
  * d/tests/unit: Fix autopkgtest error in test_timeout.
  * d/tests/unit: run tests/test.py with each python in 'pyversions -i'

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin env python
 
2
import json
 
3
import mock
 
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
 
8
 
 
9
 
 
10
class CloudSearchDomainConnectionTest(AWSMockServiceTestCase):
 
11
    connection_class = CloudSearchDomainConnection
 
12
 
 
13
    domain_status = """{
 
14
        "SearchInstanceType": null,
 
15
        "DomainId": "1234567890/demo",
 
16
        "DomainName": "demo",
 
17
        "Deleted": false,
 
18
        "SearchInstanceCount": 0,
 
19
        "Created": true,
 
20
        "SearchService": {
 
21
          "Endpoint": "search-demo.us-east-1.cloudsearch.amazonaws.com"
 
22
        },
 
23
        "RequiresIndexDocuments": false,
 
24
        "Processing": false,
 
25
        "DocService": {
 
26
          "Endpoint": "doc-demo.us-east-1.cloudsearch.amazonaws.com"
 
27
        },
 
28
        "ARN": "arn:aws:cs:us-east-1:1234567890:domain/demo",
 
29
        "SearchPartitionCount": 0
 
30
      }"""
 
31
 
 
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)
 
37
 
 
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',
 
41
                                       sign_request=True)
 
42
        domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
 
43
        search_service = domain.get_search_service()
 
44
 
 
45
        self.assertEqual(search_service.sign_request, True)
 
46
 
 
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',
 
50
                                       sign_request=True)
 
51
        domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
 
52
        document_service = domain.get_document_service()
 
53
 
 
54
        self.assertEqual(document_service.sign_request, True)
 
55
 
 
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',
 
59
                                       sign_request=True)
 
60
        domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
 
61
        search_service = domain.get_search_service()
 
62
 
 
63
        response = {
 
64
            'rank': '-text_relevance',
 
65
            'match-expr': "Test",
 
66
            'hits': {
 
67
                'found': 30,
 
68
                'start': 0,
 
69
                'hit': {
 
70
                    'id': '12341',
 
71
                    'fields': {
 
72
                        'title': 'Document 1',
 
73
                        'rank': 1
 
74
                    }
 
75
                }
 
76
            },
 
77
            'status': {
 
78
                'rid': 'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08',
 
79
                'time-ms': 2,
 
80
                'cpu-time-ms': 0
 
81
            }
 
82
 
 
83
        }
 
84
 
 
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()
 
88
 
 
89
        headers = self.actual_request.headers
 
90
 
 
91
        self.assertIsNotNone(headers.get('Authorization'))
 
92
 
 
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',
 
96
                                       sign_request=True)
 
97
        domain = Domain(layer1=layer1, data=json.loads(self.domain_status))
 
98
        document_service = domain.get_document_service()
 
99
 
 
100
        response = {
 
101
            'status': 'success',
 
102
            'adds': 1,
 
103
            'deletes': 0,
 
104
        }
 
105
 
 
106
        document = {
 
107
            "id": "1234",
 
108
            "title": "Title 1",
 
109
            "category": ["cat_a", "cat_b", "cat_c"]
 
110
        }
 
111
 
 
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()
 
116
 
 
117
        headers = self.actual_request.headers
 
118
 
 
119
        self.assertIsNotNone(headers.get('Authorization'))
 
120
 
 
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'
 
127
            )