BearND has uploaded a new change for review. https://gerrit.wikimedia.org/r/135058
Change subject: Stabilize automated tests ...................................................................... Stabilize automated tests DoEditTests: needed a potential retry with new login TriggerAbuseFilterTest + TriggerEditCaptchaTest: needed to clear tokens + cookies for anonymous editing Change-Id: I809e34f40863c2f679a18010ed78cbd8e2fcb471 --- M wikipedia-it/src/main/java/org/wikipedia/test/CreateAccountTokenTest.java M wikipedia-it/src/main/java/org/wikipedia/test/DoEditTaskTests.java M wikipedia-it/src/main/java/org/wikipedia/test/TriggerAbuseFilterTest.java M wikipedia-it/src/main/java/org/wikipedia/test/TriggerEditCaptchaTest.java 4 files changed, 73 insertions(+), 26 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/58/135058/1 diff --git a/wikipedia-it/src/main/java/org/wikipedia/test/CreateAccountTokenTest.java b/wikipedia-it/src/main/java/org/wikipedia/test/CreateAccountTokenTest.java index 239bb28..503be65 100644 --- a/wikipedia-it/src/main/java/org/wikipedia/test/CreateAccountTokenTest.java +++ b/wikipedia-it/src/main/java/org/wikipedia/test/CreateAccountTokenTest.java @@ -1,4 +1,3 @@ - package org.wikipedia.test; import android.content.*; @@ -30,7 +29,8 @@ new CreateAccountTask(getInstrumentation().getTargetContext(), username, password, null) { @Override public void onFinish(CreateAccountResult baseResult) { - assertTrue(baseResult instanceof CreateAccountCaptchaResult); + assertTrue("got " + baseResult.getClass().getSimpleName(), + baseResult instanceof CreateAccountCaptchaResult); CreateAccountCaptchaResult result = (CreateAccountCaptchaResult)baseResult; assertNotNull(result); assertNotNull(result.getCaptchaResult()); diff --git a/wikipedia-it/src/main/java/org/wikipedia/test/DoEditTaskTests.java b/wikipedia-it/src/main/java/org/wikipedia/test/DoEditTaskTests.java index 0065b4b..5018c16 100644 --- a/wikipedia-it/src/main/java/org/wikipedia/test/DoEditTaskTests.java +++ b/wikipedia-it/src/main/java/org/wikipedia/test/DoEditTaskTests.java @@ -1,10 +1,13 @@ - package org.wikipedia.test; import android.content.*; import android.test.*; +import com.github.kevinsawicki.http.HttpRequest; import org.wikipedia.*; import org.wikipedia.editing.*; +import org.wikipedia.login.LoginResult; +import org.wikipedia.login.LoginTask; +import org.wikipedia.login.User; import java.util.concurrent.*; @@ -17,36 +20,71 @@ public void testEdit() throws Throwable { startActivity(new Intent(), null, null); - final PageTitle title = new PageTitle(null, "Test_page_for_app_testing/Section1", new Site("test.wikipedia.org")); - final String wikitext = "== Section 2 ==\n\nEditing section INSERT RANDOM & HERE test at " + System.currentTimeMillis(); - final WikipediaApp app = (WikipediaApp)getInstrumentation().getTargetContext().getApplicationContext(); final CountDownLatch completionLatch = new CountDownLatch(1); runTestOnUiThread(new Runnable() { @Override public void run() { - app.getEditTokenStorage().get(title.getSite(), new EditTokenStorage.TokenRetreivedCallback() { - @Override - public void onTokenRetreived(String token) { - new DoEditTask(getInstrumentation().getTargetContext(), title, wikitext, 3, token, "") { - @Override - public void onFinish(EditingResult result) { - assertNotNull(result); - assertEquals("Success", result.getResult()); - new FetchSectionWikitextTask(getInstrumentation().getTargetContext(), title, 3) { - @Override - public void onFinish(String result) { - assertNotNull(result); - assertEquals(wikitext, result); - completionLatch.countDown(); - } - }.execute(); - } - }.execute(); - } - }); + doSave(completionLatch); } }); assertTrue(completionLatch.await(TASK_COMPLETION_TIMEOUT, TimeUnit.MILLISECONDS)); } + + private void doSave(final CountDownLatch completionLatch) { + final PageTitle title = new PageTitle(null, "Test_page_for_app_testing/Section1", new Site("test.wikipedia.org")); + final String wikitext = "== Section 2 ==\n\nEditing section INSERT RANDOM & HERE test at " + System.currentTimeMillis(); + final WikipediaApp app = (WikipediaApp) getInstrumentation().getTargetContext().getApplicationContext(); + app.getEditTokenStorage().get(title.getSite(), new EditTokenStorage.TokenRetreivedCallback() { + @Override + public void onTokenRetreived(String token) { + new DoEditTask(getInstrumentation().getTargetContext(), title, wikitext, 3, token, "") { + @Override + public void onFinish(EditingResult result) { + assertNotNull(result); + assertEquals("Success", result.getResult()); + new FetchSectionWikitextTask(getInstrumentation().getTargetContext(), title, 3) { + @Override + public void onFinish(String result) { + assertNotNull(result); + assertEquals(wikitext, result); + completionLatch.countDown(); + } + }.execute(); + } + + @Override + public void onCatch(Throwable caught) { + // borrowed mainly from EditSectionActivity: + final WikipediaApp app = WikipediaApp.getInstance(); + if (caught instanceof EditingException) { + EditingException ee = (EditingException) caught; + if (app.getUserInfoStorage().isLoggedIn() && ee.getCode().equals("badtoken")) { + // looks like our session expired. + app.getEditTokenStorage().clearAllTokens(); + app.getCookieManager().clearAllCookies(); + + User user = app.getUserInfoStorage().getUser(); + new LoginTask(app, app.getPrimarySite(), user.getUsername(), user.getPassword()) { + @Override + public void onFinish(LoginResult result) { + assertEquals("Login failed!", "Success", result.getCode()); + try { + doSave(completionLatch); + } catch (Throwable throwable) { + fail("Retry failed: " + throwable.getMessage()); + } + } + }.execute(); + return; + } + } + if (!(caught instanceof HttpRequest.HttpRequestException)) { + throw new RuntimeException(caught); + } + } + }.execute(); + } + }); + } } diff --git a/wikipedia-it/src/main/java/org/wikipedia/test/TriggerAbuseFilterTest.java b/wikipedia-it/src/main/java/org/wikipedia/test/TriggerAbuseFilterTest.java index 91780be..5db83eb 100644 --- a/wikipedia-it/src/main/java/org/wikipedia/test/TriggerAbuseFilterTest.java +++ b/wikipedia-it/src/main/java/org/wikipedia/test/TriggerAbuseFilterTest.java @@ -19,6 +19,9 @@ startActivity(new Intent(), null, null); final PageTitle title = new PageTitle(null, "User:Yuvipandaaaaaaaa", new Site("test.wikipedia.org")); final String wikitext = "Testing Abusefilter by simply editing this page. Triggering rule 94 at " + System.currentTimeMillis(); + final WikipediaApp app = (WikipediaApp) getInstrumentation().getTargetContext().getApplicationContext(); + app.getEditTokenStorage().clearAllTokens(); + app.getCookieManager().clearAllCookies(); final CountDownLatch completionLatch = new CountDownLatch(1); runTestOnUiThread(new Runnable() { @Override @@ -41,6 +44,9 @@ startActivity(new Intent(), null, null); final PageTitle title = new PageTitle(null, "Test_page_for_app_testing/AbuseFilter", new Site("test.wikipedia.org")); final String wikitext = "== Section 2 ==\n\nTriggering AbuseFilter number 2 by saying poop many times at " + System.currentTimeMillis(); + final WikipediaApp app = (WikipediaApp) getInstrumentation().getTargetContext().getApplicationContext(); + app.getEditTokenStorage().clearAllTokens(); + app.getCookieManager().clearAllCookies(); final CountDownLatch completionLatch = new CountDownLatch(1); runTestOnUiThread(new Runnable() { @Override diff --git a/wikipedia-it/src/main/java/org/wikipedia/test/TriggerEditCaptchaTest.java b/wikipedia-it/src/main/java/org/wikipedia/test/TriggerEditCaptchaTest.java index 4be0494..de2af4a 100644 --- a/wikipedia-it/src/main/java/org/wikipedia/test/TriggerEditCaptchaTest.java +++ b/wikipedia-it/src/main/java/org/wikipedia/test/TriggerEditCaptchaTest.java @@ -19,6 +19,9 @@ startActivity(new Intent(), null, null); final PageTitle title = new PageTitle(null, "Test_page_for_app_testing/Captcha", new Site("test.wikipedia.org")); final String wikitext = "== Section 2 ==\n\nEditing by inserting an external link https://" + System.currentTimeMillis(); + final WikipediaApp app = (WikipediaApp) getInstrumentation().getTargetContext().getApplicationContext(); + app.getEditTokenStorage().clearAllTokens(); + app.getCookieManager().clearAllCookies(); final CountDownLatch completionLatch = new CountDownLatch(1); runTestOnUiThread(new Runnable() { @Override -- To view, visit https://gerrit.wikimedia.org/r/135058 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I809e34f40863c2f679a18010ed78cbd8e2fcb471 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: BearND <bsitzm...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits