aboutsummaryrefslogtreecommitdiff
path: root/tests/qxmppexternalservicediscoverymanager/tst_qxmppexternalservicediscoverymanager.cpp
blob: 93931028b9650d755acf817371c9f4a28cc19d47 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// SPDX-FileCopyrightText: 2023 Tibor Csötönyi <work@taibsu.de>
//
// SPDX-License-Identifier: LGPL-2.1-or-later

#include "QXmppExternalServiceDiscoveryManager.h"

#include "TestClient.h"
#include "util.h"
#include <QObject>

const char *ns_external_service_discovery = "urn:xmpp:extdisco:2";

class tst_QXmppExternalServiceDiscoveryManager : public QObject
{
    Q_OBJECT

private:
    Q_SLOT void testRequestServices();
    Q_SLOT void testDiscoveryFeatures();
};

void tst_QXmppExternalServiceDiscoveryManager::testRequestServices()
{
    TestClient test;
    auto *extDiscoManager { test.addNewExtension<QXmppExternalServiceDiscoveryManager>() };

    auto future { extDiscoManager->requestServices("shakespeare.lit") };

    test.expect("<iq"
                " id='qxmpp1'"
                " to='shakespeare.lit'"
                " type='get'>"
                "<services xmlns='urn:xmpp:extdisco:2'/>"
                "</iq>");

    test.inject<QString>("<iq"
                         " id='qxmpp1'"
                         " from='shakespeare.lit'"
                         " type='result'>"
                         "<services xmlns='urn:xmpp:extdisco:2'>"
                         "<service host='stun.shakespeare.lit'"
                         " port='9998'"
                         " transport='udp'"
                         " type='stun'/>"
                         "<service host='relay.shakespeare.lit'"
                         " password='jj929jkj5sadjfj93v3n'"
                         " port='9999'"
                         " transport='udp'"
                         " type='turn'"
                         " username='nb78932lkjlskjfdb7g8'/>"
                         "<service host='192.0.2.1'"
                         " port='8888'"
                         " transport='udp'"
                         " type='stun'/>"
                         "<service host='192.0.2.1'"
                         " port='8889'"
                         " password='93jn3bakj9s832lrjbbz'"
                         " transport='udp'"
                         " type='turn'"
                         " username='auu98sjl2wk3e9fjdsl7'/>"
                         "<service host='ftp.shakespeare.lit'"
                         " name='Shakespearean File Server'"
                         " password='guest'"
                         " port='20'"
                         " transport='tcp'"
                         " type='ftp'"
                         " username='guest'/>"
                         "</services>"
                         "</iq>");

    const auto items { expectFutureVariant<QVector<QXmppExternalService>>(future.toFuture(this)) };

    QCOMPARE(items.size(), 5);
    QCOMPARE(items.at(0).host(), QStringLiteral("stun.shakespeare.lit"));
    QCOMPARE(items.at(4).host(), QStringLiteral("ftp.shakespeare.lit"));
}

void tst_QXmppExternalServiceDiscoveryManager::testDiscoveryFeatures()
{
    TestClient test;
    auto *m = test.addNewExtension<QXmppExternalServiceDiscoveryManager>();

    QCOMPARE(m->discoveryFeatures().contains(ns_external_service_discovery), true);
}

QTEST_MAIN(tst_QXmppExternalServiceDiscoveryManager)

#include "tst_qxmppexternalservicediscoverymanager.moc"