public void SetIPLocalAddressPreference() { TestRuntime.AssertXcodeVersion(11, 0); foreach (var ipOption in new [] { NWIPLocalAddressPreference.Default, NWIPLocalAddressPreference.Stable, NWIPLocalAddressPreference.Temporary }) { #if NET using (var options = new NWProtocolTlsOptions()) #else using (var options = NWProtocolOptions.CreateTls()) #endif Assert.DoesNotThrow(() => options.IPLocalAddressPreference = ipOption, "Tls"); #if NET using (var options = new NWProtocolTcpOptions()) #else using (var options = NWProtocolOptions.CreateTcp()) #endif Assert.DoesNotThrow(() => options.IPLocalAddressPreference = ipOption, "Tcp"); #if NET using (var options = new NWProtocolUdpOptions()) #else using (var options = NWProtocolOptions.CreateUdp()) #endif Assert.DoesNotThrow(() => options.IPLocalAddressPreference = ipOption, "Udp"); } }
public void CreateTlsTest() { using (var options = NWProtocolOptions.CreateTls()) { var sec = options.TlsProtocolOptions; // we cannot test much more :( Assert.AreNotEqual(IntPtr.Zero, options.Handle); } }
public void SetUp() { using (var tcpOptions = NWProtocolOptions.CreateTcp()) using (var tlsOptions = NWProtocolOptions.CreateTls()) using (var parameters = NWParameters.CreateTcp()) { parameters.ProtocolStack.PrependApplicationProtocol(tlsOptions); parameters.ProtocolStack.PrependApplicationProtocol(tcpOptions); parameters.IncludePeerToPeer = true; listener = NWListener.Create("1234", parameters); } }
public void CreateTlsTest() { #if NET using (var options = new NWProtocolTlsOptions()) { var sec = options.ProtocolOptions; #else using (var options = NWProtocolOptions.CreateTls()) { var sec = options.TlsProtocolOptions; #endif // we cannot test much more :( Assert.AreNotEqual(IntPtr.Zero, options.Handle); } }
public void NewTlsOptions() { TestRuntime.AssertXcodeVersion(11, 0); using (var npo = NWProtocolOptions.CreateTls()) { var options = npo.TlsProtocolOptions; options.SetTlsMaxVersion(TlsProtocolVersion.Tls12); options.SetTlsMinVersion(TlsProtocolVersion.Tls10); options.AddTlsCipherSuite(TlsCipherSuite.Aes128GcmSha256); options.AddTlsCipherSuiteGroup(TlsCipherSuiteGroup.Legacy); using (var dd = DispatchData.FromByteBuffer(new byte [1])) { options.SetTlsPreSharedKeyIdentityHint(dd); } } }
public void Equals() { TestRuntime.AssertXcodeVersion(11, 0); using (var npo = NWProtocolOptions.CreateTls()) { var options = npo.TlsProtocolOptions; Assert.True(SecProtocolOptions.Equals(null, null), "1"); Assert.True(SecProtocolOptions.Equals(options, options), "2"); Assert.False(SecProtocolOptions.Equals(null, options), "3"); Assert.False(SecProtocolOptions.Equals(options, null), "4"); Assert.True(options.Equals(options), "5"); Assert.False(options.Equals(null), "6"); } }
public void TestStateChangesHandler() { // In the test we are doing the following: // // 1. Start a browser. At this point, we have no listeners (unless someone is exposing it in the lab) // and therefore the browser cannot find any services/listeners. // 2. Start a listener that is using the same type/domain pair that the browser expects. // 3. Browser picks up the new listener, and sends an event (service found). // 4. Listener stops, and the service disappears. // 5. The browser is not yet canceled, so it picks up that the service/listener is not longer then and returns it. // // The test will block until the different events are set by the callbacks that are executed in a diff thread. bool firstRun = true; bool eventsDone = false; bool listeningDone = false; Exception ex = null; var changesEvent = new AutoResetEvent(false); var browserReady = new AutoResetEvent(false); var finalEvent = new AutoResetEvent(false); TestRuntime.RunAsync(DateTime.Now.AddSeconds(30), async() => { // start the browser, before the listener browser.SetStateChangesHandler((st, er) => { Assert.IsNotNull(st, "State"); Assert.IsNull(er, "Error"); if (st == NWBrowserState.Ready) { browserReady.Set(); } }); browser.SetChangesHandler((oldResult, newResult) => { // first time, listener appears, so we do not have an old result, second time // listener goes, so we do not have a new result try { if (firstRun) { Assert.IsNull(oldResult, "oldResult first run."); Assert.IsNotNull(newResult, "newResult first run"); firstRun = false; } else { Assert.IsNotNull(oldResult, "oldResult first run."); Assert.IsNull(newResult, "newResult first run"); } } catch (Exception e) { ex = e; } finally { changesEvent.Set(); eventsDone = true; } }); browser.Start(); browserReady.WaitOne(30000); using (var advertiser = NWAdvertiseDescriptor.CreateBonjourService("MonoTouchFixtures.Network", type)) using (var tcpOptions = NWProtocolOptions.CreateTcp()) using (var tlsOptions = NWProtocolOptions.CreateTls()) using (var paramenters = NWParameters.CreateTcp()) { paramenters.ProtocolStack.PrependApplicationProtocol(tlsOptions); paramenters.ProtocolStack.PrependApplicationProtocol(tcpOptions); paramenters.IncludePeerToPeer = true; using (var listener = NWListener.Create("1234", paramenters)) { listener.SetQueue(DispatchQueue.CurrentQueue); listener.SetAdvertiseDescriptor(advertiser); // we need the connection handler, else we will get an exception listener.SetNewConnectionHandler((c) => { }); listener.SetStateChangedHandler((s, e) => { if (e != null) { Console.WriteLine($"Got error {e.ErrorCode} {e.ErrorDomain} '{e.CFError.FailureReason}' {e.ToString ()}"); } }); listener.Start(); changesEvent.WaitOne(30000); listener.Cancel(); listeningDone = true; finalEvent.Set(); } } }, () => eventsDone); finalEvent.WaitOne(30000); Assert.IsTrue(eventsDone); Assert.IsTrue(listeningDone); Assert.IsNull(ex, "Exception"); browser.Cancel(); }