1 // 2 // Author: Atsushi Enomoto <atsushi@ximian.com> 3 // 4 // Copyright (C) 2010 Novell, Inc (http://www.novell.com) 5 // 6 // Permission is hereby granted, free of charge, to any person obtaining 7 // a copy of this software and associated documentation files (the 8 // "Software"), to deal in the Software without restriction, including 9 // without limitation the rights to use, copy, modify, merge, publish, 10 // distribute, sublicense, and/or sell copies of the Software, and to 11 // permit persons to whom the Software is furnished to do so, subject to 12 // the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be 15 // included in all copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 21 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 // 25 using System; 26 using System.Collections.Generic; 27 using System.Collections.ObjectModel; 28 using System.Linq; 29 using System.ServiceModel; 30 using System.ServiceModel.Channels; 31 using System.ServiceModel.Description; 32 using System.ServiceModel.Discovery; 33 using System.ServiceModel.Dispatcher; 34 using NUnit.Framework; 35 36 namespace MonoTests.System.ServiceModel.Discovery 37 { 38 [TestFixture] 39 public class DiscoveryEndpointTest 40 { 41 [Test] DefaultValues()42 public void DefaultValues () 43 { 44 var de = new DiscoveryEndpoint (); 45 Assert.AreEqual (DiscoveryVersion.WSDiscovery11, de.DiscoveryVersion, "#1"); 46 Assert.AreEqual (ServiceDiscoveryMode.Managed, de.DiscoveryMode, "#2"); 47 Assert.AreEqual (TimeSpan.Zero, de.MaxResponseDelay, "#3"); 48 var cd = de.Contract; 49 Assert.IsNotNull (cd, "#11"); // some version-dependent internal type. 50 Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01", cd.Namespace, "#11-2"); 51 Assert.AreEqual ("DiscoveryProxy", cd.Name, "#11-3"); 52 Assert.AreEqual (2, cd.Operations.Count, "#11-4"); 53 var oper = cd.Operations.FirstOrDefault (od => !od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/Probe")); 54 Assert.IsNotNull (oper, "#11-5"); 55 Assert.IsNotNull (oper.Messages.Any (md => md.Body.ReturnValue != null && md.Body.ReturnValue.Type == typeof (void)), "#11-5-2"); // return type is void 56 Assert.IsTrue (cd.Operations.Any (od => !od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/Resolve")), "#11-6"); 57 Assert.IsNull (de.Binding, "#12"); 58 Assert.IsNull (de.Address, "#13"); 59 Assert.IsNull (de.ListenUri, "#14"); 60 } 61 62 // Adhoc mode gives *different* ServiceContract than Managed mode. 63 // Adhoc one is one-way based, while Managed one is bidirectional. 64 [Test] AdhocDefaultValues()65 public void AdhocDefaultValues () 66 { 67 var de = new DiscoveryEndpoint (DiscoveryVersion.WSDiscoveryCD1, ServiceDiscoveryMode.Adhoc); 68 Assert.AreEqual (DiscoveryVersion.WSDiscoveryCD1, de.DiscoveryVersion, "#1"); 69 Assert.AreEqual (ServiceDiscoveryMode.Adhoc, de.DiscoveryMode, "#2"); 70 Assert.AreEqual (TimeSpan.Zero, de.MaxResponseDelay, "#3"); 71 var cd = de.Contract; 72 Assert.IsNotNull (cd, "#11"); // some version-dependent internal type. 73 Assert.AreEqual ("http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09", cd.Namespace, "#11-2"); 74 Assert.AreEqual ("TargetService", cd.Name, "#11-3"); 75 Assert.AreEqual (5, cd.Operations.Count, "#11-4"); 76 Assert.IsTrue (cd.Operations.Any (od => od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09/Probe")), "#11-5"); 77 Assert.IsTrue (cd.Operations.Any (od => od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09/Resolve")), "#11-6"); 78 Assert.IsTrue (cd.Operations.Any (od => od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09/ProbeMatches")), "#11-7"); 79 Assert.IsTrue (cd.Operations.Any (od => od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09/ResolveMatches")), "#11-8"); 80 Assert.IsTrue (cd.Operations.Any (od => od.IsOneWay && od.Messages.Any (md => md.Action == "http://docs.oasis-open.org/ws-dd/ns/discovery/2008/09/Hello")), "#11-9"); 81 Assert.IsNull (de.Binding, "#12"); 82 Assert.IsNull (de.Address, "#13"); 83 Assert.IsNull (de.ListenUri, "#14"); 84 } 85 } 86 } 87