1from CFNetwork import * 2from PyObjCTools.TestSupport import * 3import sys 4 5try: 6 long 7except NameError: 8 long = int 9 10try: 11 unicode 12except NameError: 13 unicode = str 14 15if sys.version_info[0] != 2: 16 def buffer(value): 17 return value.encode('latin1') 18 19class TestCFHTTPMessage (TestCase): 20 @min_os_level('10.6') 21 def testConstants10_6(self): 22 self.assertIsInstance(kCFHTTPAuthenticationSchemeNegotiate2, unicode) 23 self.assertIsInstance(kCFHTTPAuthenticationSchemeXMobileMeAuthToken, unicode) 24 25 @min_os_level('10.5') 26 def testConstants10_5(self): 27 self.assertIsInstance(kCFHTTPAuthenticationSchemeNTLM, unicode) 28 self.assertIsInstance(kCFHTTPAuthenticationSchemeNegotiate, unicode) 29 30 @expectedFailure 31 @min_os_level('10.5') 32 def testConstants10_5_failure(self): 33 self.assertIsInstance(kCFHTTPAuthenticationSchemeKerberos, unicode) 34 35 def testConstants(self): 36 self.assertIsInstance(kCFHTTPVersion1_0, unicode) 37 self.assertIsInstance(kCFHTTPVersion1_1, unicode) 38 self.assertIsInstance(kCFHTTPAuthenticationSchemeBasic, unicode) 39 self.assertIsInstance(kCFHTTPAuthenticationSchemeDigest, unicode) 40 41 def testTypes(self): 42 self.assertIsCFType(CFHTTPMessageRef) 43 44 def testFunctions(self): 45 self.assertIsInstance(CFHTTPMessageGetTypeID(), (int, long)) 46 47 url = CFURLCreateWithString(None, "http://www.python.org/", None) 48 self.assertIsInstance(url, CFURLRef) 49 50 self.assertResultIsCFRetained(CFHTTPMessageCreateRequest) 51 req = CFHTTPMessageCreateRequest(None, "GET", url, kCFHTTPVersion1_1) 52 self.assertIsInstance(req, CFHTTPMessageRef) 53 54 self.assertResultIsCFRetained(CFHTTPMessageCreateResponse) 55 resp = CFHTTPMessageCreateResponse(None, 200, "Okidoki", kCFHTTPVersion1_1) 56 self.assertIsInstance(req, CFHTTPMessageRef) 57 58 self.assertResultIsCFRetained(CFHTTPMessageCreateEmpty) 59 self.assertArgIsBOOL(CFHTTPMessageCreateEmpty, 1) 60 m = CFHTTPMessageCreateEmpty(None, True) 61 self.assertIsInstance(m, CFHTTPMessageRef) 62 63 self.assertResultIsCFRetained(CFHTTPMessageCreateCopy) 64 m = CFHTTPMessageCreateCopy(None, req) 65 self.assertIsInstance(m, CFHTTPMessageRef) 66 67 self.assertResultIsBOOL(CFHTTPMessageIsRequest) 68 self.assertTrue(CFHTTPMessageIsRequest(req) is True) 69 self.assertTrue(CFHTTPMessageIsRequest(resp) is False) 70 71 self.assertResultIsCFRetained(CFHTTPMessageCopyVersion) 72 v = CFHTTPMessageCopyVersion(req) 73 self.assertIsInstance(v, unicode) 74 75 CFHTTPMessageSetBody(req, buffer("hello world")) 76 77 self.assertResultIsCFRetained(CFHTTPMessageCopyBody) 78 b = CFHTTPMessageCopyBody(req) 79 if sys.version_info[0] == 2: 80 self.assertIsInstance(b, (CFDataRef, buffer)) 81 else: 82 self.assertIsInstance(b, (CFDataRef, memoryview, bytes)) 83 84 self.assertResultIsCFRetained(CFHTTPMessageCopyAllHeaderFields) 85 v = CFHTTPMessageCopyAllHeaderFields(req) 86 self.assertIsInstance(v, CFDictionaryRef) 87 88 self.assertResultIsCFRetained(CFHTTPMessageCopyHeaderFieldValue) 89 v = CFHTTPMessageCopyHeaderFieldValue(req, "X-Python") 90 self.assertTrue(v is None) 91 92 CFHTTPMessageSetHeaderFieldValue(req, "X-Python", "Rocks") 93 v = CFHTTPMessageCopyHeaderFieldValue(req, "X-Python") 94 self.assertEqual(v, "Rocks") 95 96 self.assertResultIsBOOL(CFHTTPMessageAppendBytes) 97 self.assertArgHasType(CFHTTPMessageAppendBytes, 1, b'n^v') 98 self.assertArgSizeInArg(CFHTTPMessageAppendBytes, 1, 2) 99 100 v = CFHTTPMessageAppendBytes(req, b"hello world", 11) 101 self.assertTrue(v is True) 102 103 104 self.assertResultIsBOOL(CFHTTPMessageIsHeaderComplete) 105 v = CFHTTPMessageIsHeaderComplete(req) 106 self.assertTrue(v is False or v is True) 107 108 self.assertResultIsCFRetained(CFHTTPMessageCopySerializedMessage) 109 v = CFHTTPMessageCopySerializedMessage(resp) 110 self.assertIsInstance(v, CFDataRef) 111 112 self.assertResultIsCFRetained(CFHTTPMessageCopyRequestURL) 113 v = CFHTTPMessageCopyRequestURL(req) 114 self.assertIsInstance(v, CFURLRef) 115 116 self.assertResultIsCFRetained(CFHTTPMessageCopyRequestMethod) 117 v = CFHTTPMessageCopyRequestMethod(req) 118 self.assertIsInstance(v, unicode) 119 120 self.assertResultIsBOOL(CFHTTPMessageAddAuthentication) 121 self.assertArgIsBOOL(CFHTTPMessageAddAuthentication, 5) 122 v = CFHTTPMessageAddAuthentication(req, resp, "ronald", "secret", kCFHTTPAuthenticationSchemeBasic, False) 123 self.assertIsInstance(v, bool) 124 125 v = CFHTTPMessageGetResponseStatusCode(resp) 126 self.assertIsInstance(v, (int, long)) 127 128 self.assertResultIsCFRetained(CFHTTPMessageCopyResponseStatusLine) 129 v = CFHTTPMessageCopyResponseStatusLine(resp) 130 self.assertIsInstance(v, unicode) 131 132if __name__ == "__main__": 133 main() 134