123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import unittest
-
- import winerror
- from pywin32_testutil import str2bytes # py3k-friendly helper
- from pywin32_testutil import TestSkipped, testmain
- from win32inet import *
- from win32inetcon import *
-
-
- class CookieTests(unittest.TestCase):
- def testCookies(self):
- data = "TestData=Test"
- InternetSetCookie("http://www.python.org", None, data)
- got = InternetGetCookie("http://www.python.org", None)
- # handle that there might already be cookies for the domain.
- bits = map(lambda x: x.strip(), got.split(";"))
- self.assertTrue(data in bits)
-
- def testCookiesEmpty(self):
- try:
- InternetGetCookie("http://site-with-no-cookie.python.org", None)
- self.fail("expected win32 exception")
- except error as exc:
- self.assertEqual(exc.winerror, winerror.ERROR_NO_MORE_ITEMS)
-
-
- class UrlTests(unittest.TestCase):
- def testSimpleCanonicalize(self):
- ret = InternetCanonicalizeUrl("foo bar")
- self.assertEqual(ret, "foo%20bar")
-
- def testLongCanonicalize(self):
- # a 4k URL causes the underlying API to request a bigger buffer"
- big = "x" * 2048
- ret = InternetCanonicalizeUrl(big + " " + big)
- self.assertEqual(ret, big + "%20" + big)
-
-
- class TestNetwork(unittest.TestCase):
- def setUp(self):
- self.hi = InternetOpen("test", INTERNET_OPEN_TYPE_DIRECT, None, None, 0)
-
- def tearDown(self):
- self.hi.Close()
-
- def testPythonDotOrg(self):
- hdl = InternetOpenUrl(
- self.hi, "http://www.python.org", None, INTERNET_FLAG_EXISTING_CONNECT
- )
- chunks = []
- while 1:
- chunk = InternetReadFile(hdl, 1024)
- if not chunk:
- break
- chunks.append(chunk)
- data = str2bytes("").join(chunks)
- assert data.find(str2bytes("Python")) > 0, repr(
- data
- ) # This must appear somewhere on the main page!
-
- def testFtpCommand(self):
- # ftp.python.org doesn't exist. ftp.gnu.org is what Python's urllib
- # test code uses.
- # (As of 2020 it doesn't! Unsurprisingly, it's difficult to find a good
- # test server. This test sometimes works, but often doesn't - so handle
- # failure here as a "skip")
- try:
- hcon = InternetConnect(
- self.hi,
- "ftp.gnu.org",
- INTERNET_INVALID_PORT_NUMBER,
- None,
- None, # username/password
- INTERNET_SERVICE_FTP,
- 0,
- 0,
- )
- try:
- hftp = FtpCommand(hcon, True, FTP_TRANSFER_TYPE_ASCII, "NLST", 0)
- try:
- print("Connected - response info is", InternetGetLastResponseInfo())
- got = InternetReadFile(hftp, 2048)
- print("Read", len(got), "bytes")
- finally:
- hftp.Close()
- finally:
- hcon.Close()
- except error as e:
- raise TestSkipped(e)
-
-
- if __name__ == "__main__":
- testmain()
|