summaryrefslogtreecommitdiff
path: root/dotnet/Qpid.Client.Tests
diff options
context:
space:
mode:
authorSteven Shaw <steshaw@apache.org>2006-12-04 16:35:07 +0000
committerSteven Shaw <steshaw@apache.org>2006-12-04 16:35:07 +0000
commit9bbc2fb73926209434894bdb6b8f74a02e1d5fd7 (patch)
tree68c1b51d963aa8b4cd92dade264fee12aa367971 /dotnet/Qpid.Client.Tests
parentbfe3152312b1a6cd89fadd3f1c23e8bd37e1226d (diff)
downloadqpid-python-9bbc2fb73926209434894bdb6b8f74a02e1d5fd7.tar.gz
QPID-153 Initial port of URL parsing from Java client. Due to .NET Uri parser must support "host" name. Use "default" when you don't want to really supply one.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@482237 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'dotnet/Qpid.Client.Tests')
-rw-r--r--dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj1
-rw-r--r--dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs2
-rw-r--r--dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs2
-rw-r--r--dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs409
4 files changed, 412 insertions, 2 deletions
diff --git a/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj b/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj
index c3e957ae09..00c3d54a82 100644
--- a/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj
+++ b/dotnet/Qpid.Client.Tests/Qpid.Client.Tests.csproj
@@ -55,6 +55,7 @@
<Compile Include="requestreply1\ServiceProvidingClient.cs" />
<Compile Include="requestreply1\ServiceRequestingClient.cs" />
<Compile Include="undeliverable\UndeliverableTest.cs" />
+ <Compile Include="url\ConnectionUrlTest.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Qpid.Client.Transport.Socket.Blocking\Qpid.Client.Transport.Socket.Blocking.csproj">
diff --git a/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs b/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs
index d6d7639c21..5aa6773e53 100644
--- a/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs
+++ b/dotnet/Qpid.Client.Tests/connection/ConnectionTest.cs
@@ -43,7 +43,7 @@ namespace Qpid.Client.Tests.connection
public void passwordFailureConnection()
{
ConnectionInfo connectionInfo = new QpidConnectionInfo();
- connectionInfo.setPassword("rubbish");
+ connectionInfo.SetPassword("rubbish");
connectionInfo.AddBrokerInfo(new AmqBrokerInfo());
try
{
diff --git a/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs b/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs
index 4e95c12290..4538fca148 100644
--- a/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs
+++ b/dotnet/Qpid.Client.Tests/failover/FailoverTxTest.cs
@@ -103,7 +103,7 @@ namespace Qpid.Client.Tests.failover
_connection.ConnectionListener = this;
_log.Info("connection = " + _connection);
_log.Info("connectionInfo = " + connectionInfo);
- _log.Info("connection.asUrl = " + _connection.toURL());
+ _log.Info("connection.AsUrl = " + _connection.toURL());
_log.Info("AcknowledgeMode is " + _acknowledgeMode);
IChannel receivingChannel = _connection.CreateChannel(false, _acknowledgeMode);
diff --git a/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs b/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs
new file mode 100644
index 0000000000..5f06c38c78
--- /dev/null
+++ b/dotnet/Qpid.Client.Tests/url/ConnectionUrlTest.cs
@@ -0,0 +1,409 @@
+/*
+ *
+ * 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 System.Text.RegularExpressions;
+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);
+ }
+ }
+ }
+}