WebMessageEncodingBindingElementTest.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using System;
  2. using System.IO;
  3. using System.ServiceModel;
  4. using System.ServiceModel.Channels;
  5. using System.Text;
  6. using NUnit.Framework;
  7. namespace MonoTests.System.ServiceModel
  8. {
  9. [TestFixture]
  10. public class WebMessageEncodingBindingElementTest
  11. {
  12. [Test]
  13. [ExpectedException (typeof (ArgumentNullException))]
  14. public void Constructor ()
  15. {
  16. new WebMessageEncodingBindingElement (null);
  17. }
  18. [Test]
  19. public void DefaultPropertyValues ()
  20. {
  21. WebMessageEncodingBindingElement be = new WebMessageEncodingBindingElement ();
  22. Assert.AreEqual (Encoding.UTF8, be.WriteEncoding, "#1");
  23. }
  24. MessageEncoder CreateEncoder ()
  25. {
  26. WebMessageEncodingBindingElement m = new WebMessageEncodingBindingElement ();
  27. return m.CreateMessageEncoderFactory ().Encoder;
  28. }
  29. [Test]
  30. public void MessageEncoder ()
  31. {
  32. var e = CreateEncoder ();
  33. Assert.AreEqual ("application/xml", e.MediaType, "#1");
  34. Assert.AreEqual ("application/xml; charset=utf-8", e.ContentType, "#2");
  35. }
  36. [Test]
  37. [ExpectedException (typeof (ProtocolException))]
  38. public void MessageEncoderWriteMessageSoap12 ()
  39. {
  40. var e = CreateEncoder ();
  41. e.WriteMessage (Message.CreateMessage (MessageVersion.Soap12, "urn:foo"), Stream.Null);
  42. }
  43. [Test]
  44. public void MessageEncoderWriteMessageXml ()
  45. {
  46. var e = CreateEncoder ();
  47. MemoryStream ms = new MemoryStream ();
  48. // FIXME: nothing -> "" (right now it outputs <anyType xsi:nil='true' ... />)
  49. //e.WriteMessage (Message.CreateMessage (MessageVersion.None, "urn:foo"), ms);
  50. //Assert.AreEqual ("", Encoding.UTF8.GetString (ms.ToArray ()));
  51. e.WriteMessage (Message.CreateMessage (MessageVersion.None, "urn:foo", 135), ms);
  52. Assert.AreEqual ("<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">135</int>", Encoding.UTF8.GetString (ms.ToArray ()));
  53. }
  54. BindingContext CreateBindingContext ()
  55. {
  56. return new BindingContext (new CustomBinding (new HttpTransportBindingElement () { AllowCookies = true }), new BindingParameterCollection ());
  57. }
  58. BindingContext CreateBindingContext2 ()
  59. {
  60. return new BindingContext (new CustomBinding (new TcpTransportBindingElement ()), new BindingParameterCollection ());
  61. }
  62. [Test]
  63. public void CanBuildChannelFactory ()
  64. {
  65. // with HttpTransport
  66. var m = new WebMessageEncodingBindingElement ();
  67. Assert.IsTrue (m.CanBuildChannelFactory<IRequestChannel> (CreateBindingContext ()), "#1");
  68. Assert.IsFalse (m.CanBuildChannelFactory<IReplyChannel> (CreateBindingContext ()), "#2");
  69. Assert.IsFalse (m.CanBuildChannelFactory<IRequestSessionChannel> (CreateBindingContext ()), "#3");
  70. Assert.IsFalse (m.CanBuildChannelFactory<IDuplexChannel> (CreateBindingContext ()), "#4");
  71. // actually they are from transport
  72. var h = new HttpTransportBindingElement ();
  73. Assert.IsTrue (h.CanBuildChannelFactory<IRequestChannel> (CreateBindingContext ()), "#5");
  74. Assert.IsFalse (h.CanBuildChannelFactory<IReplyChannel> (CreateBindingContext ()), "#6");
  75. Assert.IsFalse (h.CanBuildChannelFactory<IRequestSessionChannel> (CreateBindingContext ()), "#7");
  76. Assert.IsFalse (h.CanBuildChannelFactory<IDuplexChannel> (CreateBindingContext ()), "#8");
  77. // with TcpTransport
  78. Assert.IsFalse (m.CanBuildChannelFactory<IRequestChannel> (CreateBindingContext2 ()), "#9");
  79. Assert.IsFalse (m.CanBuildChannelFactory<IReplyChannel> (CreateBindingContext2 ()), "#10");
  80. Assert.IsFalse (m.CanBuildChannelFactory<IRequestSessionChannel> (CreateBindingContext2 ()), "#11");
  81. Assert.IsFalse (m.CanBuildChannelFactory<IDuplexChannel> (CreateBindingContext2 ()), "#12");
  82. // ... yes, actually they are from transport
  83. var t = new TcpTransportBindingElement ();
  84. Assert.IsFalse (t.CanBuildChannelFactory<IRequestChannel> (CreateBindingContext2 ()), "#13");
  85. Assert.IsFalse (t.CanBuildChannelFactory<IReplyChannel> (CreateBindingContext2 ()), "#14");
  86. Assert.IsFalse (t.CanBuildChannelFactory<IRequestSessionChannel> (CreateBindingContext2 ()), "#15");
  87. Assert.IsFalse (t.CanBuildChannelFactory<IDuplexChannel> (CreateBindingContext2 ()), "#16");
  88. }
  89. [Test]
  90. public void CanBuildChannelListener ()
  91. {
  92. // with HttpTransport
  93. var m = new WebMessageEncodingBindingElement ();
  94. Assert.IsFalse (m.CanBuildChannelListener<IRequestChannel> (CreateBindingContext ()), "#1");
  95. Assert.IsTrue (m.CanBuildChannelListener<IReplyChannel> (CreateBindingContext ()), "#2");
  96. Assert.IsFalse (m.CanBuildChannelListener<IRequestSessionChannel> (CreateBindingContext ()), "#3");
  97. Assert.IsFalse (m.CanBuildChannelListener<IDuplexChannel> (CreateBindingContext ()), "#4");
  98. // actually they are from transport
  99. var h = new HttpTransportBindingElement ();
  100. Assert.IsFalse (h.CanBuildChannelListener<IRequestChannel> (CreateBindingContext ()), "#5");
  101. Assert.IsTrue (h.CanBuildChannelListener<IReplyChannel> (CreateBindingContext ()), "#6");
  102. Assert.IsFalse (h.CanBuildChannelListener<IRequestSessionChannel> (CreateBindingContext ()), "#7");
  103. Assert.IsFalse (h.CanBuildChannelListener<IDuplexChannel> (CreateBindingContext ()), "#8");
  104. // with TcpTransport
  105. Assert.IsFalse (m.CanBuildChannelListener<IRequestChannel> (CreateBindingContext2 ()), "#9");
  106. Assert.IsFalse (m.CanBuildChannelListener<IReplyChannel> (CreateBindingContext2 ()), "#10");
  107. Assert.IsFalse (m.CanBuildChannelListener<IRequestSessionChannel> (CreateBindingContext2 ()), "#11");
  108. Assert.IsFalse (m.CanBuildChannelListener<IDuplexChannel> (CreateBindingContext2 ()), "#12");
  109. // ... yes, actually they are from transport
  110. var t = new TcpTransportBindingElement ();
  111. Assert.IsFalse (t.CanBuildChannelListener<IRequestChannel> (CreateBindingContext2 ()), "#13");
  112. Assert.IsFalse (t.CanBuildChannelListener<IReplyChannel> (CreateBindingContext2 ()), "#14");
  113. Assert.IsFalse (t.CanBuildChannelListener<IRequestSessionChannel> (CreateBindingContext2 ()), "#15");
  114. Assert.IsFalse (t.CanBuildChannelListener<IDuplexChannel> (CreateBindingContext2 ()), "#16");
  115. }
  116. [Test]
  117. public void BuildChannelFactory ()
  118. {
  119. var m = new WebMessageEncodingBindingElement ();
  120. var f = m.BuildChannelFactory<IRequestChannel> (CreateBindingContext ());
  121. Assert.AreEqual (f.GetType (), new HttpTransportBindingElement ().BuildChannelFactory<IRequestChannel> (CreateBindingContext ()).GetType (), "#1");
  122. }
  123. }
  124. }