diff options
| author | Steven Shaw <steshaw@apache.org> | 2006-12-04 16:35:07 +0000 |
|---|---|---|
| committer | Steven Shaw <steshaw@apache.org> | 2006-12-04 16:35:07 +0000 |
| commit | 9bbc2fb73926209434894bdb6b8f74a02e1d5fd7 (patch) | |
| tree | 68c1b51d963aa8b4cd92dade264fee12aa367971 /dotnet/Qpid.Client.Tests | |
| parent | bfe3152312b1a6cd89fadd3f1c23e8bd37e1226d (diff) | |
| download | qpid-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')
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); + } + } + } +} |
