Loading app/build.gradle +2 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ allOpen { dependencies { implementation project(':modules') // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628 api files('libs/splitinstall-lib.jar') Loading app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepository.kt +2 −2 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import com.aurora.gplayapi.data.models.AuthData interface LoginRepository { suspend fun anonymousUser( authDataRequestBody: AnonymousAuthDataRequestBody ): AuthDataResponse ): AuthData } No newline at end of file app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepositoryImpl.kt +15 −7 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import android.content.Context import app.lounge.login.anonymous.AnonymousUser import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import app.lounge.networking.NetworkResult import app.lounge.storage.cache.configurations import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class LoginRepositoryImpl @Inject constructor( private val networkFetching: NetworkFetching, private val networkFetching: AnonymousUser, @ApplicationContext val applicationContext: Context ): LoginRepository { override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthDataResponse { return networkFetching.requestAuthData( override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthData { val result = networkFetching.requestAuthData( anonymousAuthDataRequestBody = authDataRequestBody ).also { applicationContext.configurations.authData = it.toString() ) when(result) { is NetworkResult.Error -> throw Exception(result.errorMessage, result.exception) is NetworkResult.Success -> { applicationContext.configurations.authData = result.data.toString() return result.data } } } Loading app/src/main/java/foundation/e/apps/domain/login/usecase/UserLoginUseCase.kt +5 −7 Original line number Diff line number Diff line package foundation.e.apps.domain.login.usecase import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.domain.login.repository.LoginRepository import foundation.e.apps.utils.Resource import kotlinx.coroutines.flow.flow Loading @@ -18,20 +18,18 @@ class UserLoginUseCase @Inject constructor( suspend operator fun invoke( properties: Properties, userAgent: String ): Resource<AuthDataResponse> = flow { ): Resource<AuthData> = flow { try { emit(Resource.Loading()) val userResponse: AuthDataResponse = loginRepository.anonymousUser( val userResponse = loginRepository.anonymousUser( authDataRequestBody = AnonymousAuthDataRequestBody( properties = properties, userAgent = userAgent ) ) emit(Resource.Success(userResponse)) } catch(e: HttpException) { emit(Resource.Error(e.localizedMessage ?: "An unexpected error occured")) } catch(e: IOException) { emit(Resource.Error("Couldn't reach server. Check your internet connection.")) } catch(e: Exception) { emit(Resource.Error(e.localizedMessage)) } }.single() } No newline at end of file app/src/test/java/foundation/e/apps/usecase/repository/LoginRepositoryTest.kt +12 −10 Original line number Diff line number Diff line Loading @@ -2,11 +2,6 @@ package foundation.e.apps.usecase.repository import android.content.Context import androidx.test.core.app.ApplicationProvider import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import foundation.e.apps.testAnonymousRequestBodyData import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import foundation.e.apps.testAnonymousResponseData import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Before Loading @@ -17,11 +12,18 @@ import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.robolectric.RobolectricTestRunner import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import foundation.e.apps.testAnonymousRequestBodyData import foundation.e.apps.testAnonymousResponseData import app.lounge.login.anonymous.AnonymousUser import app.lounge.networking.NetworkResult @RunWith(RobolectricTestRunner::class) class LoginRepositoryTest { @Mock lateinit var networkAPI: NetworkFetching lateinit var anonymousUser: AnonymousUser private lateinit var instrumentationContext: Context Loading @@ -34,11 +36,11 @@ class LoginRepositoryTest { @Test fun testRequestAuthData() = runTest { Mockito.`when`(networkAPI.requestAuthData(testAnonymousRequestBodyData)) .thenReturn(testAnonymousResponseData) Mockito.`when`(anonymousUser.requestAuthData(testAnonymousRequestBodyData)) .thenReturn(NetworkResult.Success(testAnonymousResponseData)) val loginRepository = LoginRepositoryImpl(networkAPI, instrumentationContext) val result: AuthDataResponse = loginRepository.anonymousUser(testAnonymousRequestBodyData) val loginRepository = LoginRepositoryImpl(anonymousUser, instrumentationContext) val result = loginRepository.anonymousUser(testAnonymousRequestBodyData) Assert.assertNotNull(result) Assert.assertEquals("eOS@murena.io", result.email) } Loading Loading
app/build.gradle +2 −0 Original line number Diff line number Diff line Loading @@ -153,6 +153,8 @@ allOpen { dependencies { implementation project(':modules') // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628 api files('libs/splitinstall-lib.jar') Loading
app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepository.kt +2 −2 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import com.aurora.gplayapi.data.models.AuthData interface LoginRepository { suspend fun anonymousUser( authDataRequestBody: AnonymousAuthDataRequestBody ): AuthDataResponse ): AuthData } No newline at end of file
app/src/main/java/foundation/e/apps/domain/login/repository/LoginRepositoryImpl.kt +15 −7 Original line number Diff line number Diff line package foundation.e.apps.domain.login.repository import android.content.Context import app.lounge.login.anonymous.AnonymousUser import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import app.lounge.networking.NetworkResult import app.lounge.storage.cache.configurations import com.aurora.gplayapi.data.models.AuthData import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject class LoginRepositoryImpl @Inject constructor( private val networkFetching: NetworkFetching, private val networkFetching: AnonymousUser, @ApplicationContext val applicationContext: Context ): LoginRepository { override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthDataResponse { return networkFetching.requestAuthData( override suspend fun anonymousUser(authDataRequestBody: AnonymousAuthDataRequestBody): AuthData { val result = networkFetching.requestAuthData( anonymousAuthDataRequestBody = authDataRequestBody ).also { applicationContext.configurations.authData = it.toString() ) when(result) { is NetworkResult.Error -> throw Exception(result.errorMessage, result.exception) is NetworkResult.Success -> { applicationContext.configurations.authData = result.data.toString() return result.data } } } Loading
app/src/main/java/foundation/e/apps/domain/login/usecase/UserLoginUseCase.kt +5 −7 Original line number Diff line number Diff line package foundation.e.apps.domain.login.usecase import app.lounge.model.AnonymousAuthDataRequestBody import app.lounge.model.AuthDataResponse import com.aurora.gplayapi.data.models.AuthData import foundation.e.apps.domain.login.repository.LoginRepository import foundation.e.apps.utils.Resource import kotlinx.coroutines.flow.flow Loading @@ -18,20 +18,18 @@ class UserLoginUseCase @Inject constructor( suspend operator fun invoke( properties: Properties, userAgent: String ): Resource<AuthDataResponse> = flow { ): Resource<AuthData> = flow { try { emit(Resource.Loading()) val userResponse: AuthDataResponse = loginRepository.anonymousUser( val userResponse = loginRepository.anonymousUser( authDataRequestBody = AnonymousAuthDataRequestBody( properties = properties, userAgent = userAgent ) ) emit(Resource.Success(userResponse)) } catch(e: HttpException) { emit(Resource.Error(e.localizedMessage ?: "An unexpected error occured")) } catch(e: IOException) { emit(Resource.Error("Couldn't reach server. Check your internet connection.")) } catch(e: Exception) { emit(Resource.Error(e.localizedMessage)) } }.single() } No newline at end of file
app/src/test/java/foundation/e/apps/usecase/repository/LoginRepositoryTest.kt +12 −10 Original line number Diff line number Diff line Loading @@ -2,11 +2,6 @@ package foundation.e.apps.usecase.repository import android.content.Context import androidx.test.core.app.ApplicationProvider import app.lounge.model.AuthDataResponse import app.lounge.networking.NetworkFetching import foundation.e.apps.testAnonymousRequestBodyData import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import foundation.e.apps.testAnonymousResponseData import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Before Loading @@ -17,11 +12,18 @@ import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.robolectric.RobolectricTestRunner import foundation.e.apps.domain.login.repository.LoginRepositoryImpl import foundation.e.apps.testAnonymousRequestBodyData import foundation.e.apps.testAnonymousResponseData import app.lounge.login.anonymous.AnonymousUser import app.lounge.networking.NetworkResult @RunWith(RobolectricTestRunner::class) class LoginRepositoryTest { @Mock lateinit var networkAPI: NetworkFetching lateinit var anonymousUser: AnonymousUser private lateinit var instrumentationContext: Context Loading @@ -34,11 +36,11 @@ class LoginRepositoryTest { @Test fun testRequestAuthData() = runTest { Mockito.`when`(networkAPI.requestAuthData(testAnonymousRequestBodyData)) .thenReturn(testAnonymousResponseData) Mockito.`when`(anonymousUser.requestAuthData(testAnonymousRequestBodyData)) .thenReturn(NetworkResult.Success(testAnonymousResponseData)) val loginRepository = LoginRepositoryImpl(networkAPI, instrumentationContext) val result: AuthDataResponse = loginRepository.anonymousUser(testAnonymousRequestBodyData) val loginRepository = LoginRepositoryImpl(anonymousUser, instrumentationContext) val result = loginRepository.anonymousUser(testAnonymousRequestBodyData) Assert.assertNotNull(result) Assert.assertEquals("eOS@murena.io", result.email) } Loading