File indexing completed on 2024-04-21 15:32:09
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) 2010 by Alexandre Mendes 0011 * <a href="mailto:alex dot mendes1988 at gmail dot com">alex dot mendes1988 at gmail dot com</a> 0012 * @author Copyright (C) 2011 by Manuel Campomanes 0013 * <a href="mailto:campomanes dot manuel at gmail dot com">campomanes dot manuel at gmail dot com</a> 0014 * @author Copyright (C) 2011 by Hormiere Guillaume 0015 * <a href="mailto:hormiere dot guillaume at gmail dot com">hormiere dot guillaume at gmail dot com</a> 0016 * 0017 * This program is free software; you can redistribute it 0018 * and/or modify it under the terms of the GNU General 0019 * Public License as published by the Free Software Foundation; 0020 * either version 2, or (at your option) 0021 * any later version. 0022 * 0023 * This program is distributed in the hope that it will be useful, 0024 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0025 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0026 * GNU General Public License for more details. 0027 * 0028 * ============================================================ */ 0029 0030 #ifndef TEST_LOGIN_H 0031 #define TEST_LOGIN_H 0032 0033 #include <QObject> 0034 #include <QtTest> 0035 0036 #include <KJob> 0037 0038 #include "mediawiki.h" 0039 #include "login.h" 0040 #include "libmediawikitest/fakeserver.h" 0041 0042 using mediawiki::MediaWiki; 0043 using mediawiki::Login; 0044 0045 class LoginTest : public QObject 0046 { 0047 Q_OBJECT 0048 0049 public Q_SLOTS: 0050 0051 void loginHandle(KJob* job) { 0052 Q_UNUSED(job) 0053 loginCount++; 0054 } 0055 0056 private Q_SLOTS: 0057 0058 void initTestCase() 0059 { 0060 loginCount = 0; 0061 this->m_server = new FakeServer; 0062 } 0063 0064 // Failing due to https://bugreports.qt.io/browse/QTBUG-44860 0065 void loginTestConnectTrue() 0066 { 0067 loginCount = 0; 0068 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0069 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0070 m_server->setScenario(senario, cookie); 0071 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>"); 0072 m_server->addScenario(senario, cookie); 0073 m_server->startAndWait(); 0074 0075 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0076 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0077 0078 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0079 login.exec(); 0080 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0081 QCOMPARE(this->loginCount, 1); 0082 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0083 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0084 QCOMPARE(login.error(), (int)Login::NoError); 0085 } 0086 0087 void loginTestAttribute() 0088 { 0089 loginCount = 0; 0090 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0091 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0092 m_server->setScenario(senario, cookie); 0093 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 0094 m_server->addScenario(senario, cookie); 0095 m_server->startAndWait(); 0096 0097 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0098 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0099 0100 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0101 login.exec(); 0102 0103 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0104 QCOMPARE(this->loginCount, 1); 0105 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0106 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0107 QCOMPARE(login.error(), (int)Login::NoError); 0108 } 0109 0110 void loginTestConnectTrueWithoutCookie() 0111 { 0112 loginCount = 0; 0113 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0114 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0115 m_server->setScenario(senario); 0116 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 0117 m_server->addScenario(senario, cookie); 0118 m_server->startAndWait(); 0119 0120 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0121 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0122 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0123 login.exec(); 0124 QCOMPARE(this->loginCount, 1); 0125 QCOMPARE(login.error(), (int)Login::NoError); 0126 } 0127 0128 void loginTestFalseXMLLogin() 0129 { 0130 loginCount = 0; 0131 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" </api>") ); 0132 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0133 m_server->setScenario(senario, cookie); 0134 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 0135 m_server->addScenario(senario); 0136 m_server->startAndWait(); 0137 0138 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0139 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0140 0141 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0142 login.exec(); 0143 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0144 QCOMPARE(this->loginCount, 1); 0145 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0146 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0147 QCOMPARE(login.error(), (int)Login::XmlError); 0148 0149 } 0150 0151 void loginTestNoNameLogin() 0152 { 0153 loginCount = 0; 0154 QString senario(QStringLiteral("<api><login result=\"NoName\" info=\"\" /> </api>") ); 0155 m_server->setScenario(senario); 0156 m_server->startAndWait(); 0157 0158 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0159 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0160 0161 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0162 login.exec(); 0163 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0164 QCOMPARE(this->loginCount, 1); 0165 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0166 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0167 0168 QCOMPARE(login.error(), (int)Login::LoginMissing); 0169 } 0170 0171 void loginTestIllegalLogin() 0172 { 0173 loginCount = 0; 0174 QString senario(QStringLiteral("<api><login result=\"Illegal\" info=\"\" /> </api>") ); 0175 m_server->setScenario(senario); 0176 m_server->startAndWait(); 0177 0178 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0179 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0180 0181 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0182 login.exec(); 0183 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0184 QCOMPARE(this->loginCount, 1); 0185 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0186 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0187 0188 QCOMPARE(login.error(), (int)Login::IllegalUsername); 0189 } 0190 0191 void loginTestNotExistsLogin() 0192 { 0193 loginCount = 0; 0194 QString senario(QStringLiteral("<api><login result=\"NotExists\" info=\"\" /> </api>") ); 0195 m_server->setScenario(senario); 0196 m_server->startAndWait(); 0197 0198 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0199 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0200 0201 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0202 login.exec(); 0203 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0204 QCOMPARE(this->loginCount, 1); 0205 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0206 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0207 0208 QCOMPARE(login.error(), (int)Login::UsernameNotExists); 0209 } 0210 0211 void loginTestEmptyPassLogin() 0212 { 0213 loginCount = 0; 0214 QString senario(QStringLiteral("<api><login result=\"EmptyPass\" info=\"\" /> </api>") ); 0215 m_server->setScenario(senario); 0216 m_server->startAndWait(); 0217 0218 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0219 Login login(site, QStringLiteral("MyUsername"), QString()); 0220 0221 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0222 login.exec(); 0223 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0224 QCOMPARE(this->loginCount, 1); 0225 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0226 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=")); 0227 0228 QCOMPARE(login.error(), (int)Login::PasswordMissing); 0229 } 0230 0231 void loginTestWrongPassLogin() 0232 { 0233 loginCount = 0; 0234 QString senario(QStringLiteral("<api><login result=\"WrongPass\" info=\"\" /> </api>") ); 0235 m_server->setScenario(senario); 0236 m_server->startAndWait(); 0237 0238 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0239 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0240 0241 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0242 login.exec(); 0243 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0244 QCOMPARE(this->loginCount, 1); 0245 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0246 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0247 0248 QCOMPARE(login.error(), (int)Login::WrongPassword); 0249 } 0250 0251 void loginTestWrongPluginPassLogin() 0252 { 0253 loginCount = 0; 0254 QString senario(QStringLiteral("<api><login result=\"WrongPluginPass\" info=\"\" /> </api>") ); 0255 m_server->setScenario(senario); 0256 m_server->startAndWait(); 0257 0258 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0259 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0260 0261 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0262 login.exec(); 0263 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0264 QCOMPARE(this->loginCount, 1); 0265 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0266 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0267 0268 QCOMPARE(login.error(), (int)Login::WrongPluginPassword); 0269 } 0270 0271 void loginTestCreateBlockedLogin() 0272 { 0273 loginCount = 0; 0274 QString senario(QStringLiteral("<api><login result=\"CreateBlocked\" info=\"\" /> </api>") ); 0275 m_server->setScenario(senario); 0276 m_server->startAndWait(); 0277 0278 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0279 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0280 0281 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0282 login.exec(); 0283 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0284 QCOMPARE(this->loginCount, 1); 0285 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0286 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0287 0288 QCOMPARE(login.error(), (int)Login::IPAddressBlocked); 0289 } 0290 0291 void loginTestThrottledLogin() 0292 { 0293 loginCount = 0; 0294 QString senario(QStringLiteral("<api><login result=\"Throttled\" info=\"\" /> </api>") ); 0295 m_server->setScenario(senario); 0296 m_server->startAndWait(); 0297 0298 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0299 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0300 0301 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0302 login.exec(); 0303 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0304 QCOMPARE(this->loginCount, 1); 0305 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0306 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0307 0308 QCOMPARE(login.error(), (int)Login::TooManyConnections); 0309 } 0310 0311 void loginTestBlockedLogin() 0312 { 0313 loginCount = 0; 0314 QString senario(QStringLiteral("<api><login result=\"Blocked\" info=\"\" /> </api>") ); 0315 m_server->setScenario(senario); 0316 m_server->startAndWait(); 0317 0318 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0319 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0320 0321 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0322 login.exec(); 0323 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0324 QCOMPARE(this->loginCount, 1); 0325 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0326 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0327 0328 QCOMPARE(login.error(), (int)Login::UserBlocked); 0329 } 0330 0331 void loginTestFalseXMLToken() 0332 { 0333 loginCount = 0; 0334 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0335 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0336 m_server->setScenario(senario, cookie); 0337 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"</api>"); 0338 m_server->addScenario(senario); 0339 m_server->startAndWait(); 0340 0341 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0342 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0343 0344 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0345 login.exec(); 0346 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0347 QCOMPARE(this->loginCount, 1); 0348 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0349 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0350 QCOMPARE(login.error(), (int)Login::XmlError); 0351 0352 } 0353 0354 void loginTestNoNameToken() 0355 { 0356 loginCount = 0; 0357 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0358 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0359 m_server->setScenario(senario, cookie); 0360 senario = QStringLiteral("<api><login result=\"NoName\" info=\"\" /> </api>") ; 0361 m_server->addScenario(senario); 0362 m_server->startAndWait(); 0363 0364 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0365 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0366 0367 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0368 login.exec(); 0369 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0370 QCOMPARE(this->loginCount, 1); 0371 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0372 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0373 0374 QCOMPARE(login.error(), (int)Login::LoginMissing); 0375 } 0376 0377 void loginTestIllegalToken() 0378 { 0379 loginCount = 0; 0380 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0381 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0382 m_server->setScenario(senario, cookie); 0383 senario = QStringLiteral("<api><login result=\"Illegal\" info=\"\" /> </api>") ; 0384 m_server->addScenario(senario); 0385 m_server->startAndWait(); 0386 0387 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0388 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0389 0390 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0391 login.exec(); 0392 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0393 QCOMPARE(this->loginCount, 1); 0394 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0395 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0396 0397 QCOMPARE(login.error(), (int)Login::IllegalUsername); 0398 } 0399 0400 void loginTestNotExistsToken() 0401 { 0402 loginCount = 0; 0403 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0404 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0405 m_server->setScenario(senario, cookie); 0406 senario = QStringLiteral("<api><login result=\"NotExists\" info=\"\" /> </api>") ; 0407 m_server->addScenario(senario); 0408 m_server->startAndWait(); 0409 0410 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0411 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0412 0413 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0414 login.exec(); 0415 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0416 QCOMPARE(this->loginCount, 1); 0417 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0418 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0419 0420 QCOMPARE(login.error(), (int)Login::UsernameNotExists); 0421 } 0422 0423 void loginTestEmptyPassToken() 0424 { 0425 loginCount = 0; 0426 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0427 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0428 m_server->setScenario(senario, cookie); 0429 senario = QStringLiteral("<api><login result=\"EmptyPass\" info=\"\" /> </api>") ; 0430 m_server->addScenario(senario); 0431 m_server->startAndWait(); 0432 0433 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0434 Login login(site, QStringLiteral("MyUsername"), QString()); 0435 0436 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0437 login.exec(); 0438 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0439 QCOMPARE(this->loginCount, 1); 0440 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0441 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=")); 0442 0443 QCOMPARE(login.error(), (int)Login::PasswordMissing); 0444 } 0445 0446 void loginTestWrongPassToken() 0447 { 0448 loginCount = 0; 0449 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0450 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0451 m_server->setScenario(senario, cookie); 0452 senario = QStringLiteral("<api><login result=\"WrongPass\" info=\"\" /> </api>") ; 0453 m_server->addScenario(senario); 0454 m_server->startAndWait(); 0455 0456 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0457 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0458 0459 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0460 login.exec(); 0461 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0462 QCOMPARE(this->loginCount, 1); 0463 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0464 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0465 0466 QCOMPARE(login.error(), (int)Login::WrongPassword); 0467 } 0468 0469 void loginTestWrongPluginPassToken() 0470 { 0471 loginCount = 0; 0472 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0473 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0474 m_server->setScenario(senario, cookie); 0475 senario = QStringLiteral("<api><login result=\"WrongPluginPass\" info=\"\" /> </api>") ; 0476 m_server->addScenario(senario); 0477 m_server->startAndWait(); 0478 0479 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0480 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0481 0482 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0483 login.exec(); 0484 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0485 QCOMPARE(this->loginCount, 1); 0486 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0487 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0488 0489 QCOMPARE(login.error(), (int)Login::WrongPluginPassword); 0490 } 0491 0492 void loginTestCreateBlockedToken() 0493 { 0494 loginCount = 0; 0495 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0496 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0497 m_server->setScenario(senario, cookie); 0498 senario = QStringLiteral("<api><login result=\"CreateBlocked\" info=\"\" /> </api>") ; 0499 m_server->addScenario(senario); 0500 m_server->startAndWait(); 0501 0502 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0503 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0504 0505 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0506 login.exec(); 0507 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0508 QCOMPARE(this->loginCount, 1); 0509 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0510 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0511 0512 QCOMPARE(login.error(), (int)Login::IPAddressBlocked); 0513 } 0514 0515 void loginTestThrottledToken() 0516 { 0517 loginCount = 0; 0518 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0519 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0520 m_server->setScenario(senario, cookie); 0521 senario = QStringLiteral("<api><login result=\"Throttled\" info=\"\" /> </api>") ; 0522 m_server->addScenario(senario); 0523 m_server->startAndWait(); 0524 0525 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0526 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0527 0528 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0529 login.exec(); 0530 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0531 QCOMPARE(this->loginCount, 1); 0532 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0533 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0534 0535 QCOMPARE(login.error(), (int)Login::TooManyConnections); 0536 } 0537 0538 void loginTestBlockedToken() 0539 { 0540 loginCount = 0; 0541 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 0542 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 0543 m_server->setScenario(senario, cookie); 0544 senario = QStringLiteral("<api><login result=\"Blocked\" info=\"\" /> </api>") ; 0545 m_server->addScenario(senario); 0546 m_server->startAndWait(); 0547 0548 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 0549 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 0550 0551 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 0552 login.exec(); 0553 FakeServer::Request serverrequest = m_server->getRequest()[0]; 0554 QCOMPARE(this->loginCount, 1); 0555 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 0556 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 0557 0558 QCOMPARE(login.error(), (int)Login::UserBlocked); 0559 } 0560 0561 void cleanupTestCase() 0562 { 0563 delete this->m_server; 0564 } 0565 0566 private: 0567 0568 int loginCount; 0569 FakeServer* m_server; 0570 }; 0571 0572 QTEST_MAIN(LoginTest) 0573 0574 #include "logintest.moc" 0575 0576 #endif // TEST_LOGIN_H