File: vapidtest.cpp

package info (click to toggle)
kunifiedpush 25.08.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,036 kB
  • sloc: cpp: 4,524; xml: 154; java: 141; makefile: 5; sh: 1
file content (52 lines) | stat: -rw-r--r-- 1,856 bytes parent folder | download
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
/*
    SPDX-FileCopyrightText: 2025 Volker Krause <vkrause@kde.org>
    SPDX-License-Identifier: LGPL-2.0-or-later
*/

#include "../src/notifier/vapid_p.h"

#include <QJsonDocument>
#include <QJsonObject>
#include <QTest>

using namespace Qt::Literals;
using namespace KUnifiedPush;

class VapidTest : public QObject
{
    Q_OBJECT
private Q_SLOTS:
    void testEncrypt()
    {
        Vapid vapid(
            QByteArray::fromBase64("BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4", QByteArray::Base64UrlEncoding),
            QByteArray::fromBase64("q1dXpw3UpT5VOmu_cf_v6ih07Aems3njxI-JWgLcM94", QByteArray::Base64UrlEncoding)
        );
        vapid.setContact(u"mailto:kunifiedpush-unit-test@kde.org"_s);
        const auto auth = vapid.authorization(QUrl(u"https://unifiedpush.kde.org/some/random/identifier"_s));
        QVERIFY(!auth.isEmpty());
        QVERIFY(auth.startsWith("vapid "));
        QVERIFY(auth.contains("t="));
        QVERIFY(auth.contains("k="));

        auto idx = auth.indexOf("t=");
        auto t = QByteArrayView(auth).mid(idx + 2);
        idx = t.indexOf(',');
        if (idx > 0) {
            t = t.left(idx);
        }
        QVERIFY(!t.isEmpty());
        const auto jwt = t.toByteArray().split('.');
        QCOMPARE(jwt.size(), 3);
        const auto header = QJsonDocument::fromJson(QByteArray::fromBase64(jwt[0], QByteArray::Base64UrlEncoding)).object();
        QCOMPARE(header.size(), 2);
        const auto body = QJsonDocument::fromJson(QByteArray::fromBase64(jwt[1], QByteArray::Base64UrlEncoding)).object();
        QCOMPARE(body["sub"_L1], "mailto:kunifiedpush-unit-test@kde.org"_L1);
        QCOMPARE(body["aud"_L1], "https://unifiedpush.kde.org"_L1);
        QVERIFY(body["exp"_L1].isDouble());
    }
};

QTEST_GUILESS_MAIN(VapidTest)

#include "vapidtest.moc"