Add API for getting auth request updates (#880)

This commit is contained in:
David Perez 2024-01-30 17:38:17 -06:00 committed by Álison Fernandes
parent 034284fad4
commit cd66699467
4 changed files with 51 additions and 0 deletions

View file

@ -3,7 +3,10 @@ package com.x8bit.bitwarden.data.auth.datasource.network.api
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query
/**
* Defines unauthenticated raw calls under the /auth-requests API.
@ -17,4 +20,13 @@ interface UnauthenticatedAuthRequestsApi {
suspend fun createAuthRequest(
@Body body: AuthRequestRequestJson,
): Result<AuthRequestsResponseJson.AuthRequest>
/**
* Queries for updates to a given auth request.
*/
@GET("/auth-requests/{requestId}/response")
suspend fun getAuthRequestUpdate(
@Path("requestId") requestId: String,
@Query("code") accessCode: String,
): Result<AuthRequestsResponseJson.AuthRequest>
}

View file

@ -16,4 +16,12 @@ interface NewAuthRequestService {
accessCode: String,
fingerprint: String,
): Result<AuthRequestsResponseJson.AuthRequest>
/**
* Queries for updates to a given auth request.
*/
suspend fun getAuthRequestUpdate(
requestId: String,
accessCode: String,
): Result<AuthRequestsResponseJson.AuthRequest>
}

View file

@ -28,4 +28,13 @@ class NewAuthRequestServiceImpl(
type = AuthRequestTypeJson.LOGIN_WITH_DEVICE,
),
)
override suspend fun getAuthRequestUpdate(
requestId: String,
accessCode: String,
): Result<AuthRequestsResponseJson.AuthRequest> =
unauthenticatedAuthRequestsApi.getAuthRequestUpdate(
requestId = requestId,
accessCode = accessCode,
)
}

View file

@ -45,6 +45,28 @@ class NewAuthRequestServiceTest : BaseServiceTest() {
)
assertEquals(Result.success(AUTH_REQUEST_RESPONSE), actual)
}
@Test
fun `getAuthRequestUpdate when request response is Failure should return Failure`() = runTest {
val response = MockResponse().setResponseCode(400)
server.enqueue(response)
val actual = service.getAuthRequestUpdate(
requestId = "1",
accessCode = "accessCode",
)
assertTrue(actual.isFailure)
}
@Test
fun `getAuthRequestUpdate when request response is Success should return Success`() = runTest {
val response = MockResponse().setBody(AUTH_REQUEST_RESPONSE_JSON).setResponseCode(200)
server.enqueue(response)
val actual = service.getAuthRequestUpdate(
requestId = "1",
accessCode = "accessCode",
)
assertEquals(Result.success(AUTH_REQUEST_RESPONSE), actual)
}
}
private const val AUTH_REQUEST_RESPONSE_JSON = """