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