mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Move login client out of the data-client (#5476)
This commit is contained in:
parent
8789879f10
commit
0541aacdff
23 changed files with 195 additions and 234 deletions
|
|
@ -11,7 +11,7 @@ import org.mockito.Mock
|
|||
import org.mockito.MockitoAnnotations
|
||||
import org.wikipedia.dataclient.SharedPreferenceCookieManager
|
||||
import org.wikipedia.json.GsonMarshaller
|
||||
import org.wikipedia.login.LoginResult
|
||||
import fr.free.nrw.commons.auth.login.LoginResult
|
||||
|
||||
class CommonsAppAdapterUnitTest {
|
||||
|
||||
|
|
@ -80,13 +80,6 @@ class CommonsAppAdapterUnitTest {
|
|||
Assert.assertEquals(adapter.password, "test")
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testUpdateAccount() {
|
||||
adapter.updateAccount(result)
|
||||
verify(sessionManager).updateAccount(result)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetCookies() {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import org.wikipedia.dataclient.SharedPreferenceCookieManager;
|
|||
import org.wikipedia.dataclient.WikiSite;
|
||||
import org.wikipedia.dataclient.okhttp.TestStubInterceptor;
|
||||
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor;
|
||||
import org.wikipedia.login.LoginResult;
|
||||
|
||||
public class TestAppAdapter extends AppAdapter {
|
||||
|
||||
|
|
@ -50,10 +49,6 @@ public class TestAppAdapter extends AppAdapter {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAccount(@NonNull LoginResult result) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SharedPreferenceCookieManager getCookies() {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -8,13 +8,12 @@ import android.view.KeyEvent
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestAppAdapter
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.auth.login.LoginResult
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
|
|
@ -29,7 +28,6 @@ import org.robolectric.RobolectricTestRunner
|
|||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.fakes.RoboMenuItem
|
||||
import org.wikipedia.AppAdapter
|
||||
import org.wikipedia.login.LoginResult
|
||||
import java.lang.reflect.Method
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
package fr.free.nrw.commons.auth
|
||||
|
||||
import com.nhaarman.mockitokotlin2.verify
|
||||
import io.reactivex.Observable
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.ArgumentMatchers.anyString
|
||||
import org.mockito.InjectMocks
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.*
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.wikipedia.dataclient.Service
|
||||
import org.wikipedia.dataclient.mwapi.MwPostResponse
|
||||
import org.wikipedia.dataclient.mwapi.MwQueryResponse
|
||||
import org.wikipedia.dataclient.mwapi.MwQueryResult
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
class LogoutClientTest {
|
||||
|
||||
@Mock @field:[Inject Named("commons-service")]
|
||||
lateinit var service: Service
|
||||
|
||||
@InjectMocks
|
||||
var logoutClient: LogoutClient? = null
|
||||
|
||||
@Before
|
||||
@Throws(Exception::class)
|
||||
fun setUp() {
|
||||
MockitoAnnotations.openMocks(this)
|
||||
val mwQueryResponse = mock(MwQueryResponse::class.java)
|
||||
val mwQueryResult = mock(MwQueryResult::class.java)
|
||||
`when`(mwQueryResult!!.csrfToken()).thenReturn("test_token")
|
||||
`when`(mwQueryResponse.query()).thenReturn(mwQueryResult)
|
||||
`when`(service!!.csrfToken)
|
||||
.thenReturn(Observable.just(mwQueryResponse))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun postLogout() {
|
||||
`when`(service!!.postLogout(anyString())).thenReturn(Observable.just(mock(MwPostResponse::class.java)))
|
||||
logoutClient!!.postLogout()
|
||||
verify(service, times(1))!!.csrfToken
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import android.accounts.AccountManager
|
|||
import android.content.Context
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.auth.login.LoginResult
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
|
|
@ -17,7 +18,6 @@ import org.robolectric.RobolectricTestRunner
|
|||
import org.robolectric.Shadows.shadowOf
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
import org.wikipedia.login.LoginResult
|
||||
import java.lang.reflect.Method
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package fr.free.nrw.commons.auth.csrf
|
|||
|
||||
import com.google.gson.stream.MalformedJsonException
|
||||
import fr.free.nrw.commons.MockWebServerTest
|
||||
import fr.free.nrw.commons.auth.SessionManager
|
||||
import org.junit.Test
|
||||
import org.mockito.ArgumentMatchers.any
|
||||
import org.mockito.ArgumentMatchers.eq
|
||||
|
|
@ -16,8 +17,9 @@ import org.wikipedia.dataclient.okhttp.HttpStatusException
|
|||
|
||||
class CsrfTokenClientTest : MockWebServerTest() {
|
||||
private val wikiSite = WikiSite("test.wikipedia.org")
|
||||
private val subject = CsrfTokenClient(wikiSite)
|
||||
private val cb = mock(CsrfTokenClient.Callback::class.java)
|
||||
private val sessionManager = mock(SessionManager::class.java)
|
||||
private val subject = CsrfTokenClient(wikiSite, sessionManager)
|
||||
|
||||
@Test
|
||||
@Throws(Throwable::class)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
package fr.free.nrw.commons.login;
|
||||
|
||||
import android.net.Uri;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.stream.MalformedJsonException;
|
||||
import fr.free.nrw.commons.MockWebServerTest;
|
||||
import fr.free.nrw.commons.auth.login.LoginInterface;
|
||||
import io.reactivex.observers.TestObserver;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.wikipedia.dataclient.WikiSite;
|
||||
import org.wikipedia.dataclient.mwapi.MwQueryResponse;
|
||||
import org.wikipedia.json.NamespaceTypeAdapter;
|
||||
import org.wikipedia.json.PostProcessingTypeAdapter;
|
||||
import org.wikipedia.json.UriTypeAdapter;
|
||||
import org.wikipedia.json.WikiSiteTypeAdapter;
|
||||
import org.wikipedia.page.Namespace;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class UserExtendedInfoClientTest extends MockWebServerTest {
|
||||
|
||||
private LoginInterface apiService;
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Throwable {
|
||||
super.setUp();
|
||||
|
||||
apiService = new Retrofit.Builder()
|
||||
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
||||
.addConverterFactory(GsonConverterFactory.create(getGson()))
|
||||
.baseUrl(server().getUrl())
|
||||
.build()
|
||||
.create(LoginInterface.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestSuccess() throws Throwable {
|
||||
enqueueFromFile("user_extended_info.json");
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer
|
||||
.assertComplete()
|
||||
.assertNoErrors()
|
||||
.assertValue(
|
||||
result -> result.query().userInfo().id() == 24531888
|
||||
&& result.query().getUserResponse("USER").name().equals("USER")
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestResponse404() {
|
||||
enqueue404();
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer.assertError(Exception.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequestResponseMalformed() {
|
||||
enqueueMalformed();
|
||||
TestObserver<MwQueryResponse> observer = new TestObserver<>();
|
||||
|
||||
apiService.getUserInfo("USER").subscribe(observer);
|
||||
|
||||
observer.assertError(MalformedJsonException.class);
|
||||
}
|
||||
|
||||
private Gson getGson() {
|
||||
return new GsonBuilder()
|
||||
.registerTypeHierarchyAdapter(Uri.class, new UriTypeAdapter().nullSafe())
|
||||
.registerTypeHierarchyAdapter(Namespace.class, new NamespaceTypeAdapter().nullSafe())
|
||||
.registerTypeAdapter(WikiSite.class, new WikiSiteTypeAdapter().nullSafe())
|
||||
.registerTypeAdapterFactory(new PostProcessingTypeAdapter())
|
||||
.create();
|
||||
}
|
||||
}
|
||||
19
app/src/test/res/raw/user_extended_info.json
Normal file
19
app/src/test/res/raw/user_extended_info.json
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"batchcomplete": true,
|
||||
"query": {
|
||||
"users": [
|
||||
{
|
||||
"userid": 24531888,
|
||||
"name": "USER",
|
||||
"implicitgroups": [
|
||||
"*",
|
||||
"user"
|
||||
]
|
||||
}
|
||||
],
|
||||
"userinfo": {
|
||||
"id": 24531888,
|
||||
"name": "USER"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue