summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp')
-rw-r--r--Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp b/Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp
index 40e7233..4b2fb50 100644
--- a/Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp
+++ b/Swiften/FileTransfer/UnitTest/OutgoingJingleFileTransferTest.cpp
@@ -54,21 +54,33 @@ using namespace Swift;
54class OutgoingJingleFileTransferTest : public CppUnit::TestFixture { 54class OutgoingJingleFileTransferTest : public CppUnit::TestFixture {
55 CPPUNIT_TEST_SUITE(OutgoingJingleFileTransferTest); 55 CPPUNIT_TEST_SUITE(OutgoingJingleFileTransferTest);
56 CPPUNIT_TEST(test_SendSessionInitiateOnStart); 56 CPPUNIT_TEST(test_SendSessionInitiateOnStart);
57 CPPUNIT_TEST(test_FallbackToIBBAfterFailingS5B); 57 CPPUNIT_TEST(test_FallbackToIBBAfterFailingS5B);
58 CPPUNIT_TEST(test_ReceiveSessionTerminateAfterSessionInitiate); 58 CPPUNIT_TEST(test_ReceiveSessionTerminateAfterSessionInitiate);
59 CPPUNIT_TEST(test_DeclineEmitsFinishedStateCanceled);
59 CPPUNIT_TEST_SUITE_END(); 60 CPPUNIT_TEST_SUITE_END();
60 61
61 class FTStatusHelper { 62 class FTStatusHelper {
62 public: 63 public:
63 bool finishedCalled; 64 FTStatusHelper() : finishedCalled(false), error(FileTransferError::UnknownError) {
64 FileTransferError::Type error; 65 }
66
65 void handleFileTransferFinished(boost::optional<FileTransferError> error) { 67 void handleFileTransferFinished(boost::optional<FileTransferError> error) {
66 finishedCalled = true; 68 finishedCalled = true;
67 if (error.is_initialized()) this->error = error.get().getType(); 69 if (error.is_initialized()) this->error = error.get().getType();
68 } 70 }
71
72 void handleFileTransferStatusChanged(FileTransfer::State fileTransferSTate) {
73 state = fileTransferSTate;
74 }
75
76 public:
77 bool finishedCalled;
78 FileTransferError::Type error;
79 boost::optional<FileTransfer::State> state;
69 }; 80 };
81
70public: 82public:
71 83
72 boost::shared_ptr<OutgoingJingleFileTransfer> createTestling() { 84 boost::shared_ptr<OutgoingJingleFileTransfer> createTestling() {
73 JID to("test@foo.com/bla"); 85 JID to("test@foo.com/bla");
74 JingleFileTransferFileInfo fileInfo; 86 JingleFileTransferFileInfo fileInfo;
@@ -191,10 +203,26 @@ public:
191 fakeJingleSession->handleSessionTerminateReceived(JinglePayload::Reason(JinglePayload::Reason::Busy)); 203 fakeJingleSession->handleSessionTerminateReceived(JinglePayload::Reason(JinglePayload::Reason::Busy));
192 CPPUNIT_ASSERT_EQUAL(true, helper.finishedCalled); 204 CPPUNIT_ASSERT_EQUAL(true, helper.finishedCalled);
193 CPPUNIT_ASSERT(FileTransferError::PeerError == helper.error); 205 CPPUNIT_ASSERT(FileTransferError::PeerError == helper.error);
194 } 206 }
195 207
208 void test_DeclineEmitsFinishedStateCanceled() {
209 boost::shared_ptr<OutgoingJingleFileTransfer> transfer = createTestling();
210 transfer->start();
211
212 getCall<FakeJingleSession::InitiateCall>(0);
213
214 FTStatusHelper helper;
215 helper.finishedCalled = false;
216 transfer->onFinished.connect(bind(&FTStatusHelper::handleFileTransferFinished, &helper, _1));
217 transfer->onStateChanged.connect(bind(&FTStatusHelper::handleFileTransferStatusChanged, &helper, _1));
218 fakeJingleSession->handleSessionTerminateReceived(JinglePayload::Reason(JinglePayload::Reason::Decline));
219 CPPUNIT_ASSERT_EQUAL(true, helper.finishedCalled);
220 CPPUNIT_ASSERT(FileTransferError::UnknownError == helper.error);
221 CPPUNIT_ASSERT_EQUAL(true, helper.state.is_initialized());
222 CPPUNIT_ASSERT(FileTransfer::State::Canceled == helper.state.get().type);
223 }
196 224
197//TODO: some more testcases 225//TODO: some more testcases
198 226
199private: 227private:
200 void addFileTransferDescription() { 228 void addFileTransferDescription() {