Пример #1
0
    def test_http_json_request_redirect(self, mock_request):
        # Record the 302
        mock_request.side_effect = [
            fakes.FakeHTTPResponse(302, 'Found',
                                   {'location': 'http://example.com:8082'},
                                   ''),
            fakes.FakeHTTPResponse(200, 'OK',
                                   {'content-type': 'application/json'}, '{}')
        ]

        client = http.HTTPClient('http://example.com:8082')
        resp, body = client.json_request('GET', '')
        self.assertEqual(200, resp.status_code)
        self.assertEqual({}, body)

        mock_request.assert_has_calls([
            mock.call('GET',
                      'http://example.com:8082',
                      allow_redirects=False,
                      headers={
                          'Content-Type': 'application/json',
                          'User-Agent': 'python-karborclient'
                      }),
            mock.call('GET',
                      'http://example.com:8082',
                      allow_redirects=False,
                      headers={
                          'Content-Type': 'application/json',
                          'User-Agent': 'python-karborclient'
                      })
        ])
Пример #2
0
    def test_http_json_request_argument_passed_to_requests(self, mock_request):
        """Check that we have sent the proper arguments to requests."""
        # Record a 200
        mock_request.return_value = \
            fakes.FakeHTTPResponse(
                200, 'OK',
                {'content-type': 'application/json'},
                '{}')

        client = http.HTTPClient('http://example.com:8082')
        client.verify_cert = True
        client.cert_file = 'RANDOM_CERT_FILE'
        client.key_file = 'RANDOM_KEY_FILE'
        client.auth_url = 'http://AUTH_URL'
        resp, body = client.json_request('GET', '', data='text')
        self.assertEqual(200, resp.status_code)
        self.assertEqual({}, body)

        mock_request.assert_called_once_with('GET',
                                             'http://example.com:8082',
                                             allow_redirects=False,
                                             cert=('RANDOM_CERT_FILE',
                                                   'RANDOM_KEY_FILE'),
                                             verify=True,
                                             data='"text"',
                                             headers={
                                                 'Content-Type':
                                                 'application/json',
                                                 'X-Auth-Url':
                                                 'http://AUTH_URL',
                                                 'User-Agent':
                                                 'python-karborclient'
                                             })
Пример #3
0
    def test_http_raw_request(self, mock_request):
        headers = {'User-Agent': 'python-karborclient'}
        mock_request.return_value = \
            fakes.FakeHTTPResponse(
                200, 'OK',
                {},
                '')

        client = http.HTTPClient('http://example.com:8082')
        resp = client.raw_request('GET', '')
        self.assertEqual(200, resp.status_code)
        self.assertEqual('', ''.join([x for x in resp.content]))
        mock_request.assert_called_with('GET',
                                        'http://example.com:8082',
                                        allow_redirects=False,
                                        headers=headers)
Пример #4
0
 def test_http_manual_redirect_error_without_location(self, mock_request):
     mock_request.return_value = \
         fakes.FakeHTTPResponse(
             302, 'Found',
             {},
             '')
     client = http.HTTPClient('http://example.com:8082/foo')
     self.assertRaises(exc.EndpointException, client.json_request, 'DELETE',
                       '')
     mock_request.assert_called_once_with('DELETE',
                                          'http://example.com:8082/foo',
                                          allow_redirects=False,
                                          headers={
                                              'Content-Type':
                                              'application/json',
                                              'User-Agent':
                                              'python-karborclient'
                                          })
Пример #5
0
    def test_token_or_credentials(self, mock_request):
        # Record a 200
        fake200 = fakes.FakeHTTPResponse(200, 'OK', {}, '')

        mock_request.side_effect = [fake200, fake200, fake200]

        # Replay, create client, assert
        client = http.HTTPClient('http://example.com:8082')
        resp = client.raw_request('GET', '')
        self.assertEqual(200, resp.status_code)

        client.username = '******'
        client.password = '******'
        resp = client.raw_request('GET', '')
        self.assertEqual(200, resp.status_code)

        client.auth_token = 'abcd1234'
        resp = client.raw_request('GET', '')
        self.assertEqual(200, resp.status_code)

        # no token or credentials
        mock_request.assert_has_calls([
            mock.call('GET',
                      'http://example.com:8082',
                      allow_redirects=False,
                      headers={'User-Agent': 'python-karborclient'}),
            mock.call('GET',
                      'http://example.com:8082',
                      allow_redirects=False,
                      headers={
                          'User-Agent': 'python-karborclient',
                          'X-Auth-Key': 'pass',
                          'X-Auth-User': '******'
                      }),
            mock.call('GET',
                      'http://example.com:8082',
                      allow_redirects=False,
                      headers={
                          'User-Agent': 'python-karborclient',
                          'X-Auth-Token': 'abcd1234'
                      })
        ])
Пример #6
0
    def test_region_name(self, mock_request):
        # Record a 200
        fake200 = fakes.FakeHTTPResponse(200, 'OK', {}, '')

        mock_request.return_value = fake200

        client = http.HTTPClient('http://example.com:8082')
        client.region_name = 'RegionOne'
        resp = client.raw_request('GET', '')
        self.assertEqual(200, resp.status_code)

        mock_request.assert_called_once_with('GET',
                                             'http://example.com:8082',
                                             allow_redirects=False,
                                             headers={
                                                 'X-Region-Name':
                                                 'RegionOne',
                                                 'User-Agent':
                                                 'python-karborclient'
                                             })
Пример #7
0
    def test_http_request_specify_timeout(self, mock_request):
        mock_request.return_value = \
            fakes.FakeHTTPResponse(
                200, 'OK',
                {'content-type': 'application/json'},
                '{}')

        client = http.HTTPClient('http://example.com:8082', timeout='123')
        resp, body = client.json_request('GET', '')
        self.assertEqual(200, resp.status_code)
        self.assertEqual({}, body)
        mock_request.assert_called_once_with('GET',
                                             'http://example.com:8082',
                                             allow_redirects=False,
                                             headers={
                                                 'Content-Type':
                                                 'application/json',
                                                 'User-Agent':
                                                 'python-karborclient'
                                             },
                                             timeout=float(123))
Пример #8
0
    def test_http_300_json_request(self, mock_request):
        mock_request.return_value = \
            fakes.FakeHTTPResponse(
                300, 'OK', {'content-type': 'application/json'},
                '{}')
        client = http.HTTPClient('http://example.com:8082')
        e = self.assertRaises(exc.MultipleChoices, client.json_request, 'GET',
                              '')
        # Assert that the raised exception can be converted to string
        self.assertIsNotNone(str(e))

        # Record a 300
        mock_request.assert_called_once_with('GET',
                                             'http://example.com:8082',
                                             allow_redirects=False,
                                             headers={
                                                 'Content-Type':
                                                 'application/json',
                                                 'User-Agent':
                                                 'python-karborclient'
                                             })
Пример #9
0
    def test_http_json_request_invalid_json(self, mock_request):
        # Record a 200
        mock_request.return_value = \
            fakes.FakeHTTPResponse(
                200, 'OK',
                {'content-type': 'application/json'},
                'invalid-json')

        client = http.HTTPClient('http://example.com:8082')
        resp, body = client.json_request('GET', '')
        self.assertEqual(200, resp.status_code)
        self.assertEqual('invalid-json', body)
        mock_request.assert_called_once_with('GET',
                                             'http://example.com:8082',
                                             allow_redirects=False,
                                             headers={
                                                 'Content-Type':
                                                 'application/json',
                                                 'User-Agent':
                                                 'python-karborclient'
                                             })