1 /** =========================================================== 2 * @file 3 * 4 * This file is a part of KDE project 5 * <a href="https://projects.kde.org/projects/extragear/libs/libmediawiki">libmediawiki</a> 6 * 7 * @date 2011-03-22 8 * @brief a MediaWiki C++ interface for KDE 9 * 10 * @author Copyright (C) 2010 by Alexandre Mendes 11 * <a href="mailto:alex dot mendes1988 at gmail dot com">alex dot mendes1988 at gmail dot com</a> 12 * @author Copyright (C) 2011 by Manuel Campomanes 13 * <a href="mailto:campomanes dot manuel at gmail dot com">campomanes dot manuel at gmail dot com</a> 14 * @author Copyright (C) 2011 by Hormiere Guillaume 15 * <a href="mailto:hormiere dot guillaume at gmail dot com">hormiere dot guillaume at gmail dot com</a> 16 * 17 * This program is free software; you can redistribute it 18 * and/or modify it under the terms of the GNU General 19 * Public License as published by the Free Software Foundation; 20 * either version 2, or (at your option) 21 * any later version. 22 * 23 * This program is distributed in the hope that it will be useful, 24 * but WITHOUT ANY WARRANTY; without even the implied warranty of 25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 26 * GNU General Public License for more details. 27 * 28 * ============================================================ */ 29 30 #ifndef TEST_LOGIN_H 31 #define TEST_LOGIN_H 32 33 #include <QtCore/QObject> 34 #include <QtTest/QtTest> 35 36 #include <KCoreAddons/KJob> 37 38 #include "mediawiki.h" 39 #include "login.h" 40 #include "libmediawikitest/fakeserver.h" 41 42 using mediawiki::MediaWiki; 43 using mediawiki::Login; 44 45 class LoginTest : public QObject 46 { 47 Q_OBJECT 48 49 public Q_SLOTS: 50 loginHandle(KJob * job)51 void loginHandle(KJob* job) { 52 Q_UNUSED(job) 53 loginCount++; 54 } 55 56 private Q_SLOTS: 57 initTestCase()58 void initTestCase() 59 { 60 loginCount = 0; 61 this->m_server = new FakeServer; 62 } 63 64 // Failing due to https://bugreports.qt.io/browse/QTBUG-44860 loginTestConnectTrue()65 void loginTestConnectTrue() 66 { 67 loginCount = 0; 68 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 69 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 70 m_server->setScenario(senario, cookie); 71 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>"); 72 m_server->addScenario(senario, cookie); 73 m_server->startAndWait(); 74 75 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 76 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 77 78 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 79 login.exec(); 80 FakeServer::Request serverrequest = m_server->getRequest()[0]; 81 QCOMPARE(this->loginCount, 1); 82 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 83 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 84 QCOMPARE(login.error(), (int)Login::NoError); 85 } 86 loginTestAttribute()87 void loginTestAttribute() 88 { 89 loginCount = 0; 90 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 91 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 92 m_server->setScenario(senario, cookie); 93 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 94 m_server->addScenario(senario, cookie); 95 m_server->startAndWait(); 96 97 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 98 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 99 100 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 101 login.exec(); 102 103 FakeServer::Request serverrequest = m_server->getRequest()[0]; 104 QCOMPARE(this->loginCount, 1); 105 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 106 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 107 QCOMPARE(login.error(), (int)Login::NoError); 108 } 109 loginTestConnectTrueWithoutCookie()110 void loginTestConnectTrueWithoutCookie() 111 { 112 loginCount = 0; 113 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 114 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 115 m_server->setScenario(senario); 116 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 117 m_server->addScenario(senario, cookie); 118 m_server->startAndWait(); 119 120 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 121 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 122 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 123 login.exec(); 124 QCOMPARE(this->loginCount, 1); 125 QCOMPARE(login.error(), (int)Login::NoError); 126 } 127 loginTestFalseXMLLogin()128 void loginTestFalseXMLLogin() 129 { 130 loginCount = 0; 131 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" </api>") ); 132 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 133 m_server->setScenario(senario, cookie); 134 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /></api>"); 135 m_server->addScenario(senario); 136 m_server->startAndWait(); 137 138 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 139 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 140 141 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 142 login.exec(); 143 FakeServer::Request serverrequest = m_server->getRequest()[0]; 144 QCOMPARE(this->loginCount, 1); 145 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 146 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 147 QCOMPARE(login.error(), (int)Login::XmlError); 148 149 } 150 loginTestNoNameLogin()151 void loginTestNoNameLogin() 152 { 153 loginCount = 0; 154 QString senario(QStringLiteral("<api><login result=\"NoName\" info=\"\" /> </api>") ); 155 m_server->setScenario(senario); 156 m_server->startAndWait(); 157 158 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 159 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 160 161 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 162 login.exec(); 163 FakeServer::Request serverrequest = m_server->getRequest()[0]; 164 QCOMPARE(this->loginCount, 1); 165 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 166 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 167 168 QCOMPARE(login.error(), (int)Login::LoginMissing); 169 } 170 loginTestIllegalLogin()171 void loginTestIllegalLogin() 172 { 173 loginCount = 0; 174 QString senario(QStringLiteral("<api><login result=\"Illegal\" info=\"\" /> </api>") ); 175 m_server->setScenario(senario); 176 m_server->startAndWait(); 177 178 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 179 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 180 181 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 182 login.exec(); 183 FakeServer::Request serverrequest = m_server->getRequest()[0]; 184 QCOMPARE(this->loginCount, 1); 185 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 186 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 187 188 QCOMPARE(login.error(), (int)Login::IllegalUsername); 189 } 190 loginTestNotExistsLogin()191 void loginTestNotExistsLogin() 192 { 193 loginCount = 0; 194 QString senario(QStringLiteral("<api><login result=\"NotExists\" info=\"\" /> </api>") ); 195 m_server->setScenario(senario); 196 m_server->startAndWait(); 197 198 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 199 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 200 201 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 202 login.exec(); 203 FakeServer::Request serverrequest = m_server->getRequest()[0]; 204 QCOMPARE(this->loginCount, 1); 205 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 206 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 207 208 QCOMPARE(login.error(), (int)Login::UsernameNotExists); 209 } 210 loginTestEmptyPassLogin()211 void loginTestEmptyPassLogin() 212 { 213 loginCount = 0; 214 QString senario(QStringLiteral("<api><login result=\"EmptyPass\" info=\"\" /> </api>") ); 215 m_server->setScenario(senario); 216 m_server->startAndWait(); 217 218 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 219 Login login(site, QStringLiteral("MyUsername"), QString()); 220 221 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 222 login.exec(); 223 FakeServer::Request serverrequest = m_server->getRequest()[0]; 224 QCOMPARE(this->loginCount, 1); 225 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 226 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=")); 227 228 QCOMPARE(login.error(), (int)Login::PasswordMissing); 229 } 230 loginTestWrongPassLogin()231 void loginTestWrongPassLogin() 232 { 233 loginCount = 0; 234 QString senario(QStringLiteral("<api><login result=\"WrongPass\" info=\"\" /> </api>") ); 235 m_server->setScenario(senario); 236 m_server->startAndWait(); 237 238 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 239 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 240 241 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 242 login.exec(); 243 FakeServer::Request serverrequest = m_server->getRequest()[0]; 244 QCOMPARE(this->loginCount, 1); 245 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 246 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 247 248 QCOMPARE(login.error(), (int)Login::WrongPassword); 249 } 250 loginTestWrongPluginPassLogin()251 void loginTestWrongPluginPassLogin() 252 { 253 loginCount = 0; 254 QString senario(QStringLiteral("<api><login result=\"WrongPluginPass\" info=\"\" /> </api>") ); 255 m_server->setScenario(senario); 256 m_server->startAndWait(); 257 258 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 259 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 260 261 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 262 login.exec(); 263 FakeServer::Request serverrequest = m_server->getRequest()[0]; 264 QCOMPARE(this->loginCount, 1); 265 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 266 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 267 268 QCOMPARE(login.error(), (int)Login::WrongPluginPassword); 269 } 270 loginTestCreateBlockedLogin()271 void loginTestCreateBlockedLogin() 272 { 273 loginCount = 0; 274 QString senario(QStringLiteral("<api><login result=\"CreateBlocked\" info=\"\" /> </api>") ); 275 m_server->setScenario(senario); 276 m_server->startAndWait(); 277 278 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 279 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 280 281 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 282 login.exec(); 283 FakeServer::Request serverrequest = m_server->getRequest()[0]; 284 QCOMPARE(this->loginCount, 1); 285 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 286 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 287 288 QCOMPARE(login.error(), (int)Login::IPAddressBlocked); 289 } 290 loginTestThrottledLogin()291 void loginTestThrottledLogin() 292 { 293 loginCount = 0; 294 QString senario(QStringLiteral("<api><login result=\"Throttled\" info=\"\" /> </api>") ); 295 m_server->setScenario(senario); 296 m_server->startAndWait(); 297 298 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 299 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 300 301 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 302 login.exec(); 303 FakeServer::Request serverrequest = m_server->getRequest()[0]; 304 QCOMPARE(this->loginCount, 1); 305 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 306 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 307 308 QCOMPARE(login.error(), (int)Login::TooManyConnections); 309 } 310 loginTestBlockedLogin()311 void loginTestBlockedLogin() 312 { 313 loginCount = 0; 314 QString senario(QStringLiteral("<api><login result=\"Blocked\" info=\"\" /> </api>") ); 315 m_server->setScenario(senario); 316 m_server->startAndWait(); 317 318 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 319 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 320 321 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 322 login.exec(); 323 FakeServer::Request serverrequest = m_server->getRequest()[0]; 324 QCOMPARE(this->loginCount, 1); 325 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 326 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 327 328 QCOMPARE(login.error(), (int)Login::UserBlocked); 329 } 330 loginTestFalseXMLToken()331 void loginTestFalseXMLToken() 332 { 333 loginCount = 0; 334 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 335 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 336 m_server->setScenario(senario, cookie); 337 senario = QStringLiteral("<api><login result=\"Success\" lguserid=\"12345\" lgusername=\"MyUsername\" lgtoken=\"b5780b6e2f27e20b450921d9461010b4\" cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"</api>"); 338 m_server->addScenario(senario); 339 m_server->startAndWait(); 340 341 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 342 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 343 344 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 345 login.exec(); 346 FakeServer::Request serverrequest = m_server->getRequest()[0]; 347 QCOMPARE(this->loginCount, 1); 348 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 349 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 350 QCOMPARE(login.error(), (int)Login::XmlError); 351 352 } 353 loginTestNoNameToken()354 void loginTestNoNameToken() 355 { 356 loginCount = 0; 357 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 358 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 359 m_server->setScenario(senario, cookie); 360 senario = QStringLiteral("<api><login result=\"NoName\" info=\"\" /> </api>") ; 361 m_server->addScenario(senario); 362 m_server->startAndWait(); 363 364 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 365 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 366 367 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 368 login.exec(); 369 FakeServer::Request serverrequest = m_server->getRequest()[0]; 370 QCOMPARE(this->loginCount, 1); 371 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 372 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 373 374 QCOMPARE(login.error(), (int)Login::LoginMissing); 375 } 376 loginTestIllegalToken()377 void loginTestIllegalToken() 378 { 379 loginCount = 0; 380 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 381 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 382 m_server->setScenario(senario, cookie); 383 senario = QStringLiteral("<api><login result=\"Illegal\" info=\"\" /> </api>") ; 384 m_server->addScenario(senario); 385 m_server->startAndWait(); 386 387 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 388 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 389 390 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 391 login.exec(); 392 FakeServer::Request serverrequest = m_server->getRequest()[0]; 393 QCOMPARE(this->loginCount, 1); 394 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 395 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 396 397 QCOMPARE(login.error(), (int)Login::IllegalUsername); 398 } 399 loginTestNotExistsToken()400 void loginTestNotExistsToken() 401 { 402 loginCount = 0; 403 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 404 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 405 m_server->setScenario(senario, cookie); 406 senario = QStringLiteral("<api><login result=\"NotExists\" info=\"\" /> </api>") ; 407 m_server->addScenario(senario); 408 m_server->startAndWait(); 409 410 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 411 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 412 413 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 414 login.exec(); 415 FakeServer::Request serverrequest = m_server->getRequest()[0]; 416 QCOMPARE(this->loginCount, 1); 417 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 418 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 419 420 QCOMPARE(login.error(), (int)Login::UsernameNotExists); 421 } 422 loginTestEmptyPassToken()423 void loginTestEmptyPassToken() 424 { 425 loginCount = 0; 426 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 427 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 428 m_server->setScenario(senario, cookie); 429 senario = QStringLiteral("<api><login result=\"EmptyPass\" info=\"\" /> </api>") ; 430 m_server->addScenario(senario); 431 m_server->startAndWait(); 432 433 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 434 Login login(site, QStringLiteral("MyUsername"), QString()); 435 436 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 437 login.exec(); 438 FakeServer::Request serverrequest = m_server->getRequest()[0]; 439 QCOMPARE(this->loginCount, 1); 440 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 441 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=")); 442 443 QCOMPARE(login.error(), (int)Login::PasswordMissing); 444 } 445 loginTestWrongPassToken()446 void loginTestWrongPassToken() 447 { 448 loginCount = 0; 449 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 450 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 451 m_server->setScenario(senario, cookie); 452 senario = QStringLiteral("<api><login result=\"WrongPass\" info=\"\" /> </api>") ; 453 m_server->addScenario(senario); 454 m_server->startAndWait(); 455 456 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 457 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 458 459 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 460 login.exec(); 461 FakeServer::Request serverrequest = m_server->getRequest()[0]; 462 QCOMPARE(this->loginCount, 1); 463 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 464 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 465 466 QCOMPARE(login.error(), (int)Login::WrongPassword); 467 } 468 loginTestWrongPluginPassToken()469 void loginTestWrongPluginPassToken() 470 { 471 loginCount = 0; 472 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 473 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 474 m_server->setScenario(senario, cookie); 475 senario = QStringLiteral("<api><login result=\"WrongPluginPass\" info=\"\" /> </api>") ; 476 m_server->addScenario(senario); 477 m_server->startAndWait(); 478 479 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 480 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 481 482 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 483 login.exec(); 484 FakeServer::Request serverrequest = m_server->getRequest()[0]; 485 QCOMPARE(this->loginCount, 1); 486 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 487 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 488 489 QCOMPARE(login.error(), (int)Login::WrongPluginPassword); 490 } 491 loginTestCreateBlockedToken()492 void loginTestCreateBlockedToken() 493 { 494 loginCount = 0; 495 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 496 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 497 m_server->setScenario(senario, cookie); 498 senario = QStringLiteral("<api><login result=\"CreateBlocked\" info=\"\" /> </api>") ; 499 m_server->addScenario(senario); 500 m_server->startAndWait(); 501 502 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 503 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 504 505 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 506 login.exec(); 507 FakeServer::Request serverrequest = m_server->getRequest()[0]; 508 QCOMPARE(this->loginCount, 1); 509 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 510 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 511 512 QCOMPARE(login.error(), (int)Login::IPAddressBlocked); 513 } 514 loginTestThrottledToken()515 void loginTestThrottledToken() 516 { 517 loginCount = 0; 518 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 519 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 520 m_server->setScenario(senario, cookie); 521 senario = QStringLiteral("<api><login result=\"Throttled\" info=\"\" /> </api>") ; 522 m_server->addScenario(senario); 523 m_server->startAndWait(); 524 525 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 526 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 527 528 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 529 login.exec(); 530 FakeServer::Request serverrequest = m_server->getRequest()[0]; 531 QCOMPARE(this->loginCount, 1); 532 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 533 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 534 535 QCOMPARE(login.error(), (int)Login::TooManyConnections); 536 } 537 loginTestBlockedToken()538 void loginTestBlockedToken() 539 { 540 loginCount = 0; 541 QString senario(QStringLiteral("<api><login result=\"NeedToken\" token=\"b5780b6e2f27e20b450921d9461010b4\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\" /> </api>") ); 542 QString cookie( QStringLiteral("cookieprefix=\"enwiki\" sessionid=\"17ab96bd8ffbe8ca58a78657a918558e\"")); 543 m_server->setScenario(senario, cookie); 544 senario = QStringLiteral("<api><login result=\"Blocked\" info=\"\" /> </api>") ; 545 m_server->addScenario(senario); 546 m_server->startAndWait(); 547 548 MediaWiki site(QUrl(QStringLiteral("http://127.0.0.1:12566"))); 549 Login login(site, QStringLiteral("MyUsername"), QStringLiteral("test")); 550 551 connect(&login, SIGNAL(result(KJob*)),this, SLOT(loginHandle(KJob*))); 552 login.exec(); 553 FakeServer::Request serverrequest = m_server->getRequest()[0]; 554 QCOMPARE(this->loginCount, 1); 555 QCOMPARE(serverrequest.type, QStringLiteral("POST")); 556 QCOMPARE(serverrequest.value, QStringLiteral("/?format=xml&action=login&lgname=MyUsername&lgpassword=test")); 557 558 QCOMPARE(login.error(), (int)Login::UserBlocked); 559 } 560 cleanupTestCase()561 void cleanupTestCase() 562 { 563 delete this->m_server; 564 } 565 566 private: 567 568 int loginCount; 569 FakeServer* m_server; 570 }; 571 572 QTEST_MAIN(LoginTest) 573 574 #include "logintest.moc" 575 576 #endif // TEST_LOGIN_H 577