/** * Copyright (C) 2015 BITPlan GmbH * * Pater-Delp-Str. 1 * D-47877 Willich-Schiefbahn * * http://www.bitplan.com * */ package com.bitplan.mediawiki.japi; import static org.junit.Assert.*; import org.junit.Test; import com.bitplan.mediawiki.japi.Mediawiki.TokenResult; import com.bitplan.mediawiki.japi.api.Api; import com.bitplan.mediawiki.japi.api.Login; import com.bitplan.mediawiki.japi.jaxb.JaxbFactory; import com.bitplan.mediawiki.japi.user.WikiUser; /** * Test http://www.mediawiki.org/wiki/API:Login * * @author wf * */ public class TestAPI_Login extends APITestbase { /** * test secret access to user data * * @throws Exception */ @Test public void testGetUser() throws Exception { WikiUser wuser = getWiki().getWikiUser(); assertNotNull("User credentials not found/configured",wuser); check("email", wuser.getEmail()); assertNotNull(wuser.getPassword()); } /** * http://www.mediawiki.org/wiki/API:Login */ @Test public void testLoginToken() throws Exception { for (ExampleWiki lwiki : getWikis()) { WikiUser wuser = lwiki.getWikiUser(); Mediawiki ltWiki = lwiki.getMediaWikiJapi(); // do not keep uncommented - password will be visible in log // lwiki.getMediaWikiJapi().setDebug(true); TokenResult token = ltWiki.prepareLogin(wuser.getUsername()); assertNotNull(token); Login login=ltWiki.login(wuser.getUsername(), wuser.getPassword()); assertNotNull(login); assertNotNull("lguserid should not be null for "+lwiki.getWikiId(),login.getLguserid()); } } /** * test Login and logout see <a * href='http://www.mediawiki.org/wiki/API:Login'>API:Login</a> * * @throws Exception */ @Test public void testLogin() throws Exception { for (ExampleWiki lwiki : getEditableWikis()) { WikiUser wuser = lwiki.getWikiUser(); if (wuser == null) { fail(WikiUser.help(lwiki.wikiId, lwiki.wiki.getSiteurl())); } // avoid uncommenting - will show password information ... // lwiki.debug = true; assertFalse(lwiki.wiki.isLoggedIn()); Login login = lwiki.wiki.login(wuser.getUsername(), wuser.getPassword()); assertNotNull(login.getLguserid()); assertEquals(wuser.getUsername().toLowerCase(), login.getLgusername() .toLowerCase()); assertEquals("Success", login.getResult()); assertNotNull(login.getLgtoken()); assertTrue(lwiki.wiki.isLoggedIn()); // make sure logout also works lwiki.wiki.logout(); assertFalse(lwiki.wiki.isLoggedIn()); } } @Test public void testLoginWrongPassword() throws Exception { for (ExampleWiki lwiki : getEditableWikis()) { MediawikiApi ltwiki = lwiki.wiki; WikiUser wuser = lwiki.getWikiUser(); if (wuser == null) { fail(WikiUser.help(lwiki.wikiId, lwiki.wiki.getSiteurl())); } // avoid uncommenting - will show password information ... // lwiki.debug = true; assertFalse(ltwiki.isLoggedIn()); // spoilt the password Login login = lwiki.wiki.login(wuser.getUsername(), "not" + wuser.getPassword()); assertNull(login.getLguserid()); assertNull(login.getLgusername()); assertEquals("WrongPass", login.getResult()); assertNull(login.getLgtoken()); assertFalse(lwiki.wiki.isLoggedIn()); // make sure logout also works lwiki.wiki.logout(); assertFalse(lwiki.wiki.isLoggedIn()); } } @Test public void testLoginNotExists() throws Exception { for (ExampleWiki lwiki : getEditableWikis()) { MediawikiApi ltwiki = lwiki.wiki; // System.out.println(ltwiki.getSiteurl()); Login login = ltwiki .login("someUserThatDoesNotExist", "somePassword"); assertEquals("NotExists", login.getResult()); } } @Test public void testXMLJaxb() throws Exception { String xmls[] = { "<?xml version=\"1.0\"?><api><login result=\"NeedToken\" token=\"bd66872088b91aee85074b5c12e8ae54\" cookieprefix=\"gfwiki\" sessionid=\"b5afedfda4a183e44c9bd696b82b5191\" /></api>", "\n\n<?xml version=\"1.0\"?><api><login result=\"NeedToken\" token=\"c2235f17cde5d357a36bb2737c42bf55\" cookieprefix=\"masterwiki\" sessionid=\"b148720e4b9757584fcc3ad2d2f59e6a\" /></api>" }; String tokens[] = { "bd66872088b91aee85074b5c12e8ae54", "c2235f17cde5d357a36bb2737c42bf55" }; JaxbFactory<Api> apijaxbfactory = new JaxbFactory<Api>(Api.class); int i = 0; for (String xml : xmls) { Api result = apijaxbfactory.fromXML(xml); assertNotNull(result); assertEquals(tokens[i], result.getLogin().getToken()); i++; } } }