1from PyObjCTools.TestSupport import * 2 3from SystemConfiguration import * 4import sys 5 6try: 7 unicode 8except NameError: 9 unicode = str 10 11try: 12 long 13except NameError: 14 long = int 15 16class TestSCNetworkConfiguration (TestCase): 17 18 def testTypes(self): 19 self.assertTrue(isinstance(SCNetworkInterfaceRef, objc.objc_class)) 20 self.assertTrue(isinstance(SCBondStatusRef, objc.objc_class)) 21 self.assertTrue(isinstance(SCNetworkProtocolRef, objc.objc_class)) 22 self.assertTrue(isinstance(SCNetworkServiceRef, objc.objc_class)) 23 self.assertTrue(isinstance(SCNetworkSetRef, objc.objc_class)) 24 25 self.assertTrue(SCBondInterfaceRef is SCNetworkInterfaceRef) 26 self.assertTrue(SCVLANInterfaceRef is SCNetworkInterfaceRef) 27 28 29 def testConstants(self): 30 self.assertTrue(isinstance(kSCNetworkInterfaceType6to4, unicode)) 31 self.assertTrue(isinstance(kSCNetworkInterfaceTypeBluetooth, unicode)) 32 self.assertTrue(isinstance(kSCNetworkInterfaceTypeBond, unicode)) 33 self.assertTrue(isinstance(kSCNetworkInterfaceTypeEthernet, unicode)) 34 self.assertTrue(isinstance(kSCNetworkInterfaceTypeFireWire, unicode)) 35 self.assertTrue(isinstance(kSCNetworkInterfaceTypeIEEE80211, unicode)) 36 self.assertTrue(isinstance(kSCNetworkInterfaceTypeL2TP, unicode)) 37 self.assertTrue(isinstance(kSCNetworkInterfaceTypeIrDA, unicode)) 38 self.assertTrue(isinstance(kSCNetworkInterfaceTypeModem, unicode)) 39 self.assertTrue(isinstance(kSCNetworkInterfaceTypePPP, unicode)) 40 self.assertTrue(isinstance(kSCNetworkInterfaceTypePPTP, unicode)) 41 self.assertTrue(isinstance(kSCNetworkInterfaceTypeSerial, unicode)) 42 self.assertTrue(isinstance(kSCNetworkInterfaceTypeVLAN, unicode)) 43 self.assertTrue(isinstance(kSCNetworkInterfaceTypeWWAN, unicode)) 44 self.assertTrue(isinstance(kSCNetworkInterfaceTypeIPv4, unicode)) 45 46 self.assertTrue(isinstance(kSCNetworkInterfaceIPv4, SCNetworkInterfaceRef)) 47 48 self.assertEquals(kSCBondStatusOK, 0) 49 self.assertEquals(kSCBondStatusLinkInvalid, 1) 50 self.assertEquals(kSCBondStatusNoPartner, 2) 51 self.assertEquals(kSCBondStatusNotInActiveGroup, 3) 52 self.assertEquals(kSCBondStatusUnknown, 999) 53 54 self.assertTrue(isinstance(kSCBondStatusDeviceAggregationStatus, unicode)) 55 self.assertTrue(isinstance(kSCBondStatusDeviceCollecting, unicode)) 56 self.assertTrue(isinstance(kSCBondStatusDeviceDistributing, unicode)) 57 58 self.assertTrue(isinstance(kSCNetworkProtocolTypeAppleTalk, unicode)) 59 self.assertTrue(isinstance(kSCNetworkProtocolTypeDNS, unicode)) 60 self.assertTrue(isinstance(kSCNetworkProtocolTypeIPv4, unicode)) 61 self.assertTrue(isinstance(kSCNetworkProtocolTypeIPv6, unicode)) 62 self.assertTrue(isinstance(kSCNetworkProtocolTypeProxies, unicode)) 63 self.assertTrue(isinstance(kSCNetworkProtocolTypeSMB, unicode)) 64 65 def testFunctions(self): 66 r = SCNetworkInterfaceGetTypeID() 67 self.assertTrue(isinstance(r, (int, long))) 68 69 r = SCNetworkInterfaceCopyAll() 70 self.assertTrue(isinstance(r, CFArrayRef)) 71 self.assertTrue(len(r) > 0) 72 73 for iface in r: 74 if SCNetworkInterfaceGetBSDName(iface).startswith('en'): 75 break 76 r = SCNetworkInterfaceGetSupportedInterfaceTypes(iface) 77 self.assertTrue(isinstance(r, CFArrayRef)) 78 self.assertTrue(isinstance(r[0], unicode)) 79 80 r = SCNetworkInterfaceGetSupportedProtocolTypes(iface) 81 self.assertTrue(isinstance(r, CFArrayRef)) 82 self.assertTrue(isinstance(r[0], unicode)) 83 84 r = SCNetworkInterfaceCreateWithInterface(iface, kSCNetworkInterfaceTypeL2TP) 85 self.assertTrue(r is None or isinstance(r, SCNetworkInterfaceRef)) 86 87 r = SCNetworkInterfaceGetBSDName(iface) 88 self.assertTrue(isinstance(r, unicode)) 89 90 r = SCNetworkInterfaceGetConfiguration(iface) 91 self.assertTrue(r is None or isinstance(r, CFDictionaryRef)) 92 93 r = SCNetworkInterfaceGetExtendedConfiguration(iface, "EAPOL") 94 self.assertTrue(r is None or isinstance(r, CFDictionaryRef)) 95 96 r = SCNetworkInterfaceGetHardwareAddressString(iface) 97 self.assertTrue(isinstance(r, unicode)) 98 99 r = SCNetworkInterfaceGetInterface(iface) 100 self.assertTrue(r is None) 101 102 r = SCNetworkInterfaceGetInterfaceType(iface) 103 self.assertTrue(isinstance(r, unicode)) 104 105 r = SCNetworkInterfaceGetLocalizedDisplayName(iface) 106 self.assertTrue(isinstance(r, unicode)) 107 108 r = SCNetworkInterfaceSetConfiguration(iface, {}) 109 self.assertTrue(r is True or r is False) 110 111 r = SCNetworkInterfaceSetExtendedConfiguration(iface, "OC", {}) 112 self.assertTrue(r is True or r is False) 113 114 r, current, active, available = SCNetworkInterfaceCopyMediaOptions(iface, 115 None, None, None, False) 116 self.assertTrue(r is True) 117 self.assertTrue(isinstance(current, CFDictionaryRef)) 118 self.assertTrue(isinstance(active, CFDictionaryRef)) 119 self.assertTrue(isinstance(available, CFArrayRef)) 120 121 r = SCNetworkInterfaceCopyMediaSubTypes(available) 122 self.assertTrue(isinstance(r, CFArrayRef)) 123 for item in r: 124 self.assertTrue(isinstance(item, unicode)) 125 126 r = SCNetworkInterfaceCopyMediaSubTypeOptions(available, r[0]) 127 self.assertTrue(isinstance(r, CFArrayRef)) 128 129 if sys.byteorder == 'little': 130 # These tests crash in Rosetta on an intel machine:: 131 # 132 # Unhandled transform (1) for ioctl group = 105 (i), number = 68, length = 32 133 # Illegal instruction 134 135 # I haven't filed a bug for this yet. 136 137 r, mtu_cur, mtu_min, mtu_max = SCNetworkInterfaceCopyMTU(iface, None, None, None) 138 self.assertTrue(r is True) 139 self.assertTrue(isinstance(mtu_cur, (int, long))) 140 self.assertTrue(isinstance(mtu_min, (int, long))) 141 self.assertTrue(isinstance(mtu_max, (int, long))) 142 r = SCNetworkInterfaceSetMediaOptions(iface, 143 current['MediaSubType'], 144 current['MediaOptions']) 145 self.assertTrue(r is True or r is False) 146 147 r = SCNetworkInterfaceSetMTU(iface, mtu_cur) 148 self.assertTrue(r is True or r is False) 149 150 r = SCNetworkInterfaceForceConfigurationRefresh(iface) 151 self.assertTrue(r is True or r is False) 152 153 prefs = SCPreferencesCreate(None, "SystemConfiguration", None) 154 self.assertTrue(isinstance(prefs, SCPreferencesRef)) 155 156 a = SCBondInterfaceCopyAll(prefs) 157 self.assertTrue(isinstance(a, CFArrayRef)) 158 159 a = SCBondInterfaceCopyAvailableMemberInterfaces(prefs) 160 self.assertTrue(isinstance(a, CFArrayRef)) 161 162 iface = SCBondInterfaceCreate(prefs) 163 self.assertTrue(iface is None or isinstance(iface, SCBondInterfaceRef)) 164 165 if iface is not None: 166 a = SCBondInterfaceGetMemberInterfaces(iface) 167 self.assertTrue(isinstance(a, CFArrayRef)) 168 169 o = SCBondInterfaceGetOptions(iface) 170 self.assertTrue(o is None or isinstance(o, CFDictionaryRef)) 171 172 r = SCBondInterfaceSetMemberInterfaces(iface, SCNetworkInterfaceCopyAll()) 173 self.assertTrue(r is True or r is False) 174 175 r = SCBondInterfaceSetLocalizedDisplayName(iface, "pyobjc.bond") 176 self.assertTrue(r is True or r is False) 177 178 179 r = SCBondInterfaceSetOptions(iface, {}) 180 self.assertTrue(r is True or r is False) 181 182 st = SCBondInterfaceCopyStatus(iface) 183 self.assertTrue(st is None or isinstance(st, SCBondStatusRef)) 184 185 a = SCBondStatusGetMemberInterfaces(iface) 186 self.assertTrue(a is None or isinstance(a, CFArrayRef)) 187 188 st = SCBondStatusGetInterfaceStatus(iface, None) 189 self.assertTrue(a is None or isinstance(a, CFDictionaryRef)) 190 191 r = SCBondInterfaceRemove(iface) 192 self.assertTrue(r is True) 193 194 195 r = SCBondStatusGetTypeID() 196 self.assertTrue(isinstance(r, (int, long))) 197 198 a = SCVLANInterfaceCopyAll(prefs) 199 self.assertTrue(isinstance(a, CFArrayRef)) 200 201 a = SCVLANInterfaceCopyAvailablePhysicalInterfaces() 202 self.assertTrue(isinstance(a, CFArrayRef)) 203 204 if len(a) != 0: 205 iface = SCVLANInterfaceCreate(prefs, a[0], 99) 206 self.assertTrue(isinstance(iface, SCVLANInterfaceRef)) 207 208 r = SCVLANInterfaceGetPhysicalInterface(iface) 209 self.assertEqual(r, a[0]) 210 211 t = SCVLANInterfaceGetTag(iface) 212 self.assertEquals(t, 99) 213 214 t = SCVLANInterfaceGetOptions(iface) 215 self.assertTrue(t is None or isinstance(t, CFDictionaryRef)) 216 217 r = SCVLANInterfaceSetPhysicalInterfaceAndTag(iface, a[0], 42) 218 self.assertIs(r, True) 219 220 r = SCVLANInterfaceSetLocalizedDisplayName(iface, "octest") 221 self.assertIs(r, True) 222 223 r = SCVLANInterfaceSetOptions(iface, {"name": "foo"}) 224 self.assertIs(r, True) 225 226 t = SCVLANInterfaceGetOptions(iface) 227 self.assertTrue(isinstance(t, CFDictionaryRef)) 228 229 r = SCVLANInterfaceRemove(iface) 230 self.assertTrue(r is True) 231 232 r = SCNetworkProtocolGetTypeID() 233 self.assertTrue(isinstance(r, (int, long))) 234 235 r = SCNetworkServiceGetTypeID() 236 self.assertTrue(isinstance(r, (int, long))) 237 238 r = SCNetworkSetGetTypeID() 239 self.assertTrue(isinstance(r, (int, long))) 240 241 r = SCNetworkServiceCopyAll(prefs) 242 self.assertIsInstance(r, CFArrayRef) 243 244 serv = r[0] 245 self.assertIsInstance(serv, SCNetworkServiceRef) 246 prot = SCNetworkServiceCopyProtocol(serv, kSCNetworkProtocolTypeIPv4) 247 self.assertIsInstance(prot, SCNetworkProtocolRef) 248 249 conf = SCNetworkProtocolGetConfiguration(prot) 250 self.assertIsInstance(conf, CFDictionaryRef) 251 252 enabled = SCNetworkProtocolGetEnabled(prot) 253 self.assertIsInstance(enabled, bool) 254 255 pr = SCNetworkProtocolGetProtocolType(prot) 256 self.assertIsInstance(pr, unicode) 257 258 v = SCNetworkProtocolSetConfiguration(prot, conf) 259 self.assertIsInstance(v, bool) 260 261 v = SCNetworkProtocolSetEnabled(prot, enabled) 262 self.assertIsInstance(v, bool) 263 264 v = SCNetworkServiceAddProtocolType(serv, pr) 265 self.assertIsInstance(v, bool) 266 267 268 v = SCNetworkServiceCopyProtocols(serv) 269 self.assertIsInstance(v, CFArrayRef) 270 if v: 271 self.assertIsInstance(v[0], SCNetworkProtocolRef) 272 273 274 iface = SCNetworkServiceGetInterface(serv) 275 self.assertIsInstance(iface, SCNetworkInterfaceRef) 276 277 v = SCNetworkServiceCreate(prefs, iface) 278 self.assertIsInstance(v, SCNetworkServiceRef) 279 280 v = s2 = SCNetworkServiceCopy(prefs, SCNetworkServiceGetServiceID(serv)) 281 self.assertIsInstance(v, SCNetworkServiceRef) 282 283 v = SCNetworkServiceGetEnabled(serv) 284 self.assertIsInstance(v, bool) 285 286 v = SCNetworkServiceGetName(serv) 287 self.assertIsInstance(v, unicode) 288 289 self.assertResultIsCFRetained(SCNetworkServiceCopyProtocol) 290 291 v = SCNetworkServiceRemoveProtocolType(s2, kSCNetworkProtocolTypeIPv4) 292 self.assertIsInstance(v, bool) 293 294 v = SCNetworkServiceRemove(s2) 295 self.assertIsInstance(v, bool) 296 297 v = SCNetworkServiceSetEnabled(serv, SCNetworkServiceGetEnabled(serv)) 298 self.assertIsInstance(v, bool) 299 300 v = SCNetworkServiceSetName(serv, SCNetworkServiceGetName(serv)) 301 self.assertIsInstance(v, bool) 302 303 set = SCNetworkSetCopyCurrent(prefs) 304 self.assertIsInstance(set, SCNetworkSetRef) 305 306 s2 = SCNetworkServiceCopy(prefs, SCNetworkServiceGetServiceID(serv)) 307 308 v = SCNetworkSetAddService(set, s2) 309 self.assertIsInstance(v, bool) 310 311 312 v = SCNetworkSetContainsInterface(set, iface) 313 self.assertIsInstance(v, bool) 314 315 v = SCNetworkSetCopyAll(prefs) 316 self.assertIsInstance(v, CFArrayRef) 317 318 v = SCNetworkSetCopyServices(set) 319 self.assertIsInstance(v, CFArrayRef) 320 321 v = SCNetworkSetCreate(prefs) 322 self.assertIsInstance(v, SCNetworkSetRef) 323 324 v = SCNetworkSetCopy(prefs, SCNetworkSetGetSetID(set)) 325 self.assertIsInstance(v, SCNetworkSetRef) 326 327 v = SCNetworkSetRemove(v) 328 self.assertIsInstance(v, bool) 329 330 v = SCNetworkSetGetName(set) 331 self.assertIsInstance(v, unicode) 332 333 v = SCNetworkSetGetSetID(set) 334 self.assertIsInstance(v, unicode) 335 336 v = SCNetworkSetGetServiceOrder(set) 337 self.assertIsInstance(v, CFArrayRef) 338 339 v = SCNetworkSetSetName(set, SCNetworkSetGetName(set)) 340 self.assertIsInstance(v, bool) 341 342 v = SCNetworkSetSetServiceOrder(set, SCNetworkSetGetServiceOrder(set)) 343 self.assertIsInstance(v, bool) 344 345 v = SCNetworkSetSetCurrent(SCNetworkSetCopyCurrent(prefs)) 346 self.assertIsInstance(v, bool) 347 348 349 @min_os_level('10.5') 350 def testFunctions10_5(self): 351 prefs = SCPreferencesCreate(None, "SystemConfiguration", None) 352 self.assertTrue(isinstance(prefs, SCPreferencesRef)) 353 354 r = SCNetworkServiceCopyAll(prefs) 355 self.assertIsInstance(r, CFArrayRef) 356 serv = SCNetworkServiceCopy(prefs, SCNetworkServiceGetServiceID(r[0])) 357 358 v = SCNetworkServiceEstablishDefaultConfiguration(serv) 359 self.assertIsInstance(v, bool) 360 361 362 363if __name__ == "__main__": 364 main() 365