1 //
2 // NetMsmqBindingTest.cs
3 //
4 // Author:
5 //	Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // Copyright (C) 2007 Novell, Inc.  http://www.novell.com
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 #if !MOBILE && !XAMMAC_4_5
29 using System;
30 using System.Collections.ObjectModel;
31 using System.Net.Security;
32 using System.ServiceModel;
33 using System.ServiceModel.Channels;
34 using System.ServiceModel.Security;
35 using NUnit.Framework;
36 
37 namespace MonoTests.System.ServiceModel
38 {
39 	[TestFixture]
40 	public class NetMsmqBindingTest
41 	{
42 		[Test]
DefaultValues()43 		public void DefaultValues ()
44 		{
45 			NetMsmqBinding b = new NetMsmqBinding ();
46 			Assert.AreEqual (EnvelopeVersion.Soap12, b.EnvelopeVersion, "#1");
47 			Assert.AreEqual (0x80000, b.MaxBufferPoolSize, "#2");
48 			Assert.AreEqual (QueueTransferProtocol.Native, b.QueueTransferProtocol, "#2");
49 			Assert.IsNotNull (b.ReaderQuotas, "#3");
50 			Assert.IsFalse (b.UseActiveDirectory, "#4");
51 
52 			Assert.IsNull (b.CustomDeadLetterQueue, "#5");
53 			Assert.AreEqual (DeadLetterQueue.System, b.DeadLetterQueue, "#6");
54 			Assert.IsTrue (b.Durable, "#7");
55 			Assert.IsTrue (b.ExactlyOnce, "#8");
56 			Assert.AreEqual (0x10000, b.MaxReceivedMessageSize, "#9");
57 			Assert.AreEqual (2, b.MaxRetryCycles, "#10");
58 			Assert.AreEqual (ReceiveErrorHandling.Fault, b.ReceiveErrorHandling, "#11");
59 			Assert.AreEqual (5, b.ReceiveRetryCount, "#12");
60 			// hmm, it is documented as 10 minutes but ...
61 			Assert.AreEqual (TimeSpan.FromMinutes (30), b.RetryCycleDelay, "#13");
62 			Assert.AreEqual ("net.msmq", b.Scheme, "#14");
63 			Assert.AreEqual (TimeSpan.FromDays (1), b.TimeToLive, "#15");
64 			Assert.IsFalse (b.UseMsmqTracing, "#16");
65 			Assert.IsFalse (b.UseSourceJournal, "#17");
66 		}
67 
68 /*
69 		[Test]
70 		[ExpectedException (typeof (InvalidOperationException))]
71 		public void DefaultValueSecurityModeMessageError ()
72 		{
73 			NetMsmqBinding b = new NetMsmqBinding (BasicHttpSecurityMode.Message);
74 			// "BasicHttp binding requires that NetMsmqBinding.Security.Message.ClientCredentialType be equivalent to the BasicHttpMessageCredentialType.Certificate credential type for secure messages. Select Transport or TransportWithMessageCredential security for UserName credentials."
75 			b.CreateBindingElements ();
76 		}
77 */
78 
79 		[Test]
CreateBindingElements()80 		public void CreateBindingElements ()
81 		{
82 			BindingElementCollection bl = new NetMsmqBinding ().CreateBindingElements ();
83 			Assert.AreEqual (2, bl.Count, "#1");
84 			Assert.IsTrue (bl [0] is BinaryMessageEncodingBindingElement, "#2");
85 			Assert.IsTrue (bl [1] is MsmqTransportBindingElement, "#3");
86 		}
87 
88 /*
89 		[Test]
90 		public void MessageEncoding ()
91 		{
92 			NetMsmqBinding b = new NetMsmqBinding ();
93 			foreach (BindingElement be in b.CreateBindingElements ()) {
94 				MessageEncodingBindingElement mbe =
95 					be as MessageEncodingBindingElement;
96 				if (mbe != null) {
97 					MessageEncoderFactory f = mbe.CreateMessageEncoderFactory ();
98 					MessageEncoder e = f.Encoder;
99 
100 					Assert.AreEqual (typeof (TextMessageEncodingBindingElement), mbe.GetType (), "#1-1");
101 					Assert.AreEqual (MessageVersion.Soap11, f.MessageVersion, "#2-1");
102 					Assert.AreEqual ("text/xml; charset=utf-8", e.ContentType, "#3-1");
103 					Assert.AreEqual ("text/xml", e.MediaType, "#3-2");
104 					return;
105 				}
106 			}
107 			Assert.Fail ("No message encodiing binding element.");
108 		}
109 */
110 	}
111 }
112 #endif