summaryrefslogtreecommitdiff
path: root/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs')
-rw-r--r--dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs408
1 files changed, 408 insertions, 0 deletions
diff --git a/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs b/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs
new file mode 100644
index 0000000000..dccfffd780
--- /dev/null
+++ b/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs
@@ -0,0 +1,408 @@
+/*
+ *
+ * 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;
+using NUnit.Framework;
+using Qpid.Client.qms;
+
+namespace Qpid.Client.Tests.url
+{
+ [TestFixture]
+ public class connectionUrlTests
+ {
+ [Test]
+ public void FailoverURL()
+ {
+ //String url = "amqp://ritchiem:bob@/temp?brokerlist='tcp://localhost:5672;tcp://fancyserver:3000/',failover='roundrobin'";
+ String url = "amqp://ritchiem:bob@default/temp?brokerlist='tcp://localhost:5672;tcp://fancyserver:3000/',failover='roundrobin'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.AreEqual("roundrobin", connectionurl.GetFailoverMethod());
+ Assert.IsTrue(connectionurl.GetUsername().Equals("ritchiem"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("bob"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 2);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+
+ service = connectionurl.GetBrokerInfo(1);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("fancyserver"));
+ Assert.IsTrue(service.getPort() == 3000);
+
+ }
+
+ [Test]
+ public void SingleTransportUsernamePasswordURL()
+ {
+ String url = "amqp://ritchiem:bob@default/temp?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("ritchiem"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("bob"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ }
+
+ [Test]
+ public void SingleTransportUsernameBlankPasswordURL()
+ {
+ String url = "amqp://ritchiem:@default/temp?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("ritchiem"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals(""));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ }
+
+ [Test]
+ public void FailedURLNullPassword()
+ {
+ String url = "amqp://ritchiem@default/temp?brokerlist='tcp://localhost:5672'";
+
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ Assert.Fail("URL has null password");
+ }
+ catch (UrlSyntaxException e)
+ {
+ Assert.AreEqual("Null password in user information not allowed.", e.Message);
+ Assert.IsTrue(e.GetIndex() == 7);
+ }
+ }
+
+ [Test]
+ public void SingleTransportURL()
+ {
+ String url = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/test"));
+
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ }
+
+ [Test]
+ public void SingleTransportWithClientURLURL()
+ {
+ String url = "amqp://guest:guest@clientname/temp?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+ Assert.IsTrue(connectionurl.GetClientName().Equals("clientname"));
+
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ }
+
+ [Test]
+ public void SingleTransport1OptionURL()
+ {
+ String url = "amqp://guest:guest@default/temp?brokerlist='tcp://localhost:5672',routingkey='jim'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ Assert.IsTrue(connectionurl.GetOption("routingkey").Equals("jim"));
+ }
+
+ [Test]
+ public void SingleTransportDefaultedBroker()
+ {
+ String url = "amqp://guest:guest@default/temp?brokerlist='localhost:'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+ }
+
+ [Test]
+ public void SingleTransportMultiOptionURL()
+ {
+ String url = "amqp://guest:guest@default/temp?brokerlist='tcp://localhost:5672',routingkey='jim',timeout='200',immediatedelivery='true'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("tcp"));
+
+ Assert.IsTrue(service.getHost().Equals("localhost"));
+ Assert.IsTrue(service.getPort() == 5672);
+
+ Assert.IsTrue(connectionurl.GetOption("routingkey").Equals("jim"));
+ Assert.IsTrue(connectionurl.GetOption("timeout").Equals("200"));
+ Assert.IsTrue(connectionurl.GetOption("immediatedelivery").Equals("true"));
+ }
+
+ [Test]
+ public void SinglevmURL()
+ {
+ String url = "amqp://guest:guest@default/messages?brokerlist='vm://default:2'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod() == null);
+ Assert.IsTrue(connectionurl.GetUsername().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("guest"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/messages"));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("vm"));
+ Assert.AreEqual("localhost", service.getHost());
+ Assert.AreEqual(2, service.getPort());
+ }
+
+ [Test]
+ public void FailoverVMURL()
+ {
+ String url = "amqp://ritchiem:bob@default/temp?brokerlist='vm://default:2;vm://default:3',failover='roundrobin'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetFailoverMethod().Equals("roundrobin"));
+ Assert.IsTrue(connectionurl.GetUsername().Equals("ritchiem"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals("bob"));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/temp"));
+
+ Assert.AreEqual(2, connectionurl.GetBrokerCount());
+
+ BrokerInfo service = connectionurl.GetBrokerInfo(0);
+
+ Assert.IsTrue(service.getTransport().Equals("vm"));
+ Assert.AreEqual("localhost", service.getHost());
+ Assert.IsTrue(service.getPort() == 2);
+
+ service = connectionurl.GetBrokerInfo(1);
+ Assert.IsTrue(service.getTransport().Equals("vm"));
+ Assert.AreEqual("localhost", service.getHost());
+ Assert.IsTrue(service.getPort() == 3);
+ }
+
+ [Test]
+ public void NoVirtualHostURL()
+ {
+ String url = "amqp://user@default?brokerlist='tcp://localhost:5672'";
+
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ Assert.Fail("URL has no virtual host should not parse");
+ }
+ catch (UrlSyntaxException e)
+ {
+ // This should occur.
+ }
+ }
+
+ [Test]
+ public void NoClientID()
+ {
+ String url = "amqp://user:@default/test?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connectionurl = QpidConnectionInfo.FromUrl(url);
+
+ Assert.IsTrue(connectionurl.GetUsername().Equals("user"));
+ Assert.IsTrue(connectionurl.GetPassword().Equals(""));
+ Assert.IsTrue(connectionurl.GetVirtualHost().Equals("/test"));
+ Assert.IsTrue(connectionurl.GetClientName().StartsWith(Dns.GetHostName()));
+
+ Assert.IsTrue(connectionurl.GetBrokerCount() == 1);
+ }
+
+ [Test]
+ public void WrongOptionSeparatorInOptions()
+ {
+ String url = "amqp://guest:guest@default/test?brokerlist='tcp://localhost:5672;tcp://localhost:5673'+failover='roundrobin'";
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ Assert.Fail("URL Should not parse");
+ }
+ catch (UrlSyntaxException urise)
+ {
+ Assert.IsTrue(urise.Message.Equals("Unterminated option. Possible illegal option separator:'+'"));
+ }
+
+ }
+
+ [Test]
+ public void NoUserDetailsProvidedWithClientID()
+
+ {
+ String url = "amqp://clientID/test?brokerlist='tcp://localhost:5672;tcp://localhost:5673'";
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ Assert.Fail("URL Should not parse");
+ }
+ catch (UrlSyntaxException urise)
+ {
+ Assert.IsTrue(urise.Message.StartsWith("User information not found on url"));
+ }
+
+ }
+
+ [Test]
+ public void NoUserDetailsProvidedNOClientID()
+
+ {
+ String url = "amqp:///test@default?brokerlist='tcp://localhost:5672;tcp://localhost:5673'";
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ Assert.Fail("URL Should not parse");
+ }
+ catch (UrlSyntaxException urise)
+ {
+
+ Assert.IsTrue(urise.Message.StartsWith("User information not found on url"));
+ }
+
+ }
+
+ [Test]
+ public void CheckVirtualHostFormat()
+ {
+ String url = "amqp://guest:guest@default/t.-_+!=:?brokerlist='tcp://localhost:5672'";
+
+ ConnectionInfo connection = QpidConnectionInfo.FromUrl(url);
+ Assert.IsTrue(connection.GetVirtualHost().Equals("/t.-_+!=:"));
+ }
+
+ [Test]
+ public void CheckDefaultPort()
+ {
+ String url = "amqp://guest:guest@default/test=:?brokerlist='tcp://localhost'";
+
+ ConnectionInfo connection = QpidConnectionInfo.FromUrl(url);
+
+ BrokerInfo broker = connection.GetBrokerInfo(0);
+ Assert.IsTrue(broker.getPort() == BrokerInfoConstants.DEFAULT_PORT);
+
+ }
+
+ [Test]
+ public void CheckMissingFinalQuote()
+ {
+ String url = "amqp://guest:guest@id/test" + "?brokerlist='tcp://localhost:5672";
+
+ try
+ {
+ QpidConnectionInfo.FromUrl(url);
+ }
+ catch (UrlSyntaxException e)
+ {
+// Assert.AreEqual("Unterminated option at index 32: brokerlist='tcp://localhost:5672",
+// e.Message);
+ Assert.AreEqual("Unterminated option", e.Message);
+ }
+ }
+ }
+}