Skip to content

Commit

Permalink
Merge branch 'mwcore-dev' into mwcore-p2p-setup
Browse files Browse the repository at this point in the history
LZRS authored Jan 26, 2024
2 parents b1aa6de + 96d01d0 commit bfa6c95
Showing 6 changed files with 24 additions and 15 deletions.
2 changes: 1 addition & 1 deletion android/engine/build.gradle
Original file line number Diff line number Diff line change
@@ -222,7 +222,7 @@ dependencies {
transitive = true
}

api('org.smartregister:engine:0.1.0-beta04-preview4.1-SNAPSHOT') {
api('org.smartregister:engine:0.1.0-beta04-preview4.2-SNAPSHOT') {
transitive = true
exclude group: 'org.hamcrest', module: 'hamcrest-core'
exclude group: 'javax.xml.bind', module: 'jaxb-api'
Original file line number Diff line number Diff line change
@@ -83,7 +83,7 @@ constructor(
if (!refreshToken.isNullOrEmpty()) {
authToken =
try {
tokenAuthenticator.refreshToken(refreshToken)
tokenAuthenticator.refreshToken(account, refreshToken)
} catch (ex: Exception) {
Timber.e(ex)
"" // Set to EMPTY, so as to redirect to log in screen, and try again
Original file line number Diff line number Diff line change
@@ -223,13 +223,16 @@ constructor(
* [HttpException] or [UnknownHostException] exceptions
*/
@Throws(HttpException::class, UnknownHostException::class)
fun refreshToken(currentRefreshToken: String): String {
fun refreshToken(account: Account, currentRefreshToken: String): String {
return runBlocking {
val oAuthResponse =
oAuthService.fetchToken(
buildOAuthPayload(REFRESH_TOKEN).apply { put(REFRESH_TOKEN, currentRefreshToken) }
)

// Updates with new refresh-token
accountManager.setPassword(account, oAuthResponse.refreshToken!!)

// Returns valid token or throws exception, NullPointerException not expected
oAuthResponse.accessToken!!
}
Original file line number Diff line number Diff line change
@@ -253,8 +253,9 @@ class AccountAuthenticatorTest : RobolectricTest() {
every { accountManager.peekAuthToken(account, authTokenType) } returns ""
val refreshToken = "refreshToken"
every { accountManager.getPassword(account) } returns refreshToken
every { accountManager.setPassword(account, any()) } just runs

every { tokenAuthenticator.refreshToken(refreshToken) } returns ""
every { tokenAuthenticator.refreshToken(account, refreshToken) } returns ""

val authToken = accountAuthenticator.getAuthToken(mockk(), account, authTokenType, bundleOf())
val parcelable = authToken.get(AccountManager.KEY_INTENT) as Intent
@@ -273,7 +274,8 @@ class AccountAuthenticatorTest : RobolectricTest() {

val refreshToken = "refreshToken"
every { accountManager.getPassword(account) } returns refreshToken
every { tokenAuthenticator.refreshToken(refreshToken) } returns "newAccessToken"
every { accountManager.setPassword(account, any()) } just runs
every { tokenAuthenticator.refreshToken(account, refreshToken) } returns "newAccessToken"

val authTokenBundle: Bundle =
accountAuthenticator.getAuthToken(null, account, authTokenType, bundleOf())
@@ -291,7 +293,7 @@ class AccountAuthenticatorTest : RobolectricTest() {

val refreshToken = "refreshToken"
every { accountManager.getPassword(account) } returns refreshToken
every { tokenAuthenticator.refreshToken(refreshToken) } throws
every { tokenAuthenticator.refreshToken(account, refreshToken) } throws
HttpException(
mockk {
every { code() } returns 0
@@ -314,7 +316,7 @@ class AccountAuthenticatorTest : RobolectricTest() {

val refreshToken = "refreshToken"
every { accountManager.getPassword(account) } returns refreshToken
every { tokenAuthenticator.refreshToken(refreshToken) } throws UnknownHostException()
every { tokenAuthenticator.refreshToken(account, refreshToken) } throws UnknownHostException()

val authTokenBundle: Bundle =
accountAuthenticator.getAuthToken(null, account, authTokenType, bundleOf())
@@ -330,7 +332,7 @@ class AccountAuthenticatorTest : RobolectricTest() {

val refreshToken = "refreshToken"
every { accountManager.getPassword(account) } returns refreshToken
every { tokenAuthenticator.refreshToken(refreshToken) } throws RuntimeException()
every { tokenAuthenticator.refreshToken(account, refreshToken) } throws RuntimeException()

val authTokenBundle =
accountAuthenticator.getAuthToken(null, account, authTokenType, bundleOf())
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ import io.mockk.mockk
import io.mockk.runs
import io.mockk.slot
import io.mockk.spyk
import io.mockk.verify
import io.mockk.verifyOrder
import java.io.IOException
import java.net.UnknownHostException
@@ -388,6 +389,7 @@ class TokenAuthenticatorTest : RobolectricTest() {

@Test
fun testRefreshTokenShouldReturnToken() {
val account = Account(sampleUsername, PROVIDER)
val accessToken = "soRefreshingNewToken"
val oAuthResponse =
OAuthResponse(
@@ -398,11 +400,13 @@ class TokenAuthenticatorTest : RobolectricTest() {
scope = SCOPE
)
coEvery { oAuthService.fetchToken(any()) } returns oAuthResponse
every { accountManager.setPassword(account, any()) } just runs

val currentRefreshToken = "oldRefreshToken"
val newAccessToken = tokenAuthenticator.refreshToken(currentRefreshToken)
val newAccessToken = tokenAuthenticator.refreshToken(account, currentRefreshToken)
Assert.assertNotNull(newAccessToken)
Assert.assertEquals(accessToken, newAccessToken)
verify { accountManager.setPassword(eq(account), oAuthResponse.refreshToken) }
}

@OptIn(ExperimentalCoroutinesApi::class)
12 changes: 6 additions & 6 deletions android/quest/build.gradle
Original file line number Diff line number Diff line change
@@ -173,22 +173,22 @@ android {
dimension "apps"
applicationIdSuffix ".mwcore"
versionNameSuffix "-mwcore"
versionCode 30
versionName "0.1.20"
versionCode 31
versionName "0.1.21"
}
mwcoreDev {
dimension "apps"
applicationIdSuffix ".mwcoreDev"
versionNameSuffix "-mwcoreDev"
versionCode 30
versionName "0.1.20"
versionCode 31
versionName "0.1.21"
}
mwcoreProd {
dimension "apps"
applicationIdSuffix ".mwcoreProd"
versionNameSuffix "-mwcoreProd"
versionCode 8
versionName "0.0.8"
versionCode 9
versionName "0.0.9"
}
afyayangu {
dimension "apps"

0 comments on commit bfa6c95

Please sign in to comment.