[Test] // bug #81886 public void FaultTest () { IPEndPoint localEP = new IPEndPoint (IPAddress.Loopback, 5000); using (SocketResponder sr = new SocketResponder (localEP, s => FaultResponse_Qualified (s))) { FooService service = new FooService (); service.Url = "http://" + IPAddress.Loopback.ToString () + ":5000/"; try { service.Run (); Assert.Fail ("#A1"); } catch (SoapException ex) { Assert.AreEqual ("Mono Web Service", ex.Actor, "#A2"); Assert.AreEqual (SoapException.ServerFaultCode, ex.Code, "#A3"); Assert.IsNotNull (ex.Detail, "#A4"); Assert.AreEqual ("detail", ex.Detail.LocalName, "#A5"); Assert.AreEqual ("http://schemas.xmlsoap.org/soap/envelope/", ex.Detail.NamespaceURI, "#A6"); XmlNamespaceManager nsMgr = new XmlNamespaceManager (ex.Detail.OwnerDocument.NameTable); nsMgr.AddNamespace ("se", "http://www.mono-project/System"); XmlElement systemError = (XmlElement) ex.Detail.SelectSingleNode ( "se:systemerror", nsMgr); Assert.IsNotNull (systemError, "#A7"); Assert.IsNull (ex.InnerException, "#A8"); Assert.AreEqual ("Failure processing request.", ex.Message, "#A9"); } service.Dispose (); } using (SocketResponder sr = new SocketResponder (localEP, s => FaultResponse_Unqualified (s))) { FooService service = new FooService (); service.Url = "http://" + IPAddress.Loopback.ToString () + ":5000/"; try { service.Run (); Assert.Fail ("#B1"); } catch (SoapException ex) { Assert.AreEqual ("Mono Web Service", ex.Actor, "#B2"); Assert.AreEqual (SoapException.ServerFaultCode, ex.Code, "#B3"); Assert.IsNotNull (ex.Detail, "#B4"); Assert.AreEqual ("detail", ex.Detail.LocalName, "#B5"); Assert.AreEqual (string.Empty, ex.Detail.NamespaceURI, "#B6"); XmlNamespaceManager nsMgr = new XmlNamespaceManager (ex.Detail.OwnerDocument.NameTable); nsMgr.AddNamespace ("se", "http://www.mono-project/System"); XmlElement systemError = (XmlElement) ex.Detail.SelectSingleNode ( "se:systemerror", nsMgr); Assert.IsNotNull (systemError, "#B7"); Assert.IsNull (ex.InnerException, "#B8"); Assert.AreEqual ("Failure processing request.", ex.Message, "#B9"); } service.Dispose (); } }