def test_no_proxy_settings(self): """ Test the HTTPCurlDownloader._add_proxy_configuration method for the case when there are no proxy settings. It should not make any calls that are proxy related. In fact, due to the nature of the _add_proxy_configuration method, it should just not make any calls to setopt() at all, which is what we assert here. """ config = DownloaderConfig() curl_downloader = HTTPCurlDownloader(config) easy_handle = mock.MagicMock() curl_downloader._add_proxy_configuration(easy_handle) # We can be sure that no proxy settings were set on the easy_handle if no calls # to its setopt method were called. self.assertEqual(easy_handle.setopt.call_count, 0)
def test_proxy_url_set(self): """ Test correct behavior when only proxy_url is set. """ proxy_url = u'http://proxy.com/server/' config = DownloaderConfig(proxy_url=proxy_url) curl_downloader = HTTPCurlDownloader(config) easy_handle = mock.MagicMock() curl_downloader._add_proxy_configuration(easy_handle) # There should be two calls to setopt(). One to set the URL, and another to set # the proxy type to HTTP self.assertEqual(easy_handle.setopt.call_count, 2) easy_handle.setopt.assert_any_call(pycurl.PROXY, unicode(str(proxy_url))) easy_handle.setopt.assert_any_call(pycurl.PROXYTYPE, pycurl.PROXYTYPE_HTTP) self._assert_all_strings_handed_to_pycurl_are_strs(easy_handle.setopt.mock_calls)
def test_proxy_port_set(self): """ Test correct behavior when proxy_url and proxy_port are set. """ proxy_url = u'http://proxy.com/server/' proxy_port = '3128' config = DownloaderConfig(proxy_url=proxy_url, proxy_port=proxy_port) curl_downloader = HTTPCurlDownloader(config) easy_handle = mock.MagicMock() curl_downloader._add_proxy_configuration(easy_handle) # There should be three calls to setopt(). One to set the URL, one another to set # the proxy type to HTTP, and a third to set the proxy port. self.assertEqual(easy_handle.setopt.call_count, 3) easy_handle.setopt.assert_any_call(pycurl.PROXY, str(proxy_url)) easy_handle.setopt.assert_any_call(pycurl.PROXYTYPE, pycurl.PROXYTYPE_HTTP) easy_handle.setopt.assert_any_call(pycurl.PROXYPORT, int(proxy_port)) self._assert_all_strings_handed_to_pycurl_are_strs(easy_handle.setopt.mock_calls)
def test_proxy_username_password_set(self): """ Test correct behavior when proxy_url, proxy_username, and proxy_password are all set. """ proxy_url = u'http://proxy.com/server/' proxy_username = u'steve' proxy_password = u'1luvpr0xysrvrs' config = DownloaderConfig(proxy_url=proxy_url, proxy_username=proxy_username, proxy_password=proxy_password) curl_downloader = HTTPCurlDownloader(config) easy_handle = mock.MagicMock() curl_downloader._add_proxy_configuration(easy_handle) # There should be four calls to setopt(). One to set the URL, one to set # the proxy type to HTTP, one to set the auth type to HTTP basic auth, and # another to pass the username and password. self.assertEqual(easy_handle.setopt.call_count, 4) easy_handle.setopt.assert_any_call(pycurl.PROXY, str(proxy_url)) easy_handle.setopt.assert_any_call(pycurl.PROXYTYPE, pycurl.PROXYTYPE_HTTP) easy_handle.setopt.assert_any_call(pycurl.PROXYAUTH, pycurl.HTTPAUTH_BASIC) easy_handle.setopt.assert_any_call(pycurl.PROXYUSERPWD, '%s:%s'%(proxy_username, proxy_password)) self._assert_all_strings_handed_to_pycurl_are_strs(easy_handle.setopt.mock_calls)