diff --git a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java index 3e1553e81a4..2cc2acef122 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -874,8 +874,6 @@ private void checkOcServer() { } else { Timber.e("Server check tried with OperationService unbound!"); } - //UseCaseHelper useCaseHelper = new UseCaseHelper(); - //Timber.d("Server info: " + useCaseHelper.getServerInfo(uri).toString()); } else { mServerStatusText = ""; diff --git a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java index 45be8f3a8c6..e71ae8adc9a 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java +++ b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java @@ -61,7 +61,6 @@ protected RemoteOperationResult doInBackground(Object... params) { if (params != null && params.length == 3) { String username = (String) params[1]; String password = (String) params[2]; - Timber.d("Server info : " + mUseCaseHelper.getServerInfo((String)params[0])); /// validate credentials accessing the root folder credentials = OwnCloudCredentialsFactory.newBasicCredentials( username, diff --git a/owncloudApp/src/main/java/com/owncloud/android/dependecyinjection/UseCaseModule.kt b/owncloudApp/src/main/java/com/owncloud/android/dependecyinjection/UseCaseModule.kt index 91a797359ff..994ba2bd9d7 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/dependecyinjection/UseCaseModule.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/dependecyinjection/UseCaseModule.kt @@ -23,8 +23,8 @@ import com.owncloud.android.domain.authentication.usecases.LoginAsyncUseCase import com.owncloud.android.domain.capabilities.usecases.GetCapabilitiesAsLiveDataUseCase import com.owncloud.android.domain.capabilities.usecases.GetStoredCapabilitiesUseCase import com.owncloud.android.domain.capabilities.usecases.RefreshCapabilitiesFromServerAsyncUseCase -import com.owncloud.android.domain.server.usecases.CheckPathExistenceUseCase -import com.owncloud.android.domain.server.usecases.GetServerInfoUseCase +import com.owncloud.android.domain.server.usecases.CheckPathExistenceAsyncUseCase +import com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase import com.owncloud.android.domain.sharing.sharees.GetShareesAsyncUseCase import com.owncloud.android.domain.sharing.shares.usecases.CreatePrivateShareAsyncUseCase import com.owncloud.android.domain.sharing.shares.usecases.CreatePublicShareAsyncUseCase @@ -34,7 +34,7 @@ import com.owncloud.android.domain.sharing.shares.usecases.EditPublicShareAsyncU import com.owncloud.android.domain.sharing.shares.usecases.GetShareAsLiveDataUseCase import com.owncloud.android.domain.sharing.shares.usecases.GetSharesAsLiveDataUseCase import com.owncloud.android.domain.sharing.shares.usecases.RefreshSharesFromServerAsyncUseCase -import com.owncloud.android.domain.user.usecases.GetUserInfoUseCase +import com.owncloud.android.domain.user.usecases.GetUserInfoAsyncUseCase import org.koin.dsl.module val useCaseModule = module { @@ -58,9 +58,9 @@ val useCaseModule = module { factory { DeleteShareAsyncUseCase(get()) } // User - factory { GetUserInfoUseCase(get()) } + factory { GetUserInfoAsyncUseCase(get()) } // Server - factory { CheckPathExistenceUseCase(get()) } - factory { GetServerInfoUseCase(get()) } + factory { CheckPathExistenceAsyncUseCase(get()) } + factory { GetServerInfoAsyncUseCase(get()) } } diff --git a/owncloudApp/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java b/owncloudApp/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java index b55f2d1fa0f..4f0f6d25aa3 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java +++ b/owncloudApp/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java @@ -43,7 +43,7 @@ * a value of {@link AuthenticationMethod}. */ @Deprecated -// TODO: Remove this operation. Get AuthenticationMethods from GetServerInfoUseCase +// TODO: Remove this operation. Get AuthenticationMethods from GetServerInfoAsyncUseCase public class DetectAuthenticationMethodOperation extends RemoteOperation { /** @@ -68,15 +68,18 @@ protected RemoteOperationResult run(OwnCloudClient client) // Step 1: check whether the root folder exists, following redirections RemoteOperationResult resultFromExistenceCheck = operation.execute(client); String redirectedLocation = resultFromExistenceCheck.getRedirectedLocation(); + Timber.d("Redirected location:" + redirectedLocation); while (redirectedLocation != null && redirectedLocation.length() > 0) { client.setBaseUri(Uri.parse(resultFromExistenceCheck.getRedirectedLocation())); resultFromExistenceCheck = operation.execute(client); redirectedLocation = resultFromExistenceCheck.getRedirectedLocation(); + Timber.d("Redirected location:" + redirectedLocation); } // Step 2: look for authentication methods if (resultFromExistenceCheck.getHttpCode() == HttpConstants.HTTP_UNAUTHORIZED) { String authenticateHeaders = resultFromExistenceCheck.getAuthenticateHeaders(); + Timber.d("Authentication Header:" + authenticateHeaders); if (authenticateHeaders.contains("basic")) { authenticationMethod = AuthenticationMethod.BASIC_HTTP_AUTH; } else if (authenticateHeaders.contains("bearer")) { diff --git a/owncloudApp/src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java b/owncloudApp/src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java index f5bc8165cc3..aabee0fb185 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java +++ b/owncloudApp/src/main/java/com/owncloud/android/operations/GetServerInfoOperation.java @@ -38,7 +38,7 @@ * Checks the existence of a configured ownCloud server in the URL, gets its version * and finds out what authentication method is needed to access files in it. * - * TODO: Remove this operation. Call {@link com.owncloud.android.domain.server.usecases.GetServerInfoUseCase} instead. + * TODO: Remove this operation. Call {@link com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase} instead. */ @Deprecated public class GetServerInfoOperation extends RemoteOperation { @@ -75,6 +75,7 @@ protected RemoteOperationResult run(OwnCloudClient client) { if (remoteStatusResult.isSuccess()) { // second: get authentication method required by the server mResultData.mVersion = remoteStatusResult.getData(); + Timber.d("Result code : " + remoteStatusResult.getCode()); mResultData.mIsSslConn = (remoteStatusResult.getCode() == ResultCode.OK_SSL); mResultData.mBaseUrl = normalizeProtocolPrefix(mUrl, mResultData.mIsSslConn); final RemoteOperationResult detectAuthResult = detectAuthorizationMethod(client); diff --git a/owncloudApp/src/main/java/com/owncloud/android/operations/common/UseCaseHelper.kt b/owncloudApp/src/main/java/com/owncloud/android/operations/common/UseCaseHelper.kt index d221f570907..0b60ebdab62 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/operations/common/UseCaseHelper.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/operations/common/UseCaseHelper.kt @@ -21,10 +21,10 @@ package com.owncloud.android.operations.common import com.owncloud.android.domain.UseCaseResult import com.owncloud.android.domain.authentication.usecases.LoginAsyncUseCase import com.owncloud.android.domain.server.model.ServerInfo -import com.owncloud.android.domain.server.usecases.CheckPathExistenceUseCase -import com.owncloud.android.domain.server.usecases.GetServerInfoUseCase +import com.owncloud.android.domain.server.usecases.CheckPathExistenceAsyncUseCase +import com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase import com.owncloud.android.domain.user.model.UserInfo -import com.owncloud.android.domain.user.usecases.GetUserInfoUseCase +import com.owncloud.android.domain.user.usecases.GetUserInfoAsyncUseCase import org.koin.core.KoinComponent import org.koin.core.inject @@ -33,18 +33,18 @@ import org.koin.core.inject * TODO: Remove this and call directly to usecases from ViewModel. */ class UseCaseHelper : KoinComponent { - private val getUserInfoUseCase: GetUserInfoUseCase by inject() - private val checkPathExistenceUseCase: CheckPathExistenceUseCase by inject() - private val getServerInfoUseCase: GetServerInfoUseCase by inject() + private val mGetUserInfoAsyncUseCase: GetUserInfoAsyncUseCase by inject() + private val mCheckPathExistenceAsyncUseCase: CheckPathExistenceAsyncUseCase by inject() + private val mGetServerInfoAsyncUseCase: GetServerInfoAsyncUseCase by inject() private val loginAsyncUseCase: LoginAsyncUseCase by inject() - fun getUserInfo(): UseCaseResult = getUserInfoUseCase.execute(Unit) + fun getUserInfo(): UseCaseResult = mGetUserInfoAsyncUseCase.execute(Unit) fun checkPathExistence(remotePath: String): UseCaseResult = - checkPathExistenceUseCase.execute(CheckPathExistenceUseCase.Params(remotePath, false)) + mCheckPathExistenceAsyncUseCase.execute(CheckPathExistenceAsyncUseCase.Params(remotePath, false)) fun getServerInfo(serverUrl: String): UseCaseResult = - getServerInfoUseCase.execute(GetServerInfoUseCase.Params(serverPath = serverUrl)) + mGetServerInfoAsyncUseCase.execute(GetServerInfoAsyncUseCase.Params(serverPath = serverUrl)) fun login(serverUrl: String, username: String, password: String) = loginAsyncUseCase.execute( diff --git a/owncloudApp/src/main/java/com/owncloud/android/presentation/viewmodels/authentication/OCAuthenticationViewModel.kt b/owncloudApp/src/main/java/com/owncloud/android/presentation/viewmodels/authentication/OCAuthenticationViewModel.kt index f46c0743fff..e4f0028fcae 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/presentation/viewmodels/authentication/OCAuthenticationViewModel.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/presentation/viewmodels/authentication/OCAuthenticationViewModel.kt @@ -23,14 +23,14 @@ package com.owncloud.android.presentation.viewmodels.authentication import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.owncloud.android.domain.authentication.usecases.LoginAsyncUseCase -import com.owncloud.android.domain.user.usecases.GetUserInfoUseCase +import com.owncloud.android.domain.user.usecases.GetUserInfoAsyncUseCase import com.owncloud.android.providers.CoroutinesDispatcherProvider import kotlinx.coroutines.launch import timber.log.Timber class OCAuthenticationViewModel( private val loginAsyncUseCase: LoginAsyncUseCase, - private val getUserInfoUseCase: GetUserInfoUseCase, + private val getUserInfoAsyncUseCase: GetUserInfoAsyncUseCase, private val coroutinesDispatcherProvider: CoroutinesDispatcherProvider ) : ViewModel() { fun login( @@ -52,7 +52,7 @@ class OCAuthenticationViewModel( fun getUserInfo() { viewModelScope.launch(coroutinesDispatcherProvider.io) { - val useCaseResult = getUserInfoUseCase.execute(Unit) + val useCaseResult = getUserInfoAsyncUseCase.execute(Unit) Timber.d(useCaseResult.toString()) } } diff --git a/owncloudData/src/main/java/com/owncloud/android/data/server/datasources/implementation/OCRemoteAnonymousDataSource.kt b/owncloudData/src/main/java/com/owncloud/android/data/server/datasources/implementation/OCRemoteAnonymousDataSource.kt index ef06a966bd1..6abf3a480bb 100644 --- a/owncloudData/src/main/java/com/owncloud/android/data/server/datasources/implementation/OCRemoteAnonymousDataSource.kt +++ b/owncloudData/src/main/java/com/owncloud/android/data/server/datasources/implementation/OCRemoteAnonymousDataSource.kt @@ -19,10 +19,8 @@ package com.owncloud.android.data.server.datasources.implementation -import android.net.Uri import com.owncloud.android.data.executeRemoteOperation import com.owncloud.android.data.server.datasources.RemoteAnonymousDatasource -import com.owncloud.android.data.server.network.OCAnonymousServerService import com.owncloud.android.domain.server.model.AuthenticationMethod import com.owncloud.android.lib.common.http.HttpConstants import com.owncloud.android.lib.common.operations.RemoteOperationResult diff --git a/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteAnonymousDatasourceTest.kt b/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteAnonymousDatasourceTest.kt index 20774dcd25a..5c6a9d4753c 100644 --- a/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteAnonymousDatasourceTest.kt +++ b/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteAnonymousDatasourceTest.kt @@ -1,8 +1,39 @@ +/** + * ownCloud Android client application + * + * @author Abel García de Prada + * Copyright (C) 2020 ownCloud GmbH. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package com.owncloud.android.data.server.datasources import com.owncloud.android.data.server.datasources.implementation.OCRemoteAnonymousDataSource import com.owncloud.android.data.server.network.OCAnonymousServerService +import com.owncloud.android.domain.server.model.AuthenticationMethod +import com.owncloud.android.lib.common.http.HttpConstants.HTTP_UNAUTHORIZED +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK_NO_SSL +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode.OK_SSL +import com.owncloud.android.lib.resources.status.OwnCloudVersion +import com.owncloud.android.testutil.OC_ServerInfo +import com.owncloud.android.utils.createRemoteOperationResultMock +import io.mockk.every import io.mockk.mockk +import io.mockk.verify +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull import org.junit.Before import org.junit.Test @@ -11,10 +42,156 @@ class OCRemoteAnonymousDatasourceTest { private val ocAnonymousService: OCAnonymousServerService = mockk() + private val OC_OWNCLOUD_VERSION = OwnCloudVersion("10.3.2") + private val basicAuthHeader = "basic realm=\"owncloud\", charset=\"utf-8\"" + private val bearerHeader = "bearer realm=\"owncloud\"" + private val redirectedLocation = "http://demo.owncloud.demo.com" + @Before fun init() { ocRemoteAnonymousDatasource = OCRemoteAnonymousDataSource(ocAnonymousService) } - //TODO: Test getAuthenticationMethod and getRemoteStatus + @Test + fun getAuthenticationMethodFollowRedirections() { + val checkPathExistenceResultFollowRedirectionMocked: RemoteOperationResult = + createRemoteOperationResultMock( + data = true, + isSuccess = true, + redirectedLocation = OC_ServerInfo.baseUrl + ) + val checkPathExistenceResultMocked: RemoteOperationResult = + createRemoteOperationResultMock( + data = true, + isSuccess = true, + resultCode = OK_SSL, + authenticationHeader = basicAuthHeader, + httpCode = HTTP_UNAUTHORIZED + ) + + every { + ocAnonymousService.checkPathExistence(redirectedLocation, false) + } returns checkPathExistenceResultFollowRedirectionMocked + + every { + ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) + } returns checkPathExistenceResultMocked + + val authenticationMethod = ocRemoteAnonymousDatasource.getAuthenticationMethod(redirectedLocation) + + assertNotNull(authenticationMethod) + assertEquals(AuthenticationMethod.BASIC_HTTP_AUTH, authenticationMethod) + + verify { ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) } + } + + @Test + fun getAuthenticationMethodBasic() { + val checkPathExistenceResultMocked: RemoteOperationResult = + createRemoteOperationResultMock( + data = true, + isSuccess = true, + resultCode = OK_SSL, + authenticationHeader = basicAuthHeader, + httpCode = HTTP_UNAUTHORIZED, + redirectedLocation = null + ) + + every { + ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) + } returns checkPathExistenceResultMocked + + val authenticationMethod = ocRemoteAnonymousDatasource.getAuthenticationMethod(OC_ServerInfo.baseUrl) + + assertNotNull(authenticationMethod) + assertEquals(AuthenticationMethod.BASIC_HTTP_AUTH, authenticationMethod) + + verify { ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) } + } + + @Test + fun getAuthenticationMethodBearer() { + val checkPathExistenceResultMocked: RemoteOperationResult = + createRemoteOperationResultMock( + data = true, + isSuccess = true, + resultCode = OK_SSL, + authenticationHeader = bearerHeader, + httpCode = HTTP_UNAUTHORIZED, + redirectedLocation = null + ) + + every { + ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) + } returns checkPathExistenceResultMocked + + val authenticationMethod = ocRemoteAnonymousDatasource.getAuthenticationMethod(OC_ServerInfo.baseUrl) + + assertNotNull(authenticationMethod) + assertEquals(AuthenticationMethod.BEARER_TOKEN, authenticationMethod) + + verify { ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) } + } + + @Test(expected = Exception::class) + fun getAuthenticationMethodException() { + every { + ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) + } throws Exception() + + val authenticationMethod = ocRemoteAnonymousDatasource.getAuthenticationMethod(OC_ServerInfo.baseUrl) + + assertNotNull(authenticationMethod) + assertEquals(AuthenticationMethod.BASIC_HTTP_AUTH, authenticationMethod) + + verify { ocAnonymousService.checkPathExistence(OC_ServerInfo.baseUrl, false) } + } + + @Test + fun getRemoteStatusIsSecureConnection() { + val remoteStatusResultMocked: RemoteOperationResult = + createRemoteOperationResultMock(data = OC_OWNCLOUD_VERSION, isSuccess = true, resultCode = OK_SSL) + + every { + ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) + } returns remoteStatusResultMocked + + val remoteStatus = ocRemoteAnonymousDatasource.getRemoteStatus(OC_ServerInfo.baseUrl) + + assertNotNull(remoteStatus) + assertEquals(Pair(OC_OWNCLOUD_VERSION, true), remoteStatus) + + verify { ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) } + } + + @Test + fun getRemoteStatusIsNotSecureConnection() { + val remoteStatusResultMocked: RemoteOperationResult = + createRemoteOperationResultMock(data = OC_OWNCLOUD_VERSION, isSuccess = true, resultCode = OK_NO_SSL) + + every { + ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) + } returns remoteStatusResultMocked + + val remoteStatus = ocRemoteAnonymousDatasource.getRemoteStatus(OC_ServerInfo.baseUrl) + + assertNotNull(remoteStatus) + assertEquals(Pair(OC_OWNCLOUD_VERSION, false), remoteStatus) + + verify { ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) } + } + + @Test(expected = Exception::class) + fun getRemoteStatusException() { + every { + ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) + } throws Exception() + + val remoteStatus = ocRemoteAnonymousDatasource.getRemoteStatus(OC_ServerInfo.baseUrl) + + assertNotNull(remoteStatus) + assertEquals(Pair(OC_OWNCLOUD_VERSION, true), remoteStatus) + + verify { ocAnonymousService.getRemoteStatus(OC_ServerInfo.baseUrl) } + } } diff --git a/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteServerDataSourceTest.kt b/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteServerDataSourceTest.kt index 3bce8bc3c48..45fe72a687d 100644 --- a/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteServerDataSourceTest.kt +++ b/owncloudData/src/test/java/com/owncloud/android/data/server/datasources/OCRemoteServerDataSourceTest.kt @@ -26,10 +26,12 @@ import com.owncloud.android.testutil.OC_ServerInfo import com.owncloud.android.utils.createRemoteOperationResultMock import io.mockk.every import io.mockk.mockk +import io.mockk.verify import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Before import org.junit.Test +import java.lang.Exception class OCRemoteServerDataSourceTest { private lateinit var ocRemoteServerDataSource: OCRemoteServerDataSource @@ -53,6 +55,8 @@ class OCRemoteServerDataSourceTest { assertNotNull(checkPathExistence) assertEquals(checkPathExistenceRemoteResult.data, checkPathExistence) + + verify { ocServerService.checkPathExistence(OC_ServerInfo.baseUrl, true) } } @Test @@ -67,5 +71,18 @@ class OCRemoteServerDataSourceTest { assertNotNull(checkPathExistence) assertEquals(checkPathExistenceRemoteResult.data, checkPathExistence) + + verify { ocServerService.checkPathExistence(OC_ServerInfo.baseUrl, true) } + } + + @Test(expected = Exception::class) + fun checkPathExistenceException() { + every { + ocServerService.checkPathExistence(OC_ServerInfo.baseUrl, true) + } throws Exception() + + ocRemoteServerDataSource.checkPathExistence(OC_ServerInfo.baseUrl, true) + + verify { ocServerService.checkPathExistence(OC_ServerInfo.baseUrl, true) } } } diff --git a/owncloudData/src/test/java/com/owncloud/android/data/user/datasources/mapper/RemoteUserInfoMapperTest.kt b/owncloudData/src/test/java/com/owncloud/android/data/user/datasources/mapper/RemoteUserInfoMapperTest.kt index 7ca3e5740b2..832e529fc6e 100644 --- a/owncloudData/src/test/java/com/owncloud/android/data/user/datasources/mapper/RemoteUserInfoMapperTest.kt +++ b/owncloudData/src/test/java/com/owncloud/android/data/user/datasources/mapper/RemoteUserInfoMapperTest.kt @@ -48,4 +48,9 @@ class RemoteUserInfoMapperTest { assertNotNull(userInfo) assertEquals(OC_UserInfo, userInfo) } + + @Test + fun checkToRemoteNull() { + assertNull(ocRemoteUserInfoMapper.toRemote(null)) + } } diff --git a/owncloudData/src/test/java/com/owncloud/android/utils/RemoteOperationMock.kt b/owncloudData/src/test/java/com/owncloud/android/utils/RemoteOperationMock.kt index 03d1087f012..46a2dc2cba1 100644 --- a/owncloudData/src/test/java/com/owncloud/android/utils/RemoteOperationMock.kt +++ b/owncloudData/src/test/java/com/owncloud/android/utils/RemoteOperationMock.kt @@ -1,15 +1,37 @@ +/** + * ownCloud Android client application + * + * @author David González Verdugo + * @author Abel García de Prada + * Copyright (C) 2020 ownCloud GmbH. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ package com.owncloud.android.utils import com.owncloud.android.lib.common.operations.RemoteOperationResult import io.mockk.every import io.mockk.mockk - fun createRemoteOperationResultMock( +fun createRemoteOperationResultMock( data: T, isSuccess: Boolean, httpPhrase: String? = null, resultCode: RemoteOperationResult.ResultCode? = null, - exception: Exception? = null + exception: Exception? = null, + authenticationHeader: String? = null, + httpCode: Int? = null, + redirectedLocation: String? = null ): RemoteOperationResult { val remoteOperationResult = mockk>(relaxed = true) @@ -29,5 +51,17 @@ import io.mockk.mockk every { remoteOperationResult.exception } returns exception } + if (authenticationHeader != null) { + every { remoteOperationResult.authenticateHeaders } returns authenticationHeader + } + + if (httpCode != null) { + every { remoteOperationResult.httpCode } returns httpCode + } + + if (redirectedLocation != null) { + every { remoteOperationResult.redirectedLocation } returns redirectedLocation + } + return remoteOperationResult } diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/BaseUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/BaseUseCase.kt similarity index 94% rename from owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/BaseUseCase.kt rename to owncloudDomain/src/main/java/com/owncloud/android/domain/BaseUseCase.kt index 9e7bfb00513..598ed7f2843 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/BaseUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/BaseUseCase.kt @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.owncloud.android.domain.sharing.shares.usecases +package com.owncloud.android.domain /** * Parent class for use cases that do not require network operations, e.g. get data from database. That's why error diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetCapabilitiesAsLiveDataUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetCapabilitiesAsLiveDataUseCase.kt index 8c2d9761712..1888fb72713 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetCapabilitiesAsLiveDataUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetCapabilitiesAsLiveDataUseCase.kt @@ -20,7 +20,7 @@ package com.owncloud.android.domain.capabilities.usecases import androidx.lifecycle.LiveData -import com.owncloud.android.domain.sharing.shares.usecases.BaseUseCase +import com.owncloud.android.domain.BaseUseCase import com.owncloud.android.domain.capabilities.CapabilityRepository import com.owncloud.android.domain.capabilities.model.OCCapability diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetStoredCapabilitiesUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetStoredCapabilitiesUseCase.kt index a84a4cde075..1d7d4c90806 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetStoredCapabilitiesUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/capabilities/usecases/GetStoredCapabilitiesUseCase.kt @@ -21,7 +21,7 @@ package com.owncloud.android.domain.capabilities.usecases import com.owncloud.android.domain.capabilities.CapabilityRepository import com.owncloud.android.domain.capabilities.model.OCCapability -import com.owncloud.android.domain.sharing.shares.usecases.BaseUseCase +import com.owncloud.android.domain.BaseUseCase class GetStoredCapabilitiesUseCase( private val capabilityRepository: CapabilityRepository diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCase.kt similarity index 90% rename from owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCase.kt rename to owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCase.kt index 7b943759ecf..b2330a9c63c 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCase.kt @@ -22,9 +22,9 @@ package com.owncloud.android.domain.server.usecases import com.owncloud.android.domain.BaseUseCaseWithResult import com.owncloud.android.domain.server.ServerRepository -class CheckPathExistenceUseCase( +class CheckPathExistenceAsyncUseCase( private val serverRepository: ServerRepository -) : BaseUseCaseWithResult() { +) : BaseUseCaseWithResult() { override fun run(params: Params): Boolean = serverRepository.checkPathExistence(params.remotePath, params.isUserLogged) diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCase.kt similarity index 91% rename from owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCase.kt rename to owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCase.kt index bb58533f068..7d8794fe7fa 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCase.kt @@ -23,9 +23,9 @@ import com.owncloud.android.domain.BaseUseCaseWithResult import com.owncloud.android.domain.server.AnonymousServerRepository import com.owncloud.android.domain.server.model.ServerInfo -class GetServerInfoUseCase( +class GetServerInfoAsyncUseCase( private val anonymousServerRepository: AnonymousServerRepository -) : BaseUseCaseWithResult() { +) : BaseUseCaseWithResult() { override fun run(params: Params): ServerInfo = anonymousServerRepository.getServerInfo(params.serverPath) diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetShareAsLiveDataUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetShareAsLiveDataUseCase.kt index 83486f68a5d..bd3f93cb313 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetShareAsLiveDataUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetShareAsLiveDataUseCase.kt @@ -20,6 +20,7 @@ package com.owncloud.android.domain.sharing.shares.usecases import androidx.lifecycle.LiveData +import com.owncloud.android.domain.BaseUseCase import com.owncloud.android.domain.sharing.shares.ShareRepository import com.owncloud.android.domain.sharing.shares.model.OCShare diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetSharesAsLiveDataUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetSharesAsLiveDataUseCase.kt index 8761e1bc95f..768935dcf60 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetSharesAsLiveDataUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/sharing/shares/usecases/GetSharesAsLiveDataUseCase.kt @@ -20,6 +20,7 @@ package com.owncloud.android.domain.sharing.shares.usecases import androidx.lifecycle.LiveData +import com.owncloud.android.domain.BaseUseCase import com.owncloud.android.domain.sharing.shares.ShareRepository import com.owncloud.android.domain.sharing.shares.model.OCShare diff --git a/owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCase.kt b/owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCase.kt similarity index 91% rename from owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCase.kt rename to owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCase.kt index 55ab1b6b5a4..bc3bfa1d000 100644 --- a/owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCase.kt +++ b/owncloudDomain/src/main/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCase.kt @@ -20,11 +20,10 @@ package com.owncloud.android.domain.user.usecases import com.owncloud.android.domain.BaseUseCaseWithResult -import com.owncloud.android.domain.sharing.shares.usecases.BaseUseCase import com.owncloud.android.domain.user.UserRepository import com.owncloud.android.domain.user.model.UserInfo -class GetUserInfoUseCase( +class GetUserInfoAsyncUseCase( private val userRepository: UserRepository ) : BaseUseCaseWithResult() { override fun run(params: Unit): UserInfo = diff --git a/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCaseTest.kt b/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCaseTest.kt similarity index 93% rename from owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCaseTest.kt rename to owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCaseTest.kt index 23766243bb9..114d99b898e 100644 --- a/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceUseCaseTest.kt +++ b/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/CheckPathExistenceAsyncUseCaseTest.kt @@ -28,10 +28,10 @@ import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Test -class CheckPathExistenceUseCaseTest { +class CheckPathExistenceAsyncUseCaseTest { private val serverRepository: ServerRepository = spyk() - private val useCase = CheckPathExistenceUseCase(serverRepository) - private val useCaseParams = CheckPathExistenceUseCase.Params( + private val useCase = CheckPathExistenceAsyncUseCase(serverRepository) + private val useCaseParams = CheckPathExistenceAsyncUseCase.Params( remotePath = "http://demo.owncloud.com", isUserLogged = false ) diff --git a/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCaseTest.kt b/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCaseTest.kt similarity index 90% rename from owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCaseTest.kt rename to owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCaseTest.kt index c334e01688c..1f7dd4d2ebb 100644 --- a/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoUseCaseTest.kt +++ b/owncloudDomain/src/test/java/com/owncloud/android/domain/server/usecases/GetServerInfoAsyncUseCaseTest.kt @@ -29,10 +29,10 @@ import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Test -class GetServerInfoUseCaseTest { +class GetServerInfoAsyncUseCaseTest { private val anonymousServerRepository: AnonymousServerRepository = spyk() - private val useCase = GetServerInfoUseCase((anonymousServerRepository)) - private val useCaseParams = GetServerInfoUseCase.Params(serverPath = "http://demo.owncloud.com") + private val useCase = GetServerInfoAsyncUseCase((anonymousServerRepository)) + private val useCaseParams = GetServerInfoAsyncUseCase.Params(serverPath = "http://demo.owncloud.com") @Test fun getServerInfoSuccess() { diff --git a/owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCaseTest.kt b/owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCaseTest.kt similarity index 95% rename from owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCaseTest.kt rename to owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCaseTest.kt index 06ded09b032..7a7b8c9a27d 100644 --- a/owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoUseCaseTest.kt +++ b/owncloudDomain/src/test/java/com/owncloud/android/domain/user/usecases/GetUserInfoAsyncUseCaseTest.kt @@ -30,9 +30,9 @@ import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Test -class GetUserInfoUseCaseTest { +class GetUserInfoAsyncUseCaseTest { private val userRepository: UserRepository = spyk() - private val useCase = GetUserInfoUseCase((userRepository)) + private val useCase = GetUserInfoAsyncUseCase((userRepository)) private val useCaseParams = Unit @Test