Remove the data-client app adapter implementation (#5499)

* logErrorsInsteadOfCrashing only ever returned false, so remove it and simplify logger

* Removed unused getMediaWikiBaseUrl()

* Removed getDesiredLeadImageDp() from commons app adapter, since it's unused

* Inlined the isLoggedIn() method of the app adapter

* Inline the app adapter username/password

* Removed the unused getRestbaseUriFormat() from the commons app adapter

* Remove references to the data-client SharedPreferenceCookieManager

* Manage our own OkHttpClient and remove the AppAdapter implementation
This commit is contained in:
Paul Hawke 2024-01-30 19:21:43 -06:00 committed by GitHub
parent ab9e57f5be
commit 8db0b54929
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
57 changed files with 422 additions and 518 deletions

View file

@ -1,77 +0,0 @@
package fr.free.nrw.commons;
import androidx.annotation.NonNull;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.kvstore.JsonKvStore;
import okhttp3.OkHttpClient;
import org.wikipedia.AppAdapter;
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
import org.wikipedia.json.GsonMarshaller;
import org.wikipedia.json.GsonUnmarshaller;
public class CommonsAppAdapter extends AppAdapter {
private final int DEFAULT_THUMB_SIZE = 640;
private final String COOKIE_STORE_NAME = "cookie_store";
private final SessionManager sessionManager;
private final JsonKvStore preferences;
CommonsAppAdapter(@NonNull SessionManager sessionManager, @NonNull JsonKvStore preferences) {
this.sessionManager = sessionManager;
this.preferences = preferences;
}
@Override
public String getMediaWikiBaseUrl() {
return BuildConfig.COMMONS_URL;
}
@Override
public String getRestbaseUriFormat() {
return BuildConfig.COMMONS_URL;
}
@Override
public OkHttpClient getOkHttpClient() {
return OkHttpConnectionFactory.getClient();
}
@Override
public int getDesiredLeadImageDp() {
return DEFAULT_THUMB_SIZE;
}
@Override
public boolean isLoggedIn() {
return sessionManager.isUserLoggedIn();
}
@Override
public String getUserName() {
return sessionManager.getUserName();
}
@Override
public String getPassword() {
return sessionManager.getPassword();
}
@Override
public SharedPreferenceCookieManager getCookies() {
if (!preferences.contains(COOKIE_STORE_NAME)) {
return null;
}
return GsonUnmarshaller.unmarshal(SharedPreferenceCookieManager.class,
preferences.getString(COOKIE_STORE_NAME, null));
}
@Override
public void setCookies(@NonNull SharedPreferenceCookieManager cookies) {
preferences.putString(COOKIE_STORE_NAME, GsonMarshaller.marshal(cookies));
}
@Override
public boolean logErrorsInsteadOfCrashing() {
return false;
}
}

View file

@ -41,6 +41,7 @@ import fr.free.nrw.commons.media.CustomOkHttpNetworkFetcher;
import fr.free.nrw.commons.settings.Prefs;
import fr.free.nrw.commons.upload.FileUtils;
import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
import io.reactivex.Completable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.internal.functions.Functions;
@ -58,7 +59,6 @@ import org.acra.annotation.AcraCore;
import org.acra.annotation.AcraDialog;
import org.acra.annotation.AcraMailSender;
import org.acra.data.StringFormat;
import org.wikipedia.AppAdapter;
import org.wikipedia.language.AppLanguageLookUpTable;
import timber.log.Timber;
@ -94,6 +94,9 @@ public class CommonsApplication extends MultiDexApplication {
@Named("default_preferences")
JsonKvStore defaultPrefs;
@Inject
CommonsCookieJar cookieJar;
@Inject
CustomOkHttpNetworkFetcher customOkHttpNetworkFetcher;
@ -161,8 +164,6 @@ public class CommonsApplication extends MultiDexApplication {
.getCommonsApplicationComponent()
.inject(this);
AppAdapter.set(new CommonsAppAdapter(sessionManager, defaultPrefs));
initTimber();
if (!defaultPrefs.getBoolean("has_user_manually_removed_location")) {

View file

@ -1,9 +1,9 @@
package fr.free.nrw.commons;
import androidx.annotation.NonNull;
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
@ -15,28 +15,27 @@ import okhttp3.Response;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;
import okhttp3.logging.HttpLoggingInterceptor.Level;
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
import org.wikipedia.dataclient.okhttp.HttpStatusException;
import timber.log.Timber;
public final class OkHttpConnectionFactory {
private static final String CACHE_DIR_NAME = "okhttp-cache";
private static final long NET_CACHE_SIZE = 64 * 1024 * 1024;
@NonNull private static final Cache NET_CACHE = new Cache(new File(CommonsApplication.getInstance().getCacheDir(),
CACHE_DIR_NAME), NET_CACHE_SIZE);
@NonNull
private static final OkHttpClient CLIENT = createClient();
public static OkHttpClient CLIENT;
@NonNull public static OkHttpClient getClient() {
@NonNull public static OkHttpClient getClient(final CommonsCookieJar cookieJar) {
if (CLIENT == null) {
CLIENT = createClient(cookieJar);
}
return CLIENT;
}
@NonNull
private static OkHttpClient createClient() {
private static OkHttpClient createClient(final CommonsCookieJar cookieJar) {
return new OkHttpClient.Builder()
.cookieJar(SharedPreferenceCookieManager.getInstance())
.cache(NET_CACHE)
.cookieJar(cookieJar)
.cache(new Cache(new File(CommonsApplication.getInstance().getCacheDir(), CACHE_DIR_NAME), NET_CACHE_SIZE))
.connectTimeout(120, TimeUnit.SECONDS)
.writeTimeout(120, TimeUnit.SECONDS)
.readTimeout(120, TimeUnit.SECONDS)

View file

@ -2,8 +2,6 @@ package fr.free.nrw.commons.auth.csrf
import androidx.annotation.VisibleForTesting
import fr.free.nrw.commons.auth.SessionManager
import org.wikipedia.AppAdapter
import org.wikipedia.dataclient.SharedPreferenceCookieManager
import org.wikipedia.dataclient.mwapi.MwQueryResponse
import fr.free.nrw.commons.auth.login.LoginClient
import fr.free.nrw.commons.auth.login.LoginCallback
@ -19,7 +17,8 @@ import java.util.concurrent.Executors.newSingleThreadExecutor
class CsrfTokenClient(
private val sessionManager: SessionManager,
private val csrfTokenInterface: CsrfTokenInterface,
private val loginClient: LoginClient
private val loginClient: LoginClient,
private val logoutClient: LogoutClient
) {
private var retries = 0
private var csrfTokenCall: Call<MwQueryResponse?>? = null
@ -27,8 +26,8 @@ class CsrfTokenClient(
@Throws(Throwable::class)
fun getTokenBlocking(): String {
var token = ""
val userName = AppAdapter.get().getUserName()
val password = AppAdapter.get().getPassword()
val userName = sessionManager.userName ?: ""
val password = sessionManager.password ?: ""
for (retry in 0 until MAX_RETRIES_OF_LOGIN_BLOCKING) {
try {
@ -47,7 +46,7 @@ class CsrfTokenClient(
}
token = response.body()!!.query()!!.csrfToken()!!
if (AppAdapter.get().isLoggedIn() && token == ANON_TOKEN) {
if (sessionManager.isUserLoggedIn && token == ANON_TOKEN) {
throw RuntimeException("App believes we're logged in, but got anonymous token.")
}
break
@ -66,7 +65,7 @@ class CsrfTokenClient(
fun request(service: CsrfTokenInterface, cb: Callback): Call<MwQueryResponse?> =
requestToken(service, object : Callback {
override fun success(token: String?) {
if (AppAdapter.get().isLoggedIn() && token == ANON_TOKEN) {
if (sessionManager.isUserLoggedIn && token == ANON_TOKEN) {
retryWithLogin(cb) {
RuntimeException("App believes we're logged in, but got anonymous token.")
}
@ -102,11 +101,11 @@ class CsrfTokenClient(
}
private fun retryWithLogin(callback: Callback, caught: () -> Throwable?) {
val userName = AppAdapter.get().getUserName()
val password = AppAdapter.get().getPassword()
val userName = sessionManager.userName
val password = sessionManager.password
if (retries < MAX_RETRIES && !userName.isNullOrEmpty() && !password.isNullOrEmpty()) {
retries++
SharedPreferenceCookieManager.getInstance().clearAllCookies()
logoutClient.logout()
login(userName, password, callback) {
Timber.i("retrying...")
cancel()

View file

@ -0,0 +1,8 @@
package fr.free.nrw.commons.auth.csrf
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieStorage
import javax.inject.Inject
class LogoutClient @Inject constructor(private val store: CommonsCookieStorage) {
fun logout() = store.clear()
}

View file

@ -257,8 +257,8 @@ public class CommonsApplicationModule {
@Named("username")
@Provides
public String provideLoggedInUsername() {
return Objects.toString(AppAdapter.get().getUserName(), "");
public String provideLoggedInUsername(SessionManager sessionManager) {
return Objects.toString(sessionManager.getUserName(), "");
}
@Provides

View file

@ -12,7 +12,10 @@ import fr.free.nrw.commons.actions.PageEditClient;
import fr.free.nrw.commons.actions.PageEditInterface;
import fr.free.nrw.commons.actions.ThanksInterface;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient;
import fr.free.nrw.commons.auth.csrf.CsrfTokenInterface;
import fr.free.nrw.commons.auth.csrf.LogoutClient;
import fr.free.nrw.commons.auth.login.LoginClient;
import fr.free.nrw.commons.auth.login.LoginInterface;
import fr.free.nrw.commons.category.CategoryInterface;
import fr.free.nrw.commons.explore.depictions.DepictsClient;
@ -30,6 +33,8 @@ import fr.free.nrw.commons.upload.WikiBaseInterface;
import fr.free.nrw.commons.upload.depicts.DepictsInterface;
import fr.free.nrw.commons.wikidata.CommonsServiceFactory;
import fr.free.nrw.commons.wikidata.WikidataInterface;
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieJar;
import fr.free.nrw.commons.wikidata.cookies.CommonsCookieStorage;
import java.io.File;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
@ -40,11 +45,8 @@ import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import okhttp3.logging.HttpLoggingInterceptor.Level;
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient;
import org.wikipedia.AppAdapter;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.json.GsonUtil;
import fr.free.nrw.commons.auth.login.LoginClient;
import timber.log.Timber;
@Module
@ -78,8 +80,8 @@ public class NetworkingModule {
@Provides
@Singleton
public CommonsServiceFactory serviceFactory() {
return new CommonsServiceFactory(AppAdapter.get().getOkHttpClient());
public CommonsServiceFactory serviceFactory(CommonsCookieJar cookieJar) {
return new CommonsServiceFactory(OkHttpConnectionFactory.getClient(cookieJar));
}
@Provides
@ -107,12 +109,27 @@ public class NetworkingModule {
gson);
}
@Provides
@Singleton
public CommonsCookieStorage provideCookieStorage(
@Named("default_preferences") JsonKvStore preferences) {
CommonsCookieStorage cookieStorage = new CommonsCookieStorage(preferences);
cookieStorage.load();
return cookieStorage;
}
@Provides
@Singleton
public CommonsCookieJar provideCookieJar(CommonsCookieStorage storage) {
return new CommonsCookieJar(storage);
}
@Named(NAMED_COMMONS_CSRF)
@Provides
@Singleton
public CsrfTokenClient provideCommonsCsrfTokenClient(SessionManager sessionManager,
CsrfTokenInterface tokenInterface, LoginClient loginClient) {
return new CsrfTokenClient(sessionManager, tokenInterface, loginClient);
CsrfTokenInterface tokenInterface, LoginClient loginClient, LogoutClient logoutClient) {
return new CsrfTokenClient(sessionManager, tokenInterface, loginClient, logoutClient);
}
@Provides

View file

@ -0,0 +1,98 @@
package fr.free.nrw.commons.wikidata.cookies
import okhttp3.Cookie
import okhttp3.CookieJar
import okhttp3.HttpUrl
class CommonsCookieJar(private val cookieStorage: CommonsCookieStorage) : CookieJar {
override fun loadForRequest(url: HttpUrl): List<Cookie> {
val cookieList = mutableListOf<Cookie>()
val domain: String = url.toUri().getAuthority()
cookieStorage.domains.forEach { domainSpec ->
if (domain.endsWith(domainSpec, true)) {
buildCookieList(cookieList, cookieStorage[domainSpec], null)
} else if (domainSpec.endsWith("commons.wikimedia.org")) {
// For sites outside the wikipedia.org domain, transfer the centralauth cookies
// from commons.wikimedia.org unconditionally.
buildCookieList(cookieList, cookieStorage[domainSpec], "centralauth_")
}
}
return cookieList
}
override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
if (cookies.isEmpty()) {
return
}
var cookieJarModified = false
cookies.forEach { cookie ->
// Default to the URI's domain if cookie's domain is not explicitly set
val domainSpec = cookie.domainSpec(url)
if (!cookieStorage.contains(domainSpec)) {
cookieStorage[domainSpec] = mutableListOf()
}
val cookieList = cookieStorage[domainSpec]
if (cookie.expiredOrDeleted()) {
cookieJarModified = cookieList.removeAll { it.name == cookie.name }
} else {
val i = cookieList.iterator()
var exists = false
while (i.hasNext()) {
val c = i.next()
if (c == cookie) {
// an identical cookie already exists, so we don't need to update it.
exists = true
break
} else if (c.name == cookie.name) {
// it's a cookie with the same name, but different contents, so remove the
// current cookie, so that the new one will be added.
i.remove()
}
}
if (!exists) {
cookieList.add(cookie)
cookieJarModified = true
}
}
cookieStorage[domainSpec] = cookieList
}
if (cookieJarModified) {
cookieStorage.save()
}
}
private fun buildCookieList(
outList: MutableList<Cookie>, inList: MutableList<Cookie>, prefix: String?
) {
var cookieJarModified = false
val i = inList.iterator()
while (i.hasNext()) {
val cookie = i.next()
if (prefix != null && !cookie.name.startsWith(prefix)) {
continue
}
// But wait, is the cookie expired?
if (cookie.expiresAt < System.currentTimeMillis()) {
i.remove()
cookieJarModified = true
} else {
outList.add(cookie)
}
}
if (cookieJarModified) {
cookieStorage.save()
}
}
private fun Cookie.expiredOrDeleted(): Boolean =
expiresAt < System.currentTimeMillis() || "deleted" == value
private fun Cookie.domainSpec(url: HttpUrl): String =
domain.ifEmpty { url.toUri().getAuthority() }
}

View file

@ -0,0 +1,93 @@
package fr.free.nrw.commons.wikidata.cookies
import com.google.gson.GsonBuilder
import com.google.gson.TypeAdapter
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonWriter
import fr.free.nrw.commons.kvstore.JsonKvStore
import okhttp3.Cookie
import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import org.wikipedia.dataclient.WikiSite
private const val COOKIE_STORE = "cookie_store"
class CommonsCookieStorage(private val preferences: JsonKvStore? = null) {
private val gson = GsonBuilder().registerTypeAdapter(
CommonsCookieStorage::class.java,
CookieStorageTypeAdapter()
).create()
private val cookieMap: MutableMap<String, List<Cookie>> = mutableMapOf()
val domains : Set<String> get() = cookieMap.keys.toSet()
operator fun set(domainSpec: String, cookies: MutableList<Cookie>) =
cookieMap.put(domainSpec, cookies.toList())
operator fun get(domainSpec: String): MutableList<Cookie> =
cookieMap[domainSpec]?.toMutableList() ?: mutableListOf()
fun clear() {
cookieMap.clear()
save()
}
fun load() {
cookieMap.clear()
val json = preferences!!.getString(COOKIE_STORE, null)
if (!json.isNullOrEmpty()) {
val serializedData = gson.fromJson(json, CommonsCookieStorage::class.java)
cookieMap.putAll(serializedData.cookieMap)
}
}
fun save() =
preferences!!.putString(COOKIE_STORE, gson.toJson(this))
fun contains(domainSpec: String): Boolean =
cookieMap.containsKey(domainSpec)
companion object {
fun from(map: Map<String, List<Cookie>>) = CommonsCookieStorage().apply {
cookieMap.clear()
cookieMap.putAll(map)
}
}
}
private class CookieStorageTypeAdapter : TypeAdapter<CommonsCookieStorage>() {
override fun write(out: JsonWriter, value: CommonsCookieStorage) {
out.beginObject()
value.domains.forEach { domain ->
out.name(domain).beginArray()
value[domain].forEach { out.value(it.toString()) }
out.endArray()
}
out.endObject()
}
override fun read(input: JsonReader): CommonsCookieStorage {
val map = mutableMapOf<String, List<Cookie>>()
input.beginObject()
while (input.hasNext()) {
val key = input.nextName()
map[key] = input.readCookies((WikiSite.DEFAULT_SCHEME + "://" + key).toHttpUrlOrNull())
}
input.endObject()
return CommonsCookieStorage.from(map)
}
private fun JsonReader.readCookies(url: HttpUrl?): MutableList<Cookie> {
val list = mutableListOf<Cookie>()
beginArray()
while (hasNext()) {
val str = nextString()
url?.let {
val element: Cookie? = Cookie.parse(url, str)
element?.let { list += element }
}
}
endArray()
return list
}
}

View file

@ -1,103 +0,0 @@
package fr.free.nrw.commons
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.kvstore.JsonKvStore
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.wikipedia.dataclient.SharedPreferenceCookieManager
import org.wikipedia.json.GsonMarshaller
import fr.free.nrw.commons.auth.login.LoginResult
class CommonsAppAdapterUnitTest {
private lateinit var adapter: CommonsAppAdapter
@Mock
private lateinit var sessionManager: SessionManager
@Mock
private lateinit var preferences: JsonKvStore
@Mock
private lateinit var result: LoginResult
@Mock
private lateinit var cookies: SharedPreferenceCookieManager
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
adapter = CommonsAppAdapter(sessionManager, preferences)
}
@Test
@Throws(Exception::class)
fun checkAdapterNotNull() {
Assert.assertNotNull(adapter)
}
@Test
@Throws(Exception::class)
fun testGetMediaWikiBaseUrl() {
Assert.assertEquals(adapter.mediaWikiBaseUrl, BuildConfig.COMMONS_URL)
}
@Test
@Throws(Exception::class)
fun testGetRestbaseUriFormat() {
Assert.assertEquals(adapter.restbaseUriFormat, BuildConfig.COMMONS_URL)
}
@Test
@Throws(Exception::class)
fun testGetDesiredLeadImageDp() {
Assert.assertEquals(adapter.desiredLeadImageDp, 640)
}
@Test
@Throws(Exception::class)
fun testIsLoggedIn() {
whenever(sessionManager.isUserLoggedIn).thenReturn(true)
Assert.assertEquals(adapter.isLoggedIn, true)
}
@Test
@Throws(Exception::class)
fun testGetUserName() {
whenever(sessionManager.userName).thenReturn("test")
Assert.assertEquals(adapter.userName, "test")
}
@Test
@Throws(Exception::class)
fun testGetPassword() {
whenever(sessionManager.password).thenReturn("test")
Assert.assertEquals(adapter.password, "test")
}
@Test
@Throws(Exception::class)
fun testSetCookies() {
adapter.cookies = cookies
verify(preferences).putString("cookie_store", GsonMarshaller.marshal(cookies))
}
@Test
@Throws(Exception::class)
fun testLogErrorsInsteadOfCrashing() {
Assert.assertEquals(adapter.logErrorsInsteadOfCrashing(), false)
}
@Test
@Throws(Exception::class)
fun testGetCookiesCaseNull() {
whenever(preferences.contains("cookie_store")).thenReturn(false)
Assert.assertEquals(adapter.cookies, null)
}
}

View file

@ -1,5 +1,7 @@
package fr.free.nrw.commons;
import static fr.free.nrw.commons.TestConnectionFactoryKt.createTestClient;
import androidx.annotation.NonNull;
import java.util.List;
import java.util.concurrent.AbstractExecutorService;
@ -12,7 +14,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.wikipedia.AppAdapter;
import org.wikipedia.json.GsonUtil;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@ -23,9 +24,9 @@ public abstract class MockWebServerTest {
private final TestWebServer server = new TestWebServer();
@Before public void setUp() throws Throwable {
AppAdapter.set(new TestAppAdapter());
OkHttpClient.Builder builder = AppAdapter.get().getOkHttpClient().newBuilder();
okHttpClient = builder.dispatcher(new Dispatcher(new ImmediateExecutorService())).build();
OkHttpConnectionFactory.CLIENT = createTestClient();
okHttpClient = OkHttpConnectionFactory.CLIENT.newBuilder()
.dispatcher(new Dispatcher(new ImmediateExecutorService())).build();
server.setUp();
}

View file

@ -1,65 +0,0 @@
package fr.free.nrw.commons;
import androidx.annotation.NonNull;
import fr.free.nrw.commons.wikidata.WikidataConstants;
import okhttp3.OkHttpClient;
import org.wikipedia.AppAdapter;
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
import org.wikipedia.dataclient.okhttp.TestStubInterceptor;
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor;
public class TestAppAdapter extends AppAdapter {
@Override
public String getMediaWikiBaseUrl() {
return WikidataConstants.WIKIPEDIA_URL;
}
@Override
public String getRestbaseUriFormat() {
return "%1$s://%2$s/api/rest_v1/";
}
@Override
public OkHttpClient getOkHttpClient() {
return new OkHttpClient.Builder()
.addInterceptor(new UnsuccessfulResponseInterceptor())
.addInterceptor(new TestStubInterceptor())
.build();
}
@Override
public int getDesiredLeadImageDp() {
return 0;
}
@Override
public boolean isLoggedIn() {
return false;
}
@Override
public String getUserName() {
return null;
}
@Override
public String getPassword() {
return null;
}
@Override
public SharedPreferenceCookieManager getCookies() {
return null;
}
@Override
public void setCookies(@NonNull SharedPreferenceCookieManager cookies) {
}
@Override
public boolean logErrorsInsteadOfCrashing() {
return false;
}
}

View file

@ -0,0 +1,10 @@
package fr.free.nrw.commons
import okhttp3.OkHttpClient
import org.wikipedia.dataclient.okhttp.TestStubInterceptor
import org.wikipedia.dataclient.okhttp.UnsuccessfulResponseInterceptor
fun createTestClient(): OkHttpClient = OkHttpClient.Builder()
.addInterceptor(UnsuccessfulResponseInterceptor())
.addInterceptor(TestStubInterceptor())
.build()

View file

@ -10,9 +10,10 @@ import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.auth.login.LoginResult
import fr.free.nrw.commons.kvstore.JsonKvStore
import org.junit.Assert
@ -27,7 +28,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@ -74,7 +74,7 @@ class LoginActivityUnitTests {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()
context = ApplicationProvider.getApplicationContext()
menuItem = RoboMenuItem(null)

View file

@ -19,7 +19,8 @@ class CsrfTokenClientTest : MockWebServerTest() {
private val sessionManager = mock(SessionManager::class.java)
private val tokenInterface = mock(CsrfTokenInterface::class.java)
private val loginClient = mock(LoginClient::class.java)
private val subject = CsrfTokenClient(sessionManager, tokenInterface, loginClient)
private val logoutClient = mock(LogoutClient::class.java)
private val subject = CsrfTokenClient(sessionManager, tokenInterface, loginClient, logoutClient)
@Test
@Throws(Throwable::class)

View file

@ -15,9 +15,10 @@ import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.explore.ParentViewPager
@ -35,7 +36,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
@RunWith(RobolectricTestRunner::class)
@ -84,7 +84,7 @@ class BookmarkListRootFragmentUnitTest {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
context = ApplicationProvider.getApplicationContext()

View file

@ -12,9 +12,10 @@ import androidx.fragment.app.FragmentTransaction
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.category.CategoryItem
import fr.free.nrw.commons.profile.ProfileActivity
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
@ -28,7 +29,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
import java.util.*
@ -78,7 +78,7 @@ class BookmarkItemsFragmentUnitTest {
fun setUp() {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = BookmarkItemsFragment.newInstance()
val fragmentManager: FragmentManager = activity.supportFragmentManager

View file

@ -12,9 +12,10 @@ import androidx.fragment.app.FragmentTransaction
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.contributions.ContributionController
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.nearby.Place
@ -32,7 +33,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -98,7 +98,7 @@ class BookmarkLocationFragmentUnitTests {
fun setUp() {
MockitoAnnotations.initMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = BookmarkLocationsFragment.newInstance()
val fragmentManager: FragmentManager = activity.supportFragmentManager

View file

@ -19,9 +19,10 @@ import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.category.GridViewAdapter
import fr.free.nrw.commons.media.MediaClient
import fr.free.nrw.commons.profile.ProfileActivity
@ -38,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@ -89,7 +89,7 @@ class BookmarkPicturesFragmentUnitTests {
fun setUp() {
MockitoAnnotations.initMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = BookmarkPicturesFragment.newInstance()
val fragmentManager: FragmentManager = activity.supportFragmentManager

View file

@ -2,10 +2,11 @@ package fr.free.nrw.commons.campaigns
import android.app.Activity
import android.view.View
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.campaigns.models.Campaign
import fr.free.nrw.commons.contributions.MainActivity
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@ -16,7 +17,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.android.controller.ActivityController
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -35,7 +35,7 @@ class CampaignViewUnitTests {
fun setUp() {
MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activityController = Robolectric.buildActivity(Activity::class.java)
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()

View file

@ -4,8 +4,9 @@ import android.content.Context
import android.view.Menu
import android.view.MenuItem
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
import org.junit.Assert
import org.junit.Before
@ -18,7 +19,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.fakes.RoboMenu
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
@RunWith(RobolectricTestRunner::class)
@ -41,7 +41,7 @@ class CategoryDetailsActivityUnitTests {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
context = ApplicationProvider.getApplicationContext()

View file

@ -9,9 +9,10 @@ import android.widget.TextView
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.campaigns.CampaignView
import fr.free.nrw.commons.campaigns.models.Campaign
import fr.free.nrw.commons.kvstore.JsonKvStore
@ -38,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -99,7 +99,7 @@ class ContributionsFragmentUnitTests {
fun setUp() {
MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
context = ApplicationProvider.getApplicationContext()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()

View file

@ -8,23 +8,23 @@ import androidx.lifecycle.Lifecycle
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.android.material.floatingactionbutton.FloatingActionButton
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.upload.WikidataPlace
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
import fr.free.nrw.commons.R
import org.mockito.Mockito.mock
@RunWith(AndroidJUnit4::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -41,7 +41,7 @@ class ContributionsListFragmentUnitTests {
@Before
fun setUp() {
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
scenario = launchFragmentInContainer(
initialState = Lifecycle.State.RESUMED,

View file

@ -10,9 +10,10 @@ import androidx.test.core.app.ApplicationProvider
import androidx.work.Configuration
import androidx.work.testing.WorkManagerTestInitHelper
import fr.free.nrw.commons.CommonsApplication
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.bookmarks.BookmarkFragment
import fr.free.nrw.commons.contributions.MainActivity.ActiveFragment
import fr.free.nrw.commons.explore.ExploreFragment
@ -36,7 +37,6 @@ import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Method
@ -85,7 +85,7 @@ class MainActivityUnitTests {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
activity.applicationKvStore = applicationKvStore

View file

@ -6,8 +6,9 @@ import android.view.MotionEvent
import android.view.View
import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.TestUtility.setFinalStatic
import org.junit.Before
import org.junit.Test
@ -15,12 +16,8 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.reflect.Whitebox
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Modifier
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -46,8 +43,7 @@ internal class OnSwipeTouchListenerTest {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
AppAdapter.set(TestAppAdapter())
// motionEvent1 = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 15.0f, 10.0f, 0);
OkHttpConnectionFactory.CLIENT = createTestClient()
context = ApplicationProvider.getApplicationContext()
onSwipeTouchListener = OnSwipeTouchListener(context)

View file

@ -3,11 +3,11 @@ package fr.free.nrw.commons.customselector.ui.selector
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.customselector.model.Image
import fr.free.nrw.commons.customselector.ui.adapter.ImageAdapter
import kotlinx.android.synthetic.main.bottom_sheet_nearby.bottom_sheet
import org.junit.Before
import org.junit.Test
import org.junit.jupiter.api.Assertions.assertEquals
@ -19,7 +19,6 @@ import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Method
@ -46,7 +45,7 @@ class CustomSelectorActivityTest {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java)
.get()

View file

@ -5,7 +5,6 @@ import android.os.Bundle
import android.os.Looper
import android.view.LayoutInflater
import android.view.View
import fr.free.nrw.commons.customselector.model.Result
import android.widget.ProgressBar
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
@ -13,10 +12,12 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ApplicationProvider
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.customselector.model.CallbackStatus
import fr.free.nrw.commons.customselector.model.Result
import fr.free.nrw.commons.customselector.ui.adapter.FolderAdapter
import org.junit.Before
import org.junit.Test
@ -30,7 +31,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
/**
@ -62,7 +62,7 @@ class FolderFragmentTest {
fun setUp() {
MockitoAnnotations.initMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()
Fresco.initialize(context)
val activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()

View file

@ -15,9 +15,10 @@ import androidx.test.core.app.ApplicationProvider
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.customselector.model.CallbackStatus
import fr.free.nrw.commons.customselector.model.Image
import fr.free.nrw.commons.customselector.model.Result
@ -35,7 +36,6 @@ import org.robolectric.Shadows
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
/**
@ -74,7 +74,7 @@ class ImageFragmentTest {
fun setUp(){
MockitoAnnotations.initMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()
Fresco.initialize(context)
activity = Robolectric.buildActivity(CustomSelectorActivity::class.java).create().get()

View file

@ -7,17 +7,18 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
import com.google.android.material.tabs.TabLayout
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.contributions.MainActivity
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
@ -27,7 +28,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboMenu
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -56,7 +56,7 @@ class ExploreFragmentUnitTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
fragment = ExploreFragment()

View file

@ -11,9 +11,10 @@ import com.google.android.material.tabs.TabLayout
import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.times
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.explore.categories.media.CategoriesMediaFragment
import fr.free.nrw.commons.media.MediaDetailPagerFragment
@ -23,15 +24,14 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
@RunWith(RobolectricTestRunner::class)
@ -76,7 +76,7 @@ class ExploreListRootFragmentUnitTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
fragment = ExploreListRootFragment()

View file

@ -8,9 +8,10 @@ import androidx.fragment.app.FragmentManager
import androidx.test.core.app.ApplicationProvider
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.explore.depictions.media.DepictedImagesFragment
import fr.free.nrw.commons.media.MediaDetailPagerFragment
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
@ -28,7 +29,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboMenu
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -65,7 +65,7 @@ class WikidataItemDetailsActivityUnitTests {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val intent = Intent(
ApplicationProvider.getApplicationContext(),
WikidataItemDetailsActivity::class.java

View file

@ -12,10 +12,11 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.createTestClient
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@ -27,7 +28,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -67,7 +67,7 @@ class RecentSearchesFragmentUnitTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
fragment = RecentSearchesFragment()

View file

@ -3,20 +3,17 @@ package fr.free.nrw.commons.feedback
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.FakeContextWrapper
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.feedback.model.Feedback
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -29,7 +26,7 @@ class FeedbackContentCreatorUnitTests {
@Before
fun setup() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
context = FakeContextWrapper(ApplicationProvider.getApplicationContext())
}

View file

@ -5,20 +5,20 @@ import android.os.Looper.getMainLooper
import android.text.Editable
import androidx.test.core.app.ApplicationProvider
import com.nhaarman.mockitokotlin2.doReturn
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.TestUtility.setFinalStatic
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.databinding.DialogFeedbackBinding
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
@ -26,7 +26,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -45,7 +44,7 @@ class FeedbackDialogTests {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(MainActivity::class.java).create().get()

View file

@ -13,9 +13,10 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.profile.ProfileActivity
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment
@ -28,17 +29,14 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.doReturn
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowToast
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -84,7 +82,7 @@ class LeaderboardFragmentUnitTests {
MockitoAnnotations.initMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = LeaderboardFragment()

View file

@ -6,9 +6,10 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.auth.LoginActivity
import org.junit.Assert
import org.junit.Before
@ -20,7 +21,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
@ -49,7 +49,7 @@ class LoginActivityUnitTests {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(LoginActivity::class.java).create().get()

View file

@ -20,13 +20,14 @@ import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.drawee.generic.GenericDraweeHierarchy
import com.facebook.drawee.view.SimpleDraweeView
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.whenever
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.delete.DeleteHelper
import fr.free.nrw.commons.delete.ReasonBuilder
import fr.free.nrw.commons.explore.SearchActivity
@ -50,7 +51,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowActivity
import org.robolectric.shadows.ShadowIntent
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Method
import java.util.*
@ -154,7 +154,7 @@ class MediaDetailFragmentUnitTests {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()

View file

@ -17,8 +17,9 @@ import com.nhaarman.mockitokotlin2.never
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.explore.SearchActivity
import io.reactivex.android.plugins.RxAndroidPlugins
@ -37,7 +38,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Method
import java.util.concurrent.Callable
@ -77,7 +77,7 @@ class MediaDetailPagerFragmentUnitTests {
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()

View file

@ -6,8 +6,9 @@ import android.net.Uri
import androidx.test.core.app.ApplicationProvider
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.customselector.model.CallbackStatus
import fr.free.nrw.commons.customselector.model.Image
import fr.free.nrw.commons.customselector.model.Result
@ -22,7 +23,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
@RunWith(RobolectricTestRunner::class)
@ -44,7 +44,7 @@ class ZoomableActivityUnitTests {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
context = ApplicationProvider.getApplicationContext()
SoLoader.setInTestMode()
Fresco.initialize(context)

View file

@ -8,15 +8,15 @@ import android.os.Looper
import android.view.LayoutInflater
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.CommonsApplication
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.actions.PageEditClient
import fr.free.nrw.commons.feedback.model.Feedback
import fr.free.nrw.commons.kvstore.JsonKvStore
@ -38,7 +38,6 @@ import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowActivity
import org.robolectric.shadows.ShadowAlertDialog
import org.robolectric.shadows.ShadowDialog
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@ -63,7 +62,7 @@ class MoreBottomSheetFragmentUnitTests {
fun setUp() {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = MoreBottomSheetFragment()

View file

@ -8,10 +8,11 @@ import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatEditText
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.nearby.fragments.AdvanceQueryFragment
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
@ -19,8 +20,8 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
@ -28,7 +29,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@ -60,7 +60,7 @@ class AdvanceQueryFragmentUnitTests {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
fragment = AdvanceQueryFragment()

View file

@ -21,13 +21,13 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.mapbox.mapboxsdk.camera.CameraPosition
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
import com.mapbox.mapboxsdk.geometry.LatLng
import com.mapbox.mapboxsdk.maps.MapView
import com.mapbox.mapboxsdk.maps.MapboxMap
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao
import fr.free.nrw.commons.contributions.MainActivity
import fr.free.nrw.commons.kvstore.JsonKvStore
@ -53,7 +53,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowActivity
import org.robolectric.shadows.ShadowAlertDialog
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -132,7 +131,7 @@ class NearbyParentFragmentUnitTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(MainActivity::class.java).create().get()
fragment = NearbyParentFragment()

View file

@ -5,10 +5,11 @@ import android.content.Intent
import android.view.Menu
import android.view.MenuItem
import androidx.test.core.app.ApplicationProvider
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.ShadowActionBar
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.notification.models.Notification
import fr.free.nrw.commons.notification.models.NotificationType
import fr.free.nrw.commons.utils.NetworkUtils
@ -17,15 +18,14 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.fakes.RoboMenu
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Field
import java.lang.reflect.Method
@ -58,7 +58,7 @@ class NotificationActivityUnitTests {
networkUtils = mock(NetworkUtils::class.java)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val intent = Intent().putExtra("title", "read")

View file

@ -7,16 +7,13 @@ import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.test.core.app.ApplicationProvider
import com.dinuscxj.progressbar.CircleProgressBar
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.profile.ProfileActivity
import fr.free.nrw.commons.utils.ConfigUtils
@ -35,7 +32,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboMenuItem
import org.robolectric.shadows.ShadowToast
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@ -76,7 +72,8 @@ class AchievementsFragmentUnitTests {
context = ApplicationProvider.getApplicationContext()
menuItem = RoboMenuItem(context)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
val fragmentManager: FragmentManager = activity.supportFragmentManager
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()

View file

@ -4,19 +4,15 @@ import android.content.Context
import android.os.Looper.getMainLooper
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import androidx.test.core.app.ApplicationProvider
import butterknife.BindView
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.doNothing
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import io.reactivex.Scheduler
import fr.free.nrw.commons.createTestClient
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@ -25,7 +21,6 @@ import org.mockito.ArgumentMatchers
import org.mockito.Mock
import org.mockito.Mockito.*
import org.mockito.MockitoAnnotations
import org.mockito.Spy
import org.powermock.reflect.Whitebox
import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
@ -34,7 +29,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.fakes.RoboMenu
import org.robolectric.fakes.RoboMenuItem
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -70,7 +64,7 @@ class ReviewActivityTest {
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()

View file

@ -9,12 +9,13 @@ import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.delete.DeleteHelper
import org.junit.Assert.assertEquals
import media
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Before
import org.junit.Test
@ -29,7 +30,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowNotificationManager
import org.robolectric.shadows.ShadowToast
import org.wikipedia.AppAdapter
import org.wikipedia.dataclient.mwapi.MwQueryPage
import java.lang.reflect.Method
import java.util.*
@ -58,7 +58,7 @@ class ReviewControllerTest {
fun setUp() {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()
Fresco.initialize(context)
activity = Robolectric.buildActivity(ReviewActivity::class.java).create().get()

View file

@ -14,16 +14,16 @@ import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.soloader.SoLoader
import com.nhaarman.mockitokotlin2.doReturn
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
@ -32,7 +32,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -63,7 +62,7 @@ class ReviewImageFragmentTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
SoLoader.setInTestMode()
Fresco.initialize(context)

View file

@ -6,16 +6,16 @@ import androidx.test.core.app.ApplicationProvider
import androidx.work.Configuration
import androidx.work.testing.WorkManagerTestInitHelper
import fr.free.nrw.commons.CommonsApplication
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.contributions.ContributionController
import fr.free.nrw.commons.filepicker.UploadableFile
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment
import fr.free.nrw.commons.upload.license.MediaLicenseFragment
import org.junit.Assert
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
@ -26,7 +26,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@ -53,7 +52,7 @@ class UploadActivityUnitTests {
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val intent = Intent()
val list = ArrayList<UploadableFile>()
list.add(uploadableFile)

View file

@ -17,11 +17,11 @@ import androidx.test.core.app.ApplicationProvider
import com.google.android.material.textfield.TextInputLayout
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
import fr.free.nrw.commons.upload.UploadActivity
import fr.free.nrw.commons.upload.UploadBaseFragment
@ -39,7 +39,6 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -103,7 +102,7 @@ class UploadCategoriesFragmentUnitTests {
fun setUp() {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
fragment = UploadCategoriesFragment()
fragmentManager = activity.supportFragmentManager

View file

@ -17,9 +17,10 @@ import com.google.android.material.textfield.TextInputLayout
import com.nhaarman.mockitokotlin2.whenever
import depictedItem
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.ui.PasteSensitiveTextInputEditText
import fr.free.nrw.commons.upload.UploadActivity
@ -36,7 +37,6 @@ import org.robolectric.Robolectric
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -96,7 +96,7 @@ class DepictsFragmentUnitTests {
fun setUp() {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
fragment = DepictsFragment()

View file

@ -23,9 +23,10 @@ import com.mapbox.mapboxsdk.geometry.LatLng
import com.nhaarman.mockitokotlin2.mock
import fr.free.nrw.commons.LocationPicker.LocationPicker
import fr.free.nrw.commons.LocationPicker.LocationPickerActivity
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.R
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.kvstore.JsonKvStore
import fr.free.nrw.commons.nearby.Place
import fr.free.nrw.commons.upload.ImageCoordinates
@ -50,7 +51,6 @@ import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
import org.robolectric.shadows.ShadowActivity
import org.robolectric.shadows.ShadowIntent
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -115,7 +115,7 @@ class UploadMediaDetailFragmentUnitTest {
MockitoAnnotations.openMocks(this)
context = ApplicationProvider.getApplicationContext()
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
activity = Robolectric.buildActivity(UploadActivity::class.java).create().get()
layoutInflater = LayoutInflater.from(activity)

View file

@ -7,8 +7,9 @@ import androidx.test.core.app.ApplicationProvider
import com.facebook.imagepipeline.core.ImagePipelineFactory
import com.facebook.soloader.SoLoader
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.TestAppAdapter
import fr.free.nrw.commons.OkHttpConnectionFactory
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.createTestClient
import fr.free.nrw.commons.media.MediaClient
import io.reactivex.Single
import io.reactivex.disposables.CompositeDisposable
@ -22,7 +23,6 @@ import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.wikipedia.AppAdapter
import java.lang.reflect.Method
@RunWith(RobolectricTestRunner::class)
@ -46,7 +46,7 @@ class PicOfDayAppWidgetUnitTests {
@Before
fun setUp() {
AppAdapter.set(TestAppAdapter())
OkHttpConnectionFactory.CLIENT = createTestClient()
context = ApplicationProvider.getApplicationContext()
SoLoader.setInTestMode()
ImagePipelineFactory.initialize(context)