File indexing completed on 2024-04-14 14:55:15
0001 /** =========================================================== 0002 * @file 0003 * 0004 * This file is a part of KDE project 0005 * <a href="https://commits.kde.org/libmediawiki">libmediawiki</a> 0006 * 0007 * @date 2011-03-22 0008 * @brief a MediaWiki C++ interface for KDE 0009 * 0010 * @author Copyright (C) 2011 by Manuel Campomanes 0011 * <a href="mailto:campomanes dot manuel at gmail dot com">campomanes dot manuel at gmail dot com</a> 0012 * @author Copyright (C) 2010 by Hormiere Guillaume 0013 * <a href="mailto:hormiere dot guillaume at gmail dot com">hormiere dot guillaume at gmail dot com</a> 0014 * 0015 * This program is free software; you can redistribute it 0016 * and/or modify it under the terms of the GNU General 0017 * Public License as published by the Free Software Foundation; 0018 * either version 2, or (at your option) 0019 * any later version. 0020 * 0021 * This program is distributed in the hope that it will be useful, 0022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0024 * GNU General Public License for more details. 0025 * 0026 * ============================================================ */ 0027 0028 #ifndef TEST_GENERAL_H 0029 #define TEST_GENERAL_H 0030 0031 #include <QObject> 0032 #include <QtTest> 0033 0034 #include <KJob> 0035 0036 #include "libmediawikitest/fakeserver.h" 0037 0038 #include "mediawiki.h" 0039 #include "querysiteinfogeneral.h" 0040 #include "generalinfo.h" 0041 0042 using mediawiki::MediaWiki; 0043 using mediawiki::QuerySiteInfoGeneral; 0044 using mediawiki::Generalinfo; 0045 0046 class QuerySiteInfoGeneralTest : public QObject 0047 { 0048 Q_OBJECT 0049 0050 public Q_SLOTS: 0051 0052 void resultHandle(const Generalinfo& generalinfo) 0053 { 0054 ++generalCount; 0055 generalResult = generalinfo; 0056 } 0057 0058 private Q_SLOTS: 0059 0060 void initTestCase() 0061 { 0062 generalCount = 0; 0063 this->request = QStringLiteral("/?format=xml&action=query&meta=siteinfo&siprop=general"); 0064 } 0065 void QuerySiteInfoGeneralTestConnectTrue() 0066 { 0067 MediaWiki mediaWiki(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0068 FakeServer server; 0069 0070 generalCount = 0; 0071 QString senario(QStringLiteral("<api><query><general mainpage=\"Main Page\" base=\"http://en.wikipedia.org/wiki/Main_Page\" sitename=\"Wikipedia\" generator=\"MediaWiki 1.16wmf4\" phpversion=\"5.2.4-2ubuntu5.12wm1\" phpsapi=\"apache2handler\" dbtype=\"mysql\" dbversion=\"5.1.46-facebook-r3489-log\" rev=\"75268\" case=\"first-letter\" rights=\"Creative Commons Attribution-Share Alike 3.0 Unported\" lang=\"en\" fallback8bitEncoding=\"windows-1252\" writeapi=\"\" timezone=\"UTC\" timeoffset=\"0\" articlepath=\"/wiki/$1\" scriptpath=\"/w\" script=\"/w/index.php\" variantarticlepath=\"\" server=\"http://en.wikipedia.org\" wikiid=\"enwiki\" time=\"2010-10-24T19:53:13Z\"/></query></api>")); 0072 server.addScenario(senario); 0073 server.startAndWait(); 0074 0075 QuerySiteInfoGeneral* const general = new QuerySiteInfoGeneral(mediaWiki); 0076 0077 connect(general, SIGNAL(result(Generalinfo)), 0078 this, SLOT(resultHandle(Generalinfo))); 0079 0080 general->exec(); 0081 FakeServer::Request serverrequest = server.getRequest()[0]; 0082 QCOMPARE(this->generalCount, 1); 0083 QCOMPARE(serverrequest.type, QStringLiteral("GET")); 0084 QCOMPARE(serverrequest.value, this->request); 0085 QVERIFY(general->error() == QuerySiteInfoGeneral::NoError); 0086 } 0087 0088 void QuerySiteInfoGeneralTestAttribute() 0089 { 0090 MediaWiki mediaWiki(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0091 FakeServer server; 0092 0093 generalCount = 0; 0094 QString senario(QStringLiteral("<api><query><general mainpage=\"Main Page\" base=\"http://en.wikipedia.org/wiki/Main_Page\" sitename=\"Wikipedia\" generator=\"MediaWiki 1.16wmf4\" phpversion=\"5.2.4-2ubuntu5.12wm1\" phpsapi=\"apache2handler\" dbtype=\"mysql\" dbversion=\"5.1.46-facebook-r3489-log\" rev=\"75268\" case=\"first-letter\" rights=\"Creative Commons Attribution-Share Alike 3.0 Unported\" lang=\"en\" fallback8bitEncoding=\"windows-1252\" writeapi=\"\" timezone=\"UTC\" timeoffset=\"0\" articlepath=\"/wiki/$1\" scriptpath=\"/w\" script=\"/w/index.php\" variantarticlepath=\"\" server=\"http://en.wikipedia.org\" wikiid=\"enwiki\" time=\"2010-10-24T19:53:13Z\"/></query></api>")); 0095 server.addScenario(senario); 0096 server.startAndWait(); 0097 0098 QuerySiteInfoGeneral* const general = new QuerySiteInfoGeneral(mediaWiki); 0099 0100 connect(general, SIGNAL(result(Generalinfo)), 0101 this, SLOT(resultHandle(Generalinfo))); 0102 0103 general->exec(); 0104 FakeServer::Request serverrequest = server.getRequest()[0]; 0105 QCOMPARE(this->generalCount, 1); 0106 QCOMPARE(serverrequest.type, QStringLiteral("GET")); 0107 QCOMPARE(serverrequest.value, this->request); 0108 QVERIFY(general->error() == QuerySiteInfoGeneral::NoError); 0109 Generalinfo resultExpected; 0110 resultExpected.setMainPage(QStringLiteral("Main Page")); 0111 resultExpected.setUrl(QUrl(QStringLiteral("http://en.wikipedia.org/wiki/Main_Page"))); 0112 resultExpected.setSiteName(QStringLiteral("Wikipedia")); 0113 resultExpected.setGenerator(QStringLiteral("MediaWiki 1.16wmf4")); 0114 resultExpected.setPhpVersion(QStringLiteral("5.2.4-2ubuntu5.12wm1")); 0115 resultExpected.setPhpApi(QStringLiteral("apache2handler")); 0116 resultExpected.setDataBaseType(QStringLiteral("mysql")); 0117 resultExpected.setDataBaseVersion(QStringLiteral("5.1.46-facebook-r3489-log")); 0118 resultExpected.setRev(QStringLiteral("75268")); 0119 resultExpected.setCas(QStringLiteral("first-letter")); 0120 resultExpected.setLicence(QStringLiteral("Creative Commons Attribution-Share Alike 3.0 Unported")); 0121 resultExpected.setLanguage(QStringLiteral("en")); 0122 resultExpected.setFallBack8bitEncoding(QStringLiteral("windows-1252")); 0123 resultExpected.setWriteApi(QStringLiteral("")); 0124 resultExpected.setTimeZone(QStringLiteral("UTC")); 0125 resultExpected.setTimeOffset(QStringLiteral("0")); 0126 resultExpected.setArticlePath(QStringLiteral("/wiki/$1")); 0127 resultExpected.setScriptPath(QStringLiteral("/w")); 0128 resultExpected.setScript(QStringLiteral("/w/index.php")); 0129 resultExpected.setVariantArticlePath(QString()); 0130 resultExpected.setServerUrl(QUrl(QStringLiteral("http://en.wikipedia.org"))); 0131 resultExpected.setWikiId(QStringLiteral("enwiki")); 0132 resultExpected.setTime(QDateTime(QDate(2010, 10, 24), QTime(19, 53, 13))); 0133 QCOMPARE(generalResult, resultExpected); 0134 } 0135 0136 void QuerySiteInfoGeneralTestConnectFalseXML() 0137 { 0138 0139 MediaWiki mediaWiki(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0140 FakeServer server; 0141 0142 generalCount = 0; 0143 QString senario(QStringLiteral("<api><query<general mainpage=\"Main Page\" base=\"http://en.wikipedia.org/wiki/Main_Page\" sitename=\"Wikipedia\" generator=\"MediaWiki 1.16wmf4\" phpversion=\"5.2.4-2ubuntu5.12wm1\" phpsapi=\"apache2handler\" dbtype=\"mysql\" dbversion=\"5.1.46-facebook-r3489-log\" rev=\"75268\" case=\"first-letter\" rights=\"Creative Commons Attribution-Share Alike 3.0 Unported\" lang=\"en\" fallback8bitEncoding=\"windows-1252\" writeapi=\"\" timezone=\"UTC\" timeoffset=\"0\" articlepath=\"/wiki/$1\" scriptpath=\"/w\" script=\"/w/index.php\" variantarticlepath=\"\" server=\"http://en.wikipedia.org\" wikiid=\"enwiki\" time=\"2010-10-24T19:53:13Z\"/>")); 0144 server.addScenario(senario); 0145 server.startAndWait(); 0146 0147 QuerySiteInfoGeneral* const general = new QuerySiteInfoGeneral(mediaWiki); 0148 0149 connect(general, SIGNAL(result(Generalinfo)), 0150 this, SLOT(resultHandle(Generalinfo))); 0151 0152 general->exec(); 0153 FakeServer::Request serverrequest = server.getRequest()[0]; 0154 QCOMPARE(this->generalCount, 0); 0155 QCOMPARE(serverrequest.type, QStringLiteral("GET")); 0156 QCOMPARE(serverrequest.value, this->request); 0157 QVERIFY(general->error() == QuerySiteInfoGeneral::XmlError); 0158 } 0159 0160 void QuerySiteInfoGeneralTestErrortIncludeAllDenied() 0161 { 0162 MediaWiki mediaWiki(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0163 FakeServer server; 0164 0165 generalCount = 0; 0166 QString senario(QStringLiteral("<api><error code=\"includeAllDenied\" info=\"\"/></api>")); 0167 server.addScenario(senario); 0168 server.startAndWait(); 0169 0170 QuerySiteInfoGeneral* const general = new QuerySiteInfoGeneral(mediaWiki); 0171 0172 connect(general, SIGNAL(result(Generalinfo)), 0173 this, SLOT(resultHandle(Generalinfo))); 0174 0175 general->exec(); 0176 FakeServer::Request serverrequest = server.getRequest()[0]; 0177 QCOMPARE(this->generalCount, 0); 0178 QCOMPARE(serverrequest.type, QStringLiteral("GET")); 0179 QCOMPARE(serverrequest.value, this->request); 0180 QVERIFY(general->error() == QuerySiteInfoGeneral::IncludeAllDenied); 0181 } 0182 0183 private: 0184 0185 int generalCount; 0186 Generalinfo generalResult; 0187 QString request; 0188 }; 0189 0190 QTEST_MAIN(QuerySiteInfoGeneralTest) 0191 0192 #include "querysiteinfogeneraltest.moc" 0193 0194 #endif // TEST_GENERAL_H