@@ -18,6 +18,7 @@ import org.robolectric.RobolectricTestRunner
1818import org.robolectric.RuntimeEnvironment
1919import org.robolectric.annotation.Config
2020import java.net.URLDecoder
21+ import java.text.SimpleDateFormat
2122import java.util.*
2223
2324@RunWith(RobolectricTestRunner ::class )
@@ -225,6 +226,86 @@ class ApacheHttpClientMediaWikiApiTest {
225226 assertEquals(23 , testObserver.values()[0 ])
226227 }
227228
229+ @Test
230+ fun isUserBlockedFromCommonsForInfinitelyBlockedUser () {
231+ server.enqueue(MockResponse ().setBody(" <?xml version=\" 1.0\" ?><api><query><userinfo id=\" 1000\" name=\" testusername\" blockid=\" 3000\" blockedby=\" blockerusername\" blockedbyid=\" 1001\" blockreason=\" testing\" blockedtimestamp=\" 2018-05-24T15:32:09Z\" blockexpiry=\" infinite\" ></userinfo></query></api>" ))
232+
233+ val result = testObject.isUserBlockedFromCommons();
234+
235+ assertBasicRequestParameters(server, " GET" ).let { userBlockedRequest ->
236+ parseQueryParams(userBlockedRequest).let { body ->
237+ assertEquals(" xml" , body[" format" ])
238+ assertEquals(" query" , body[" action" ])
239+ assertEquals(" userinfo" , body[" meta" ])
240+ assertEquals(" blockinfo" , body[" uiprop" ])
241+ }
242+ }
243+
244+ assertTrue(result)
245+ }
246+
247+ @Test
248+ fun isUserBlockedFromCommonsForTimeBlockedUser () {
249+ val currentDate = Date ()
250+ val expiredDate = Date (currentDate.time + 10000 )
251+ val dateFormat = SimpleDateFormat (" yyyy-MM-dd'T'HH:mm:ss'Z'" )
252+ dateFormat.setTimeZone(TimeZone .getTimeZone(" UTC" ))
253+ server.enqueue(MockResponse ().setBody(" <?xml version=\" 1.0\" ?><api><query><userinfo id=\" 1000\" name=\" testusername\" blockid=\" 3000\" blockedby=\" blockerusername\" blockedbyid=\" 1001\" blockreason=\" testing\" blockedtimestamp=\" 2018-05-24T15:32:09Z\" blockexpiry=\" " + dateFormat.format(expiredDate) + " \" ></userinfo></query></api>" ))
254+
255+ val result = testObject.isUserBlockedFromCommons();
256+
257+ assertBasicRequestParameters(server, " GET" ).let { userBlockedRequest ->
258+ parseQueryParams(userBlockedRequest).let { body ->
259+ assertEquals(" xml" , body[" format" ])
260+ assertEquals(" query" , body[" action" ])
261+ assertEquals(" userinfo" , body[" meta" ])
262+ assertEquals(" blockinfo" , body[" uiprop" ])
263+ }
264+ }
265+
266+ assertTrue(result)
267+ }
268+
269+ @Test
270+ fun isUserBlockedFromCommonsForExpiredBlockedUser () {
271+ val currentDate = Date ()
272+ val expiredDate = Date (currentDate.time - 10000 )
273+ val dateFormat = SimpleDateFormat (" yyyy-MM-dd'T'HH:mm:ss'Z'" )
274+ dateFormat.setTimeZone(TimeZone .getTimeZone(" UTC" ))
275+ server.enqueue(MockResponse ().setBody(" <?xml version=\" 1.0\" ?><api><query><userinfo id=\" 1000\" name=\" testusername\" blockid=\" 3000\" blockedby=\" blockerusername\" blockedbyid=\" 1001\" blockreason=\" testing\" blockedtimestamp=\" 2018-05-24T15:32:09Z\" blockexpiry=\" " + dateFormat.format(expiredDate) + " \" ></userinfo></query></api>" ))
276+
277+ val result = testObject.isUserBlockedFromCommons();
278+
279+ assertBasicRequestParameters(server, " GET" ).let { userBlockedRequest ->
280+ parseQueryParams(userBlockedRequest).let { body ->
281+ assertEquals(" xml" , body[" format" ])
282+ assertEquals(" query" , body[" action" ])
283+ assertEquals(" userinfo" , body[" meta" ])
284+ assertEquals(" blockinfo" , body[" uiprop" ])
285+ }
286+ }
287+
288+ assertFalse(result)
289+ }
290+
291+ @Test
292+ fun isUserBlockedFromCommonsForNotBlockedUser () {
293+ server.enqueue(MockResponse ().setBody(" <?xml version=\" 1.0\" ?><api><query><userinfo id=\" 1000\" name=\" testusername\" ></userinfo></query></api>" ))
294+
295+ val result = testObject.isUserBlockedFromCommons();
296+
297+ assertBasicRequestParameters(server, " GET" ).let { userBlockedRequest ->
298+ parseQueryParams(userBlockedRequest).let { body ->
299+ assertEquals(" xml" , body[" format" ])
300+ assertEquals(" query" , body[" action" ])
301+ assertEquals(" userinfo" , body[" meta" ])
302+ assertEquals(" blockinfo" , body[" uiprop" ])
303+ }
304+ }
305+
306+ assertFalse(result)
307+ }
308+
228309 private fun assertBasicRequestParameters (server : MockWebServer , method : String ): RecordedRequest = server.takeRequest().let {
229310 assertEquals(" /" , it.requestUrl.encodedPath())
230311 assertEquals(method, it.method)
0 commit comments