From 946f4f2ac2b75cacf240bd7df102e9534b5c4d55 Mon Sep 17 00:00:00 2001 From: Mikel Date: Fri, 28 Jul 2017 16:22:16 +0100 Subject: [PATCH] Fix implementation of getUploadCount() and its test --- .../mwapi/ApacheHttpClientMediaWikiApi.java | 14 ++++++++++++-- .../mwapi/ApacheHttpClientMediaWikiApiTest.java | 9 +++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java index 6bb47be39..60fefe036 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApi.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons.mwapi; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; @@ -41,6 +42,8 @@ import timber.log.Timber; * @author Addshore */ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { + private String wikiMediaToolforgeUrl = "https://tools.wmflabs.org/"; + private static final String THUMB_SIZE = "640"; private AbstractHttpClient httpClient; private MWApi api; @@ -57,6 +60,11 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { api = new MWApi(apiURL, httpClient); } + @VisibleForTesting + public void setWikiMediaToolforgeUrl(String wikiMediaToolforgeUrl) { + this.wikiMediaToolforgeUrl = wikiMediaToolforgeUrl; + } + /** * @param username String * @param password String @@ -376,14 +384,16 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { @NonNull public Single getUploadCount(String userName) { final String uploadCountUrlTemplate = - "https://tools.wmflabs.org/urbanecmbot/uploadsbyuser/uploadsbyuser.py?user=%s"; + wikiMediaToolforgeUrl + "urbanecmbot/uploadsbyuser/uploadsbyuser.py"; return Single.fromCallable(() -> { String url = String.format( Locale.ENGLISH, uploadCountUrlTemplate, new PageTitle(userName).getText()); - HttpResponse response = Http.get(url).use(httpClient).asResponse(); + HttpResponse response = Http.get(url).use(httpClient) + .data("user", userName) + .asResponse(); String uploadCount = EntityUtils.toString(response.getEntity()).trim(); return Integer.parseInt(uploadCount); }); diff --git a/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java b/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java index 953cdc8d6..1d9db63c6 100644 --- a/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java +++ b/app/src/test/java/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.java @@ -41,6 +41,7 @@ public class ApacheHttpClientMediaWikiApiTest { public void setUp() throws Exception { server = new MockWebServer(); testObject = new ApacheHttpClientMediaWikiApi("http://" + server.getHostName() + ":" + server.getPort() + "/"); + testObject.setWikiMediaToolforgeUrl("http://" + server.getHostName() + ":" + server.getPort() + "/"); } @After @@ -198,10 +199,14 @@ public class ApacheHttpClientMediaWikiApiTest { } @Test - public void getUploadCount() { + public void getUploadCount() throws InterruptedException { server.enqueue(new MockResponse().setBody("23\n")); - TestObserver testObserver = testObject.getUploadCount("username").test(); + TestObserver testObserver = testObject.getUploadCount("testUsername").test(); + + RecordedRequest request = server.takeRequest(); + Map params = parseQueryParams(request); + assertEquals("testUsername", params.get("user")); assertEquals(1, testObserver.valueCount()); assertEquals(23, (int)testObserver.values().get(0));