blob: a76a628d3e5dd6245d1ce308a7f59bbef61f1d41 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// SPDX-FileCopyrightText: 2023 Linus Jahn <lnj@kaidan.im>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#include "QXmppEntityTimeIq.h"
#include "QXmppEntityTimeManager.h"
#include "TestClient.h"
Q_DECLARE_METATYPE(QXmppEntityTimeIq)
class tst_QXmppEntityTimeManager : public QObject
{
Q_OBJECT
Q_SLOT void initTestCase();
Q_SLOT void testSendRequest();
Q_SLOT void testHandleRequest();
};
void tst_QXmppEntityTimeManager::initTestCase()
{
qRegisterMetaType<QXmppEntityTimeIq>();
}
void tst_QXmppEntityTimeManager::testSendRequest()
{
TestClient test;
auto *manager = test.addNewExtension<QXmppEntityTimeManager>();
QSignalSpy spy(manager, &QXmppEntityTimeManager::timeReceived);
manager->requestTime("juliet@capulet.com/balcony");
test.expect("<iq id='qxmpp1' to='juliet@capulet.com/balcony' type='get'><time xmlns='urn:xmpp:time'/></iq>");
manager->handleStanza(xmlToDom(R"(<iq id='qxmpp1' to='romeo@montague.net/orchard' from='juliet@capulet.com/balcony' type='result'>
<time xmlns='urn:xmpp:time'>
<tzo>-06:00</tzo>
<utc>2006-12-19T17:58:35Z</utc>
</time>
</iq>)"));
QCOMPARE(spy.size(), 1);
auto time = spy.at(0).at(0).value<QXmppEntityTimeIq>();
QCOMPARE(time.utc(), QDateTime({2006, 12, 19}, {17, 58, 35}, Qt::UTC));
QCOMPARE(time.tzo(), -6 * 60 * 60);
}
void tst_QXmppEntityTimeManager::testHandleRequest()
{
TestClient test;
test.configuration().setJid("juliet@capulet.com/balcony");
auto *manager = test.addNewExtension<QXmppEntityTimeManager>();
manager->handleStanza(xmlToDom(R"(<iq type='get' from='romeo@montague.net/orchard' to='juliet@capulet.com/balcony' id='time_1'>
<time xmlns='urn:xmpp:time'/>
</iq>)"));
auto packet = xmlToDom(test.takePacket());
QVERIFY(QXmppEntityTimeIq::isEntityTimeIq(packet));
QXmppEntityTimeIq resp;
resp.parse(packet);
QCOMPARE(resp.id(), QStringLiteral("time_1"));
QCOMPARE(resp.type(), QXmppIq::Result);
}
QTEST_MAIN(tst_QXmppEntityTimeManager)
#include "tst_qxmppentitytimemanager.moc"
|