https://issues.apache.org/jira/browse/AMQNET-454
add patch: https://issues.apache.org/jira/secure/attachment/12638111/Apache.NMS.AMQP-23b-MSConnectionFactoryTest.cs.patch
diff --git a/src/test/csharp/NMSConnectionFactoryTest.cs b/src/test/csharp/NMSConnectionFactoryTest.cs
new file mode 100644
index 0000000..5f58f1d
--- /dev/null
+++ b/src/test/csharp/NMSConnectionFactoryTest.cs
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Net.Sockets;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.Amqp.Test
+{
+ [TestFixture]
+ public class NMSConnectionFactoryTest
+ {
+ // These tests assume that a broker is running on amqp port 5672.
+ [Test]
+ // These cases should be accepted
+ [TestCase("amqp:localhost")]
+ [TestCase("amqp:tcp:localhost")]
+ [TestCase("amqp:user/pass@localhost")]
+ [TestCase("amqp:user/pass@tcp:localhost")]
+ [TestCase("amqp:user/pass@localhost:5672")]
+ [TestCase("amqp:user/pass@tcp:localhost:5672")]
+ [TestCase("amqp:[::1]")]
+ [TestCase("amqp:tcp:[::1]")]
+ [TestCase("amqp:user/pass@[::1]")]
+ [TestCase("amqp:user/pass@tcp:[::1]")]
+ [TestCase("amqp:user/pass@tcp:[::1]:5672")]
+
+ // This case fails to connect to two hosts but then connects to the third
+ [TestCase("amqp:bogushost1,bogushost2:9988,localhost:5672")]
+
+ // This test case causes NUnit to assert but is OK for a host name
+ //[TestCase("amqp:tcp:host-._~%ff%23:42")]
+
+ // These test cases fail to parse the URI
+ // TODO: The SEHException is fixed in upstream qpid but not yet in vendor kit.
+ [TestCase("amqp:tcp:", ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
+ [TestCase("amqp:", ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
+ [TestCase("amqp::5672", ExpectedException = typeof(System.Runtime.InteropServices.SEHException))]
+
+ // These test cases pass parsing the URI but fail to connect
+ [TestCase("amqp:tcp:localhost:42", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:hostlocal:42", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:tcp", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:876", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:tcp:567", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:[::]", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:[::127.0.0.1]", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:[2002::222:68ff:fe0b:e61a]", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:[2002::222:68ff:fe0b:e61a]:123", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:user@tcp:badhost:123", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:user/pass@badhost", ExpectedException = typeof(ConnectionClosedException))]
+ [TestCase("amqp:user@badhost", ExpectedException = typeof(ConnectionClosedException))]
+
+ public void TestURI(string connectionURI)
+ {
+ //Apache.NMS.Tracer.Trace = new Apache.NMS.Amqp.Test.NmsConsoleTracer();
+ Tracer.Debug("Connecting to URI: " + connectionURI);
+ NMSConnectionFactory factory = new NMSConnectionFactory(connectionURI);
+ Assert.IsNotNull(factory);
+ Assert.IsNotNull(factory.ConnectionFactory);
+ using (IConnection connection = factory.CreateConnection("", ""))
+ {
+ Assert.IsNotNull(connection);
+
+ // The connection URI values are not used when a factory is created
+ // nor when a connection is created.
+ // They are used when the connection is started.
+ connection.Start();
+ }
+ }
+
+ }
+}