From 01a3a233a90a33e6c74b41c3024852e9f89fbd22 Mon Sep 17 00:00:00 2001 From: Sean Nemann Date: Thu, 31 May 2018 09:44:09 -0400 Subject: [PATCH] Added comments to isUserBlocked method and tests for the method --- .../mwapi/ApacheHttpClientMediaWikiApi.java | 5 ++ .../mwapi/ApacheHttpClientMediaWikiApiTest.kt | 54 +++++++++++++++++++ 2 files changed, 59 insertions(+) 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 13eb77e83..b78ad88ae 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 @@ -615,6 +615,10 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { }); } + /** + * Checks to see if a user is currently blocked + * @return whether or not the user is blocked + */ @Override public boolean isUserBlocked() { boolean userBlocked = false; @@ -626,6 +630,7 @@ public class ApacheHttpClientMediaWikiApi implements MediaWikiApi { .param("uiprop", "blockinfo") .get(); if(result != null) { + // the blockexpiry field will only be present if the user is currently blocked userBlocked = !result.getString("/api/query/userinfo/@blockexpiry").isEmpty(); } } catch (Exception e) { diff --git a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt index 686a90ef2..6f630ce1a 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/mwapi/ApacheHttpClientMediaWikiApiTest.kt @@ -223,6 +223,60 @@ class ApacheHttpClientMediaWikiApiTest { assertEquals(23, testObserver.values()[0]) } + @Test + fun isUserBlockedForInfinitelyBlockedUser() { + server.enqueue(MockResponse().setBody("")) + + val result = testObject.isUserBlocked(); + + assertBasicRequestParameters(server, "GET").let { userBlockedRequest -> + parseQueryParams(userBlockedRequest).let { body -> + assertEquals("xml", body["format"]) + assertEquals("query", body["action"]) + assertEquals("userinfo", body["meta"]) + assertEquals("blockinfo", body["uiprop"]) + } + } + + assertTrue(result) + } + + @Test + fun isUserBlockedForTimeBlockedUser() { + server.enqueue(MockResponse().setBody("")) + + val result = testObject.isUserBlocked(); + + assertBasicRequestParameters(server, "GET").let { userBlockedRequest -> + parseQueryParams(userBlockedRequest).let { body -> + assertEquals("xml", body["format"]) + assertEquals("query", body["action"]) + assertEquals("userinfo", body["meta"]) + assertEquals("blockinfo", body["uiprop"]) + } + } + + assertTrue(result) + } + + @Test + fun isUserBlockedForNotBlockedUser() { + server.enqueue(MockResponse().setBody("")) + + val result = testObject.isUserBlocked(); + + assertBasicRequestParameters(server, "GET").let { userBlockedRequest -> + parseQueryParams(userBlockedRequest).let { body -> + assertEquals("xml", body["format"]) + assertEquals("query", body["action"]) + assertEquals("userinfo", body["meta"]) + assertEquals("blockinfo", body["uiprop"]) + } + } + + assertFalse(result) + } + private fun assertBasicRequestParameters(server: MockWebServer, method: String): RecordedRequest = server.takeRequest().let { assertEquals("/", it.requestUrl.encodedPath()) assertEquals(method, it.method)