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