# Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import unittest2 class TestConnection(unittest2.TestCase): def _getTargetClass(self): from gcloud.translate.connection import Connection return Connection def _makeOne(self, *args, **kw): return self._getTargetClass()(*args, **kw) def test_build_api_url_no_extra_query_params(self): conn = self._makeOne() URI = '/'.join([ conn.API_BASE_URL, 'language', 'translate', conn.API_VERSION, 'foo', ]) self.assertEqual(conn.build_api_url('/foo'), URI) def test_build_api_url_w_extra_query_params(self): from six.moves.urllib.parse import parse_qsl from six.moves.urllib.parse import urlsplit conn = self._makeOne() query_params = [('q', 'val1'), ('q', 'val2')] uri = conn.build_api_url('/foo', query_params=query_params) scheme, netloc, path, qs, _ = urlsplit(uri) self.assertEqual('%s://%s' % (scheme, netloc), conn.API_BASE_URL) expected_path = '/'.join( ['', 'language', 'translate', conn.API_VERSION, 'foo']) self.assertEqual(path, expected_path) params = parse_qsl(qs) self.assertEqual(params, query_params)