From 9a45c445b463b82916ca4dda8a26e3e20dae6450 Mon Sep 17 00:00:00 2001 From: David Perez Date: Wed, 1 May 2024 10:59:32 -0500 Subject: [PATCH] BIT-2283: Add the unassigned ciphers API (#1326) --- .../data/vault/datasource/network/api/CiphersApi.kt | 6 ++++++ .../vault/datasource/network/service/CiphersService.kt | 5 +++++ .../datasource/network/service/CiphersServiceImpl.kt | 3 +++ .../datasource/network/service/CiphersServiceTest.kt | 8 ++++++++ 4 files changed, 22 insertions(+) diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/api/CiphersApi.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/api/CiphersApi.kt index 888c438bc8..60d1ac2244 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/api/CiphersApi.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/api/CiphersApi.kt @@ -130,4 +130,10 @@ interface CiphersApi { @Path("cipherId") cipherId: String, @Path("attachmentId") attachmentId: String, ): Result + + /** + * Indicates if the active user has unassigned ciphers. + */ + @GET("ciphers/has-unassigned-ciphers") + suspend fun hasUnassignedCiphers(): Result } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersService.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersService.kt index 34bf84716d..d2908d1a68 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersService.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersService.kt @@ -101,4 +101,9 @@ interface CiphersService { cipherId: String, attachmentId: String, ): Result + + /** + * Returns a boolean indicating if the active user has unassigned ciphers. + */ + suspend fun hasUnassignedCiphers(): Result } diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceImpl.kt index 56142a9e0d..fe5f8036cf 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceImpl.kt @@ -159,4 +159,7 @@ class CiphersServiceImpl( cipherId = cipherId, attachmentId = attachmentId, ) + + override suspend fun hasUnassignedCiphers(): Result = + ciphersApi.hasUnassignedCiphers() } diff --git a/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceTest.kt index ddaa0930f1..78c7644ae5 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/vault/datasource/network/service/CiphersServiceTest.kt @@ -22,6 +22,7 @@ import kotlinx.coroutines.test.runTest import okhttp3.mockwebserver.MockResponse import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import retrofit2.create @@ -259,6 +260,13 @@ class CiphersServiceTest : BaseServiceTest() { result.getOrThrow(), ) } + + @Test + fun `hasUnassignedCiphers should return the correct response`() = runTest { + server.enqueue(MockResponse().setBody("true")) + val result = ciphersService.hasUnassignedCiphers() + assertTrue(result.getOrThrow()) + } } private fun setupMockUri(