Changeset View
Changeset View
Standalone View
Standalone View
resources/imap/autotests/testsessionpool.cpp
Show First 20 Lines • Show All 739 Lines • ▼ Show 20 Line(s) | 660 | { | |||
---|---|---|---|---|---|
740 | QCOMPARE(sessionSpy.count(), 2); | 740 | QCOMPARE(sessionSpy.count(), 2); | ||
741 | QCOMPARE(sessionSpy.at(1).at(2).toInt(), (int)SessionPool::LoginFailError); | 741 | QCOMPARE(sessionSpy.at(1).at(2).toInt(), (int)SessionPool::LoginFailError); | ||
742 | 742 | | |||
743 | QVERIFY(server.isAllScenarioDone()); | 743 | QVERIFY(server.isAllScenarioDone()); | ||
744 | 744 | | |||
745 | server.quit(); | 745 | server.quit(); | ||
746 | } | 746 | } | ||
747 | 747 | | |||
748 | void shouldHandleDisconnectionDuringSecondLogin() | ||||
749 | { | ||||
750 | FakeServer server; | ||||
751 | server.addScenario(QList<QByteArray>() | ||||
752 | << FakeServer::greeting() | ||||
753 | << "C: A000001 LOGIN \"test@kdab.com\" \"foobar\"" | ||||
754 | << "S: A000001 OK User Logged in" | ||||
755 | << "C: A000002 CAPABILITY" | ||||
756 | << "S: * CAPABILITY IMAP4 IMAP4rev1 IDLE" | ||||
757 | << "S: A000002 OK Completed" | ||||
758 | ); | ||||
759 | | ||||
760 | server.addScenario(QList<QByteArray>() | ||||
761 | << FakeServer::greeting() | ||||
762 | << "C: A000001 LOGIN \"test@kdab.com\" \"foobar\"" | ||||
763 | << "X" | ||||
764 | ); | ||||
765 | | ||||
766 | server.startAndWait(); | ||||
767 | | ||||
768 | ImapAccount *account = createDefaultAccount(); | ||||
769 | DummyPasswordRequester *requester = createDefaultRequester(); | ||||
770 | | ||||
771 | SessionPool pool(2); | ||||
772 | pool.setPasswordRequester(requester); | ||||
773 | | ||||
774 | QSignalSpy sessionSpy(&pool, SIGNAL(sessionRequestDone(qint64,KIMAP::Session *,int,QString))); | ||||
775 | QVERIFY(pool.connect(account)); | ||||
776 | | ||||
777 | // We should be connected now | ||||
778 | QTRY_VERIFY(pool.isConnected()); | ||||
779 | | ||||
780 | // Ask for a session | ||||
781 | pool.requestSession(); | ||||
782 | QTRY_COMPARE(sessionSpy.count(), 1); | ||||
783 | QVERIFY(sessionSpy.at(0).at(1).value<KIMAP::Session *>() != nullptr); | ||||
784 | | ||||
785 | // Prepare for session disconnects | ||||
786 | QSignalSpy lostSpy(&pool, SIGNAL(connectionLost(KIMAP::Session *))); | ||||
787 | | ||||
788 | // Ask for a second session, where we'll lose the connection during the Login job. | ||||
789 | pool.requestSession(); | ||||
790 | QTest::qWait(100); | ||||
791 | QCOMPARE(sessionSpy.count(), 2); | ||||
792 | QVERIFY(sessionSpy.at(1).at(1).value<KIMAP::Session *>() == nullptr); | ||||
793 | QCOMPARE(lostSpy.count(), 1); | ||||
794 | | ||||
795 | // The pool itself is still connected | ||||
796 | QVERIFY(pool.isConnected()); | ||||
797 | | ||||
798 | QVERIFY(server.isAllScenarioDone()); | ||||
799 | | ||||
800 | server.quit(); | ||||
801 | } | ||||
802 | | ||||
748 | void shouldNotifyFailureToConnect() | 803 | void shouldNotifyFailureToConnect() | ||
749 | { | 804 | { | ||
750 | // This tests what happens when we can't connect to the server, e.g. due to being offline. | 805 | // This tests what happens when we can't connect to the server, e.g. due to being offline. | ||
751 | // In this test we just use 0.0.0.0 as an invalid server IP, instead. | 806 | // In this test we just use 0.0.0.0 as an invalid server IP, instead. | ||
752 | ImapAccount *account = createDefaultAccount(); | 807 | ImapAccount *account = createDefaultAccount(); | ||
753 | account->setServer(QStringLiteral("0.0.0.0")); // so that the connexion fails | 808 | account->setServer(QStringLiteral("0.0.0.0")); // so that the connexion fails | ||
754 | DummyPasswordRequester *requester = createDefaultRequester(); | 809 | DummyPasswordRequester *requester = createDefaultRequester(); | ||
755 | QList<DummyPasswordRequester::RequestType> requests; | 810 | QList<DummyPasswordRequester::RequestType> requests; | ||
Show All 24 Lines |