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 };