aboutsummaryrefslogtreecommitdiff
path: root/autotests/testgroupsession.cpp
blob: 02892366d0d735b8b7e8ef14d740eaa5f5ca623b (plain)
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
// SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
//
// SPDX-License-Identifier: LGPL-2.1-or-later

#ifdef Quotient_E2EE_ENABLED
#include "testgroupsession.h"
#include "olm/qolminboundsession.h"
#include "olm/qolmoutboundsession.h"
#include "olm/utils.h"

using namespace Quotient;

void TestOlmSession::groupSessionPicklingValid()
{
    auto ogs = std::get<QOlmOutboundGroupSession>(QOlmOutboundGroupSession::create());
    const auto ogsId = std::get<QByteArray>(ogs.sessionId());
    QVERIFY(QByteArray::fromBase64Encoding(ogsId).decodingStatus == QByteArray::Base64DecodingStatus::Ok);
    QCOMPARE(0, ogs.sessionMessageIndex());

    auto ogsPickled = std::get<QByteArray>(ogs.pickle(Unencrypted {}));
    ogs = std::get<QOlmOutboundGroupSession>(QOlmOutboundGroupSession::unpickle(ogsPickled, Unencrypted {}));
    QCOMPARE(ogsId, std::get<QByteArray>(ogs.sessionId()));

    qDebug() << std::get<QByteArray>(ogs.sessionKey());
    auto igs = std::get<QOlmInboundGroupSession>(QOlmInboundGroupSession::create(std::get<QByteArray>(ogs.sessionKey())));
    const auto igsId = std::get<QByteArray>(igs.sessionId());
    // ID is valid base64?
    QVERIFY(QByteArray::fromBase64Encoding(igsId).decodingStatus == QByteArray::Base64DecodingStatus::Ok);

    //// no messages have been sent yet
    QCOMPARE(0, igs.firstKnownIndex());

    auto igsPickled = std::get<QByteArray>(igs.pickle(Unencrypted {}));
    igs = std::get<QOlmInboundGroupSession>(QOlmInboundGroupSession::unpickle(igsPickled, Unencrypted {}));
    QCOMPARE(igsId, std::get<QByteArray>(igs.sessionId()));
}

QTEST_MAIN(TestOlmSession)
#endif