Skip to content

Commit

Permalink
fix: renew dialog is displayed when the cert is revoked (#2681)
Browse files Browse the repository at this point in the history
  • Loading branch information
MohamadJaara authored Mar 25, 2024
1 parent b65962a commit 65dd247
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ internal class ObserveE2EIRequiredUseCaseImpl(
} ?: E2EIRequiredResult.NoGracePeriod.Create

private fun onUserHasCertificate(certificate: E2eiCertificate) =
if (certificate.endAt <= DateTimeUtil.currentInstant() || certificate.status != CertificateStatus.VALID) {
if (certificate.status == CertificateStatus.EXPIRED) {
E2EIRequiredResult.NoGracePeriod.Renew
} else if (certificate.shouldRenew()) {
} else if (certificate.status == CertificateStatus.VALID && certificate.shouldRenew()) {
E2EIRequiredResult.WithGracePeriod.Renew(certificate.renewGracePeriodLeft())
} else {
E2EIRequiredResult.NotRequired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ import kotlinx.coroutines.test.runTest
import kotlinx.datetime.Instant
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertIs
import kotlin.test.assertTrue
import kotlin.time.Duration.Companion.days
import kotlin.time.Duration.Companion.minutes
Expand Down Expand Up @@ -252,14 +253,17 @@ class ObserveE2EIRequiredUseCaseTest {
.withCurrentClientProviderSuccess()
.withGetE2EICertificateUseCaseResult(
GetE2EICertificateUseCaseResult.Success(
VALID_CERTIFICATE.copy(endAt = DateTimeUtil.currentInstant().minus(1.days))
VALID_CERTIFICATE.copy(
status = CertificateStatus.EXPIRED,
endAt = DateTimeUtil.currentInstant().minus(1.days)
)
)
)
.arrange()

useCase().test {
advanceTimeBy(1000L)
assertTrue(awaitItem() is E2EIRequiredResult.NoGracePeriod.Renew)
assertIs<E2EIRequiredResult.NoGracePeriod.Renew>(awaitItem())
awaitComplete()
}
}
Expand Down Expand Up @@ -288,6 +292,30 @@ class ObserveE2EIRequiredUseCaseTest {
}
}

@Test
fun givenCertRevoked_thenReturnNotRequired() = runTest {
val setting = MLS_E2EI_SETTING.copy(
gracePeriodEnd = DateTimeUtil.currentInstant()
)
val (_, useCase) = Arrangement()
.withMLSE2EISetting(setting)
.withE2EINotificationTime(DateTimeUtil.currentInstant())
.withIsMLSSupported(true)
.withCurrentClientProviderSuccess()
.withGetE2EICertificateUseCaseResult(
GetE2EICertificateUseCaseResult.Success(
VALID_CERTIFICATE.copy(status = CertificateStatus.REVOKED)
)
)
.arrange()

useCase().test {
advanceTimeBy(1000L)
assertIs<E2EIRequiredResult.NotRequired>(awaitItem())
awaitComplete()
}
}

private class Arrangement(testDispatcher: CoroutineDispatcher = UnconfinedTestDispatcher()) {
@Mock
val userConfigRepository = mock(UserConfigRepository::class)
Expand Down

0 comments on commit 65dd247

Please sign in to comment.