def testFunctions(self): self.assertResultIsCFRetained(CFNetwork.CFNetworkCopyProxiesForURL) url = CFNetwork.CFURLCreateWithString(None, "http://www.apple.com/", None) v = CFNetwork.CFNetworkCopyProxiesForURL(url, None) self.assertIsInstance(v, CFNetwork.CFArrayRef) self.assertResultIsCFRetained( CFNetwork.CFNetworkCopyProxiesForAutoConfigurationScript) self.assertArgIsOut( CFNetwork.CFNetworkCopyProxiesForAutoConfigurationScript, 2) v, err = CFNetwork.CFNetworkCopyProxiesForAutoConfigurationScript( SCRIPT, url, None) self.assertTrue(err is None) self.assertIsInstance(v, CFNetwork.CFArrayRef) x = v[0] self.assertEqual(x[CFNetwork.kCFProxyTypeKey], CFNetwork.kCFProxyTypeHTTP) self.assertEqual(x[CFNetwork.kCFProxyHostNameKey], "proxy.apple.com") self.assertEqual(x[CFNetwork.kCFProxyPortNumberKey], 8080) self.assertResultIsCFRetained( CFNetwork.CFNetworkCopySystemProxySettings) v = CFNetwork.CFNetworkCopySystemProxySettings() self.assertIsInstance(v, CFNetwork.CFDictionaryRef)
def testFunctions(self): self.assertResultIsCFRetained(CFNetwork.CFReadStreamCreateWithFTPURL) url = CFNetwork.CFURLCreateWithString(None, "ftp://ftp.python.org/", None) self.assertIsInstance(url, CFNetwork.CFURLRef) ftp = CFNetwork.CFReadStreamCreateWithFTPURL(None, url) self.assertIsInstance(ftp, CFNetwork.CFReadStreamRef) buf = b"-rw-r--r-- 1 ronald staff 1957 Mar 31 07:22 test_cfftpstream.py\r\n" self.assertArgHasType(CFNetwork.CFFTPCreateParsedResourceListing, 1, b"n^v") self.assertArgSizeInArg(CFNetwork.CFFTPCreateParsedResourceListing, 1, 2) self.assertArgIsOut(CFNetwork.CFFTPCreateParsedResourceListing, 3) cnt, out = CFNetwork.CFFTPCreateParsedResourceListing( None, buf, len(buf), None) self.assertIsInstance(cnt, int) self.assertIsInstance(out, CFNetwork.CFDictionaryRef) self.assertEqual(out[CFNetwork.kCFFTPResourceGroup], "staff") self.assertResultIsCFRetained(CFNetwork.CFWriteStreamCreateWithFTPURL) url = CFNetwork.CFURLCreateWithString( None, "ftp://www.rivm.nl/incoming/test.txt", None) self.assertIsInstance(url, CFNetwork.CFURLRef) ftp = CFNetwork.CFWriteStreamCreateWithFTPURL(None, url) self.assertIsInstance(ftp, CFNetwork.CFWriteStreamRef)
def testFunctions(self): self.assertIsInstance(CFNetwork.CFHostGetTypeID(), int) self.assertResultIsCFRetained(CFNetwork.CFHostCreateWithName) v = CFNetwork.CFHostCreateWithName(None, "www.python.org") self.assertIsInstance(v, CFNetwork.CFHostRef) try: # value = socket.gethostbyname("www.python.org") socket.gethostbyname("www.python.org") expected_resolution = True except socket.error: expected_resolution = False addr = b" " * 24 self.assertResultIsCFRetained(CFNetwork.CFHostCreateWithAddress) t = CFNetwork.CFHostCreateWithAddress(None, addr) self.assertIsInstance(t, CFNetwork.CFHostRef) self.assertResultIsBOOL(CFNetwork.CFHostStartInfoResolution) self.assertArgIsOut(CFNetwork.CFHostStartInfoResolution, 2) ok, error = CFNetwork.CFHostStartInfoResolution( v, CFNetwork.kCFHostAddresses, None) self.assertIs(ok, expected_resolution) self.assertIsInstance(error, CFNetwork.CFStreamError) self.assertResultIsCFRetained(CFNetwork.CFHostCreateCopy) # w = CFNetwork.CFHostCreateCopy(None, v) # self.assertIsInstance(w, type(v)) self.assertArgHasType(CFNetwork.CFHostGetReachability, 1, b"o^" + objc._C_NSBOOL) lst, ok = CFNetwork.CFHostGetReachability(v, None) self.assertIsInstance(lst, (CFNetwork.CFDataRef, type(None))) self.assertIsInstance(ok, bool) CFNetwork.CFHostCancelInfoResolution(v, CFNetwork.kCFHostAddresses) rl = CFNetwork.CFRunLoopGetCurrent() CFNetwork.CFHostScheduleWithRunLoop(v, rl, CFNetwork.kCFRunLoopDefaultMode) CFNetwork.CFHostUnscheduleFromRunLoop(v, rl, CFNetwork.kCFRunLoopDefaultMode) self.assertArgHasType(CFNetwork.CFHostGetNames, 1, b"o^" + objc._C_NSBOOL) lst, ok = CFNetwork.CFHostGetNames(v, None) print("XXX", lst) self.assertIsInstance(lst, CFNetwork.CFArrayRef) self.assertIsInstance(ok, bool)
def testFuncdtions(self): self.assertResultIsCFRetained( CFNetwork.CFNetDiagnosticCreateWithStreams) host = CFNetwork.CFHostCreateWithName(None, "www.apple.com") rd, wr = CFNetwork.CFStreamCreatePairWithSocketToCFHost( None, host, 80, None, None) self.assertIsInstance(rd, CFNetwork.CFReadStreamRef) self.assertIsInstance(wr, CFNetwork.CFWriteStreamRef) ref = CFNetwork.CFNetDiagnosticCreateWithStreams(None, rd, wr) self.assertIsInstance(ref, objc.objc_object) # CFNetDiagnosticRef) self.assertResultIsCFRetained(CFNetwork.CFNetDiagnosticCreateWithURL) ref = CFNetwork.CFNetDiagnosticCreateWithURL( None, CFNetwork.CFURLCreateWithString(None, "http://www.apple.com/", None)) self.assertIsInstance(ref, objc.objc_object) # CFNetDiagnosticRef) CFNetwork.CFNetDiagnosticSetName(ref, "hello world") sts = CFNetwork.CFNetDiagnosticDiagnoseProblemInteractively(ref) self.assertIsInstance(sts, int) self.assertArgIsOut( CFNetwork.CFNetDiagnosticCopyNetworkStatusPassively, 1) sts, descr = CFNetwork.CFNetDiagnosticCopyNetworkStatusPassively( ref, None) self.assertIsInstance(sts, int) self.assertIsInstance(descr, str)
def testCallbacks(self): lst = [] ctx = object() def callback(host, typeinfo, error, ctx): lst.append([host, typeinfo, error, ctx]) host = CFNetwork.CFHostCreateWithName(None, "localhost") CFNetwork.CFHostSetClient(host, callback, ctx) rl = CFNetwork.CFRunLoopGetCurrent() CFNetwork.CFHostScheduleWithRunLoop(host, rl, CFNetwork.kCFRunLoopDefaultMode) ok, err = CFNetwork.CFHostStartInfoResolution( host, CFNetwork.kCFHostAddresses, None ) self.assertTrue(ok) self.assertIsInstance(ok, bool) self.assertIsInstance(err, CFNetwork.CFStreamError) CFNetwork.CFRunLoopRunInMode(CFNetwork.kCFRunLoopDefaultMode, 4.0, False) CFNetwork.CFHostUnscheduleFromRunLoop(host, rl, CFNetwork.kCFRunLoopDefaultMode) self.assertEqual(len(lst), 1) self.assertIsInstance(lst[0][0], CFNetwork.CFHostRef) self.assertIsInstance(lst[0][1], int) self.assertIsInstance(lst[0][2], CFNetwork.CFStreamError) self.assertIs(lst[0][3], ctx) self.assertResultIsNotCFRetained(CFNetwork.CFHostGetAddressing) self.assertArgHasType(CFNetwork.CFHostGetAddressing, 1, b"o^Z") lst, ok = CFNetwork.CFHostGetAddressing(host, None) self.assertIsInstance(lst, CFNetwork.CFArrayRef) self.assertIsInstance(lst[0], CFNetwork.CFDataRef) self.assertIsInstance(ok, bool)
def testFunctions(self): err = CFNetwork.CFStreamError() err.error = (1 << 16) + 2 v = CFNetwork.CFSocketStreamSOCKSGetErrorSubdomain(err) self.assertEqual(v, 1) v = CFNetwork.CFSocketStreamSOCKSGetError(err) self.assertEqual(v, 2) self.assertArgIsCFRetained(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 3) self.assertArgIsCFRetained(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 4) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 3) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToCFHost, 4) host = CFNetwork.CFHostCreateWithName(None, "connect.apple.com") rd, wr = CFNetwork.CFStreamCreatePairWithSocketToCFHost( None, host, 443, None, None ) self.assertIsInstance(rd, CFNetwork.CFReadStreamRef) self.assertIsInstance(wr, CFNetwork.CFWriteStreamRef) if os_level_key(os_release()) < os_level_key("10.10"): self.assertResultIsBOOL(CFNetwork.CFSocketStreamPairSetSecurityProtocol) v = CFNetwork.CFSocketStreamPairSetSecurityProtocol( rd, wr, CFNetwork.kCFStreamSocketSecuritySSLv23 ) self.assertIsInstance(v, bool) self.assertArgIsCFRetained( CFNetwork.CFStreamCreatePairWithSocketToNetService, 2 ) self.assertArgIsCFRetained( CFNetwork.CFStreamCreatePairWithSocketToNetService, 3 ) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToNetService, 2) self.assertArgIsOut(CFNetwork.CFStreamCreatePairWithSocketToNetService, 3) service = CFNetwork.CFNetServiceCreate( None, "pyobjc.local", "ssh", "pyobjc.test.local", 9999 ) rd, wr = CFNetwork.CFStreamCreatePairWithSocketToNetService( None, service, None, None ) self.assertIsInstance(rd, CFNetwork.CFReadStreamRef) self.assertIsInstance(wr, CFNetwork.CFWriteStreamRef)
def testFunctions(self): url = CFNetwork.CFURLCreateWithString(None, "http://www.python.org/", None) self.assertIsInstance(url, CFNetwork.CFURLRef) req = CFNetwork.CFHTTPMessageCreateRequest(None, "GET", url, CFNetwork.kCFHTTPVersion1_1) self.assertIsInstance(req, CFNetwork.CFHTTPMessageRef) self.assertResultIsCFRetained( CFNetwork.CFReadStreamCreateForHTTPRequest) v = CFNetwork.CFReadStreamCreateForHTTPRequest(None, req) self.assertIsInstance(v, CFNetwork.CFReadStreamRef) with open("/dev/null", "w") as fp: fd_2 = os.dup(2) os.dup2(fp.fileno(), 2) try: # Avoid deprecation messages from CFNetwork self.assertResultIsCFRetained( CFNetwork.CFReadStreamCreateForStreamedHTTPRequest) v = CFNetwork.CFReadStreamCreateForStreamedHTTPRequest( None, req, v) self.assertIsInstance(v, CFNetwork.CFReadStreamRef) if os_level_key(os_release()) < os_level_key("10.15"): self.assertArgIsBOOL( CFNetwork.CFHTTPReadStreamSetRedirectsAutomatically, 1) CFNetwork.CFHTTPReadStreamSetRedirectsAutomatically(v, True) if os_level_key(os_release()) < os_level_key("10.9"): CFNetwork.CFHTTPReadStreamSetProxy(v, "localhost", 8080) finally: os.dup2(fd_2, 2)
def testFunctions(self): self.assertIsInstance(CFNetwork.CFHTTPAuthenticationGetTypeID(), int) msg = CFNetwork.CFHTTPMessageCreateResponse( None, 401, "Authenticate", CFNetwork.kCFHTTPVersion1_0) self.assertIsInstance(msg, CFNetwork.CFHTTPMessageRef) CFNetwork.CFHTTPMessageSetHeaderFieldValue( msg, NSString.stringWithString_("WWW-Authenticate"), NSString.stringWithString_('Basic realm="WallyWorld"'), ) self.assertResultIsCFRetained( CFNetwork.CFHTTPAuthenticationCreateFromResponse) ref = CFNetwork.CFHTTPAuthenticationCreateFromResponse(None, msg) self.assertIsInstance(ref, CFNetwork.CFHTTPAuthenticationRef) self.assertResultIsBOOL(CFNetwork.CFHTTPAuthenticationIsValid) self.assertArgIsOut(CFNetwork.CFHTTPAuthenticationIsValid, 1) v, err = CFNetwork.CFHTTPAuthenticationIsValid(ref, None) self.assertIsInstance(v, bool) if v: self.assertTrue(err is None) else: self.assertIsInstance(err, CFNetwork.CFStreamError) self.assertResultIsBOOL(CFNetwork.CFHTTPAuthenticationAppliesToRequest) v = CFNetwork.CFHTTPAuthenticationAppliesToRequest(ref, msg) self.assertIsInstance(v, bool) self.assertResultIsBOOL( CFNetwork.CFHTTPAuthenticationRequiresOrderedRequests) v = CFNetwork.CFHTTPAuthenticationRequiresOrderedRequests(ref) self.assertIsInstance(v, bool) url = CFNetwork.CFURLCreateWithString(None, "http://www.python.org/", None) req = CFNetwork.CFHTTPMessageCreateRequest(None, "GET", url, "1.0") self.assertResultIsBOOL(CFNetwork.CFHTTPMessageApplyCredentials) self.assertArgIsOut(CFNetwork.CFHTTPMessageApplyCredentials, 4) v, err = CFNetwork.CFHTTPMessageApplyCredentials( req, ref, "ronald", "secret", None) if v is True: self.assertEqual(err, None) else: self.assertIsInstance(err, CFNetwork.CFStreamError) self.assertResultIsBOOL( CFNetwork.CFHTTPMessageApplyCredentialDictionary) self.assertArgIsOut(CFNetwork.CFHTTPMessageApplyCredentialDictionary, 3) v, err = CFNetwork.CFHTTPMessageApplyCredentialDictionary( req, ref, { CFNetwork.kCFHTTPAuthenticationUsername: "******", CFNetwork.kCFHTTPAuthenticationPassword: "******", }, None, ) if v is True: self.assertEqual(err, None) else: self.assertIsInstance(err, CFNetwork.CFStreamError) self.assertResultIsCFRetained(CFNetwork.CFHTTPAuthenticationCopyRealm) self.assertResultHasType(CFNetwork.CFHTTPAuthenticationCopyRealm, b"^{__CFString=}") v = CFNetwork.CFHTTPAuthenticationCopyRealm(ref) self.assertTrue(v is None or isinstance(v, str)) self.assertResultIsCFRetained( CFNetwork.CFHTTPAuthenticationCopyDomains) self.assertResultHasType(CFNetwork.CFHTTPAuthenticationCopyDomains, b"^{__CFArray=}") v = CFNetwork.CFHTTPAuthenticationCopyDomains(ref) self.assertTrue(v is None or isinstance(v, CFNetwork.CFArrayRef)) self.assertResultIsCFRetained(CFNetwork.CFHTTPAuthenticationCopyMethod) self.assertResultHasType(CFNetwork.CFHTTPAuthenticationCopyMethod, b"^{__CFString=}") v = CFNetwork.CFHTTPAuthenticationCopyMethod(ref) self.assertTrue(v is None or isinstance(v, str)) self.assertResultIsBOOL( CFNetwork.CFHTTPAuthenticationRequiresUserNameAndPassword) v = CFNetwork.CFHTTPAuthenticationRequiresUserNameAndPassword(ref) self.assertIsInstance(v, bool) self.assertResultIsBOOL( CFNetwork.CFHTTPAuthenticationRequiresAccountDomain) v = CFNetwork.CFHTTPAuthenticationRequiresAccountDomain(ref) self.assertIsInstance(v, bool)
def testFunctions(self): self.assertIsInstance(CFNetwork.CFHTTPMessageGetTypeID(), int) url = CFNetwork.CFURLCreateWithString(None, "http://www.python.org/", None) self.assertIsInstance(url, CFNetwork.CFURLRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCreateRequest) req = CFNetwork.CFHTTPMessageCreateRequest(None, "GET", url, CFNetwork.kCFHTTPVersion1_1) self.assertIsInstance(req, CFNetwork.CFHTTPMessageRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCreateResponse) resp = CFNetwork.CFHTTPMessageCreateResponse( None, 200, "Okidoki", CFNetwork.kCFHTTPVersion1_1) self.assertIsInstance(req, CFNetwork.CFHTTPMessageRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCreateEmpty) self.assertArgIsBOOL(CFNetwork.CFHTTPMessageCreateEmpty, 1) m = CFNetwork.CFHTTPMessageCreateEmpty(None, True) self.assertIsInstance(m, CFNetwork.CFHTTPMessageRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCreateCopy) m = CFNetwork.CFHTTPMessageCreateCopy(None, req) self.assertIsInstance(m, CFNetwork.CFHTTPMessageRef) self.assertResultIsBOOL(CFNetwork.CFHTTPMessageIsRequest) self.assertTrue(CFNetwork.CFHTTPMessageIsRequest(req) is True) self.assertTrue(CFNetwork.CFHTTPMessageIsRequest(resp) is False) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCopyVersion) v = CFNetwork.CFHTTPMessageCopyVersion(req) self.assertIsInstance(v, str) CFNetwork.CFHTTPMessageSetBody(req, b"hello world") self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCopyBody) b = CFNetwork.CFHTTPMessageCopyBody(req) self.assertIsInstance(b, (CFNetwork.CFDataRef, memoryview, bytes)) self.assertResultIsCFRetained( CFNetwork.CFHTTPMessageCopyAllHeaderFields) v = CFNetwork.CFHTTPMessageCopyAllHeaderFields(req) self.assertIsInstance(v, CFNetwork.CFDictionaryRef) self.assertResultIsCFRetained( CFNetwork.CFHTTPMessageCopyHeaderFieldValue) v = CFNetwork.CFHTTPMessageCopyHeaderFieldValue(req, "X-Python") self.assertTrue(v is None) CFNetwork.CFHTTPMessageSetHeaderFieldValue(req, "X-Python", "Rocks") v = CFNetwork.CFHTTPMessageCopyHeaderFieldValue(req, "X-Python") self.assertEqual(v, "Rocks") self.assertResultIsBOOL(CFNetwork.CFHTTPMessageAppendBytes) self.assertArgHasType(CFNetwork.CFHTTPMessageAppendBytes, 1, b"n^v") self.assertArgSizeInArg(CFNetwork.CFHTTPMessageAppendBytes, 1, 2) v = CFNetwork.CFHTTPMessageAppendBytes(req, b"hello world", 11) self.assertTrue(v is True) self.assertResultIsBOOL(CFNetwork.CFHTTPMessageIsHeaderComplete) v = CFNetwork.CFHTTPMessageIsHeaderComplete(req) self.assertTrue(v is False or v is True) self.assertResultIsCFRetained( CFNetwork.CFHTTPMessageCopySerializedMessage) v = CFNetwork.CFHTTPMessageCopySerializedMessage(resp) self.assertIsInstance(v, CFNetwork.CFDataRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCopyRequestURL) v = CFNetwork.CFHTTPMessageCopyRequestURL(req) self.assertIsInstance(v, CFNetwork.CFURLRef) self.assertResultIsCFRetained(CFNetwork.CFHTTPMessageCopyRequestMethod) v = CFNetwork.CFHTTPMessageCopyRequestMethod(req) self.assertIsInstance(v, str) self.assertResultIsBOOL(CFNetwork.CFHTTPMessageAddAuthentication) self.assertArgIsBOOL(CFNetwork.CFHTTPMessageAddAuthentication, 5) v = CFNetwork.CFHTTPMessageAddAuthentication( req, resp, "ronald", "secret", CFNetwork.kCFHTTPAuthenticationSchemeBasic, False, ) self.assertIsInstance(v, bool) v = CFNetwork.CFHTTPMessageGetResponseStatusCode(resp) self.assertIsInstance(v, int) self.assertResultIsCFRetained( CFNetwork.CFHTTPMessageCopyResponseStatusLine) v = CFNetwork.CFHTTPMessageCopyResponseStatusLine(resp) self.assertIsInstance(v, str)
def testManual(self): lst = [] ctx = object() def callback(ctx, proxies, error): lst.append([ctx, proxies, error]) url = CFNetwork.CFURLCreateWithString(None, "http://www.apple.com/", None) rls = CFNetwork.CFNetworkExecuteProxyAutoConfigurationScript( SCRIPT, url, callback, ctx) self.assertIsInstance(rls, CFNetwork.CFRunLoopSourceRef) rl = CFNetwork.CFRunLoopGetCurrent() CFNetwork.CFRunLoopAddSource(rl, rls, CFNetwork.kCFRunLoopCommonModes) CFNetwork.CFRunLoopRunInMode(CFNetwork.kCFRunLoopDefaultMode, 1.0, False) CFNetwork.CFRunLoopRemoveSource(rl, rls, CFNetwork.kCFRunLoopCommonModes) self.assertNotEqual(len(lst), 0) self.assertTrue(lst[0][0] is ctx) self.assertIsInstance(lst[0][1], CFNetwork.CFArrayRef) self.assertEqual(lst[0][2], None) lst[:] = [] path = os.path.join(os.path.dirname(__file__), "proxy.pac") cwd = os.getcwd() if path.startswith(cwd): path = path[len(cwd) + 1:] scriptURL = CFNetwork.CFURLCreateWithFileSystemPath( None, path, CFNetwork.kCFURLPOSIXPathStyle, False) rls = CFNetwork.CFNetworkExecuteProxyAutoConfigurationURL( scriptURL, url, callback, ctx) self.assertIsInstance(rls, CFNetwork.CFRunLoopSourceRef) CFNetwork.CFRunLoopAddSource(rl, rls, CFNetwork.kCFRunLoopCommonModes) CFNetwork.CFRunLoopRunInMode(CFNetwork.kCFRunLoopDefaultMode, 1.0, True) CFNetwork.CFRunLoopRemoveSource(rl, rls, CFNetwork.kCFRunLoopCommonModes) # print lst self.assertNotEqual(len(lst), 0) self.assertTrue(lst[0][0] is ctx) if lst[0][2] is None: self.assertIsInstance(lst[0][1], CFNetwork.CFArrayRef) self.assertEqual(lst[0][2], None) else: self.assertEqual(lst[0][1], None) self.assertIsInstance(lst[0][2], CFNetwork.CFErrorRef)
def testFunctions10_6(self): r = CFNetwork.CFNetworkCopySystemProxySettings() self.assertIsInstance(r, CFNetwork.CFDictionaryRef)
def testFunctions(self): self.assertIsInstance(CFNetwork.CFNetServiceGetTypeID(), int) self.assertIsInstance(CFNetwork.CFNetServiceMonitorGetTypeID(), int) self.assertIsInstance(CFNetwork.CFNetServiceBrowserGetTypeID(), int) self.assertResultIsCFRetained(CFNetwork.CFNetServiceCreate) serv = CFNetwork.CFNetServiceCreate(None, "pyobjc.local", "ssh", "pyobjc.test.local", 9999) self.assertIsInstance(serv, CFNetwork.CFNetServiceRef) self.assertResultIsCFRetained(CFNetwork.CFNetServiceCreateCopy) v = CFNetwork.CFNetServiceCreateCopy(None, serv) self.assertIsInstance(v, CFNetwork.CFNetServiceRef) dom = CFNetwork.CFNetServiceGetDomain(serv) self.assertIsInstance(dom, str) dom = CFNetwork.CFNetServiceGetType(serv) self.assertIsInstance(dom, str) dom = CFNetwork.CFNetServiceGetName(serv) self.assertIsInstance(dom, str) self.assertResultIsBOOL(CFNetwork.CFNetServiceRegisterWithOptions) self.assertArgIsOut(CFNetwork.CFNetServiceRegisterWithOptions, 2) ok, err = CFNetwork.CFNetServiceRegisterWithOptions( serv, CFNetwork.kCFNetServiceFlagNoAutoRename, None) self.assertIsInstance(ok, bool) if ok: self.assertEqual(err, None) else: self.assertIsInstance(err, CFNetwork.CFStreamError) self.assertResultIsBOOL(CFNetwork.CFNetServiceResolveWithTimeout) self.assertArgIsOut(CFNetwork.CFNetServiceResolveWithTimeout, 2) ok, err = CFNetwork.CFNetServiceResolveWithTimeout(serv, 1.0, None) self.assertIsInstance(ok, bool) if ok: self.assertEqual(err, None) else: self.assertIsInstance(err, CFNetwork.CFStreamError) host = CFNetwork.CFNetServiceGetTargetHost(serv) self.assertIsInstance(host, (str, type(None))) port = CFNetwork.CFNetServiceGetPortNumber(serv) self.assertIsInstance(port, int) v = CFNetwork.CFNetServiceGetAddressing(serv) self.assertIsInstance(v, (Foundation.NSArray, type(None))) v = CFNetwork.CFNetServiceGetTXTData(serv) self.assertIsInstance(v, (Foundation.NSData, type(None))) v = CFNetwork.CFNetServiceCreateTXTDataWithDictionary( None, { "key": "value", "key2": "value2" }) self.assertIsInstance(v, Foundation.NSData) v = CFNetwork.CFNetServiceCreateDictionaryWithTXTData(None, v) self.assertIsInstance(v, Foundation.NSDictionary) self.assertResultIsBOOL(CFNetwork.CFNetServiceSetTXTData) ok = CFNetwork.CFNetServiceSetTXTData(serv, b"hello") self.assertIsInstance(ok, bool) rl = CFNetwork.CFRunLoopGetCurrent() CFNetwork.CFNetServiceScheduleWithRunLoop( serv, rl, CFNetwork.kCFRunLoopDefaultMode) CFNetwork.CFNetServiceUnscheduleFromRunLoop( serv, rl, CFNetwork.kCFRunLoopDefaultMode) CFNetwork.CFNetServiceCancel(serv)