df94925757ab1dcf206181e408e6d85e5d997ba5
[qtmeetings] / tests / IO / Communication / TestCommunication.cpp
1 #include <QtTest/QtTest>
2 #include "Configuration.h"
3 #include "ConnectionSettings.h"
4 #include "TestCommunication.h"
5 #include "Communication.h"
6 #include "MessagingUtils.h"
7 #include <QString>
8 #include <QSignalSpy>
9
10 static const QString server = "192.168.0.35";
11 static const QString user   = "maemo";
12 static const QString pass   = "P@ssw0rd";
13 static const unsigned int refresh = 1;
14
15 void TestCommunication::initTestCase()
16 {
17     ConnectionSettings *conn = new ConnectionSettings( server, user, pass, refresh );
18     QVERIFY( conn != 0 );
19         iComm = new Communication( *conn );
20         QVERIFY( iComm != 0 );
21     delete conn;
22     conn = NULL;
23         connect( iComm,
24                          SIGNAL( requestFinished( int, QHttp::Error ) ),
25                          this,
26                          SLOT( requestFinished( int, QHttp::Error ) )
27                         );
28 }
29
30 void TestCommunication::cleanupTestCase()
31 {
32         delete iComm;
33 }
34
35 void TestCommunication::init() { }
36
37 void TestCommunication::cleanup() { }
38
39 void TestCommunication::testPublicSignals()
40 {
41         QSignalSpy rp( iComm, SIGNAL(readProgress( int, int, int )) );
42         QCOMPARE( rp.isValid(), true );
43         QSignalSpy rs( iComm, SIGNAL(requestStarted( int )) );
44         QCOMPARE( rs.isValid(), true );
45         qRegisterMetaType<QHttp::Error>("QHttp::Error");
46         QSignalSpy rf( iComm, SIGNAL(requestFinished( int, QHttp::Error )) );
47         QCOMPARE( rf.isValid(), true );
48         
49         iRequestId = iComm->request( "", QString("").toAscii() );
50         for(int i=0; iRequestId != 0 && i < 5000/250; i++ )
51                 QTest::qWait( 250 );
52         
53         //verify requestStarted
54         QCOMPARE( rs.count(),  1 );
55         QList<QVariant> args = rs.takeFirst();
56         QCOMPARE( args.at(0).type(), QVariant::Int );
57         
58         //verify requestFinished
59         QCOMPARE( rf.count(), 1 );
60         args = rf.takeFirst();
61         QCOMPARE( args.at(0).type(), QVariant::Int );
62         QCOMPARE( args.at(1).typeName(), "QHttp::Error" );
63         
64         //verify readProgress
65         QCOMPARE( rp.count(), 1 );
66         args = rp.takeFirst();
67         QCOMPARE( args.at(0).type(), QVariant::Int );
68         QCOMPARE( args.at(1).type(), QVariant::Int );
69         QCOMPARE( args.at(2).type(), QVariant::Int );
70 }
71
72 void TestCommunication::testRequestAndResponse()
73 {
74         const QString command = "text/xml; charset=utf-8; action=\"http://schemas.microsoft.com/exchange/services/2006/messages/GetUserAvailability\"";
75     QFile file("input.xml");
76     if(!file.open(QIODevice::ReadOnly))
77     {
78         QFAIL( "Error opening input.xml" );
79     }
80     QByteArray content = file.readAll();
81
82         iRequestId = iComm->request( command, content );
83         int id_fail = iComm->request( "", QString("").toAscii() );
84         QVERIFY( iRequestId != 0 );
85         QCOMPARE( id_fail, 0 );
86         for(int i=0; iRequestId != 0 && i < 5000/250; i++ )
87                 QTest::qWait( 250 );
88         const QByteArray& response = iComm->response( 0 );
89         QVERIFY( response.contains("GetUserAvailabilityResponse") );
90         iRequestId = iComm->request( "", QString("").toAscii() );
91         QVERIFY( iRequestId != 0 );
92         QVERIFY( response.isEmpty() );
93 }
94
95 void TestCommunication::requestFinished( int aRequestId, QHttp::Error /*aError*/ )
96 {
97         QCOMPARE( aRequestId, iRequestId );
98         iRequestId = 0;
99 }
100