added test for invalid routing keys

also added a debug message for attempts to write shortstr's greater
than acceptable length.
This commit is contained in:
Matt Broadstone 2014-06-30 18:42:39 -04:00
parent a89dbb3805
commit dec9ef72d3
2 changed files with 16 additions and 1 deletions

View File

@ -6,6 +6,8 @@
#include <QList>
#include <QDebug>
#include "amqp_global.h"
using namespace QAMQP;
using namespace QAMQP::Frame;
@ -342,7 +344,6 @@ void Frame::print(const TableField &f)
void Frame::writeField(qint8 valueType, QDataStream &s, const QVariant &value, bool withType)
{
QByteArray tmp;
if (withType)
s << valueType;
@ -390,6 +391,10 @@ void Frame::writeField(qint8 valueType, QDataStream &s, const QVariant &value, b
case 's':
{
QString str = value.toString();
if (str.length() >= 256) {
qAmqpDebug() << Q_FUNC_INFO << "invalid shortstr length: " << str.length();
}
s << quint8(str.length());
s.writeRawData(str.toLatin1().data(), str.length());
}

View File

@ -40,6 +40,7 @@ private Q_SLOTS:
void defineQos();
void invalidQos();
void qos();
void invalidRoutingKey();
private:
void declareQueueAndVerifyConsuming(Queue *queue);
@ -468,5 +469,14 @@ void tst_QAMQPQueue::qos()
QCOMPARE(messageReceivedCount, messageCount);
}
void tst_QAMQPQueue::invalidRoutingKey()
{
QString routingKey = QString("%1").arg('1', 256, QLatin1Char('0'));
Queue *queue = client->createQueue(routingKey);
queue->declare();
QVERIFY(waitForSignal(client.data(), SIGNAL(error(QAMQP::Error))));
QCOMPARE(client->error(), QAMQP::FrameError);
}
QTEST_MAIN(tst_QAMQPQueue)
#include "tst_qamqpqueue.moc"