File indexing completed on 2024-05-12 05:10:39

0001 /*
0002     SPDX-FileCopyrightText: 2013 Sérgio Martins <iamsergio@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "incidencechanger.h"
0010 #include "itiphandler.h"
0011 #include "unittestbase.h"
0012 
0013 #include <Akonadi/Collection>
0014 #include <Akonadi/Item>
0015 
0016 class ITIPHandlerTest : public UnitTestBase
0017 {
0018     Q_OBJECT
0019 
0020 private Q_SLOTS:
0021     void initTestCase();
0022 
0023     void testProcessITIPMessages_data();
0024     void testProcessITIPMessages();
0025 
0026     // Deprecated methods, use testProcessITIPMessages() for new stuff
0027     void testProcessITIPMessage_data();
0028     void testProcessITIPMessage();
0029 
0030     // Deprecated methods do test CANCEL.
0031     void testProcessITIPMessageCancel_data();
0032     void testProcessITIPMessageCancel();
0033 
0034     // These ones don't have to do with kmail. It's when doing a modification, itip REQUESTs are sent.
0035     // Also tests cases where we're not the organizer.
0036     void testOutgoingInvitations_data();
0037     void testOutgoingInvitations();
0038 
0039     // Tests identity related code, like "thisIsMe()".
0040     void testIdentity_data();
0041     void testIdentity();
0042 
0043 private:
0044     void waitForSignals();
0045     void cleanup();
0046     void createITIPHandler();
0047     QString icalData(const QString &filename);
0048     void processItip(const QString &icaldata, const QString &receiver, const QString &action, int expectedNumIncidences, Akonadi::Item::List &items);
0049     KCalendarCore::Attendee ourAttendee(const KCalendarCore::Incidence::Ptr &incidence) const;
0050 
0051 public Q_SLOTS:
0052     void oniTipMessageProcessed(Akonadi::ITIPHandler::Result result, const QString &errorMessage);
0053 
0054     void onCreateFinished(int changeId, const Akonadi::Item &item, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorString);
0055 
0056     void
0057     onDeleteFinished(int changeId, const QList<Akonadi::Item::Id> &deletedIds, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorMessage);
0058 
0059     void onModifyFinished(int changeId, const Akonadi::Item &item, Akonadi::IncidenceChanger::ResultCode resultCode, const QString &errorString);
0060 
0061 private:
0062     int m_pendingItipMessageSignal;
0063     int m_pendingIncidenceChangerSignal;
0064     Akonadi::Item mLastInsertedItem;
0065     Akonadi::ITIPHandler::Result m_expectedResult;
0066     Akonadi::ITIPHandler *m_itipHandler = nullptr;
0067     Akonadi::IncidenceChanger *m_changer = nullptr;
0068     bool m_cancelExpected = false;
0069 };