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

Reply via email to