diff options
Diffstat (limited to 'tests/test_http.py')
-rw-r--r-- | tests/test_http.py | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/tests/test_http.py b/tests/test_http.py deleted file mode 100644 index eab1382..0000000 --- a/tests/test_http.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright 2014 Microsoft Corporation -# -# 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 unittest -from env import waagent -import sys -from tests.tools import * - -class MockHTTPResponse(object): - def __init__(self, status=200): - self.status = status - self.reason = "foo" - - def getheaders(*args, **kwargs): - return {"hehe" : "haha"} - - def read(*args, **kwargs): - return "bar" - -class MockOldHTTPConnection(object): - MockHost=None - MockPort=None - MockUrl=None - MockCallCount=0 - - def __init__(self, host, port): - self.__class__.MockHost = host - self.__class__.MockPort = port - - def request(self, method, url, data, headers = None): - self.__class__.MockUrl = url - self.__class__.MockCallCount += 1 - - def getresponse(*args, **kwargs): - return MockHTTPResponse() - -class MockHTTPConnection(MockOldHTTPConnection): - def set_tunnel(*args, **kwargs): - pass - -class MockBadHTTPConnection(MockHTTPConnection): - def getresponse(*args, **kwargs): - return MockHTTPResponse(500) - -class MockHttpLib(object): - def __init__(self): - self.HTTPConnection = MockHTTPConnection - self.OK = 200 - -MockOSEnv = { - "http_proxy":"http://httpproxy:8888", - "https_proxy":"https://httpsproxy:8888" -} - -class TestHttp(unittest.TestCase): - - def test_parseurl(self): - httputil = waagent.Util() - host, port, secure, path = httputil._ParseUrl("http://foo:8/bar?hehe") - self.assertEquals("foo", host) - self.assertEquals(8, port) - self.assertEquals(False, secure) - self.assertEquals("/bar?hehe", path) - - host, port, secure, path = httputil._ParseUrl("http://foo.bar/") - self.assertEquals("foo.bar", host) - self.assertEquals(80, port) - self.assertEquals(False, secure) - self.assertEquals("/", path) - - host, port, secure, path= httputil._ParseUrl("https://foo.bar/") - self.assertEquals("foo.bar", host) - self.assertEquals(80, port) - self.assertEquals(True, secure) - self.assertEquals("/", path) - - self.assertRaises(ValueError, httputil._ParseUrl, - "https://a:b@foo.bar/") - - host, port, secure, path = httputil._ParseUrl("https://foo.bar") - self.assertEquals("foo.bar", host) - self.assertEquals(80, port) - self.assertEquals(True, secure) - self.assertEquals("/", path) - - host, port, secure, path = httputil._ParseUrl("http://a:b@foo.bar:8888") - self.assertEquals("a:b@foo.bar", host) - self.assertEquals(8888, port) - self.assertEquals(False, secure) - self.assertEquals("/", path) - - @Mockup(waagent.httplib, "HTTPConnection", MockHTTPConnection) - @Mockup(waagent.os, "environ", MockOSEnv) - def test_http_request(self): - httputil = waagent.Util() - - #If chkProxy is on, host and port should point to proxy server - httputil.HttpRequest("GET", "http://foo.bar/get", chkProxy=True) - self.assertEquals("httpproxy", MockHTTPConnection.MockHost) - self.assertEquals(8888, MockHTTPConnection.MockPort) - self.assertEquals("http://foo.bar:80/get", MockHTTPConnection.MockUrl) - - #If chkProxy is off, ignore proxy - httputil.HttpRequest("GET", "http://foo.bar/get", chkProxy=False) - self.assertEquals("foo.bar", MockHTTPConnection.MockHost) - self.assertEquals(80, MockHTTPConnection.MockPort) - self.assertEquals("/get", MockHTTPConnection.MockUrl) - - @Mockup(waagent, "httplib" , MockHttpLib()) - def test_https_fallback(self): - httputil = waagent.Util() - print "The bellowing warning log is expected:" - httputil.HttpRequest("GET", "https://foo.bar/get") - self.assertEquals("/get", MockHTTPConnection.MockUrl) - - @Mockup(waagent.httplib, "HTTPConnection", MockOldHTTPConnection) - @Mockup(waagent.httplib, "HTTPSConnection", MockOldHTTPConnection) - @Mockup(waagent.os, "environ", MockOSEnv) - def test_https_fallback2(self): - httputil = waagent.Util() - print "The bellowing warning log is expected:" - httputil.HttpRequest("GET", "https://foo.bar/get", chkProxy=True) - self.assertEquals("http://foo.bar:80/get", MockOldHTTPConnection.MockUrl) - - @Mockup(waagent.Util, "RetryWaitingInterval", 0) - @Mockup(waagent.httplib, "HTTPConnection", MockBadHTTPConnection) - def test_retry(self): - httputil = waagent.Util() - MockBadHTTPConnection.MockCallCount=0 - print "The bellowing error log is expected:" - httputil.HttpRequest("GET", "http://foo.bar", chkProxy=False, maxRetry=1) - self.assertEquals(2, MockBadHTTPConnection.MockCallCount) - -if __name__ == '__main__': - unittest.main() |