From 478385ca8195641706ba5bfab017f0bf1163edc7 Mon Sep 17 00:00:00 2001 From: Deborah Pereira Date: Thu, 12 Sep 2024 11:31:32 +0200 Subject: [PATCH] fixup! feat: rename partnerUrl parameter to partnerId in search method to allow the usage of another field as identifier --- .../credentials/repositories/PartnerRepository.kt | 8 ++++++++ .../credentials/services/CredentialsClientService.kt | 3 --- .../credentials/services/CredentialsServerService.kt | 6 ------ .../ocpi/toolkit/modules/versions/VersionsClient.kt | 11 +++++++---- .../samples/common/DummyPartnerCacheRepository.kt | 2 ++ .../toolkit/samples/common/PartnerCacheRepository.kt | 3 +++ .../toolkit/samples/credentials/CredentialsSender.kt | 1 - .../tests/integration/CredentialsIntegrationTests.kt | 7 ------- .../tests/integration/mock/PartnerMongoRepository.kt | 3 +++ 9 files changed, 23 insertions(+), 21 deletions(-) diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/repositories/PartnerRepository.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/repositories/PartnerRepository.kt index 1cfb425..96adf11 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/repositories/PartnerRepository.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/repositories/PartnerRepository.kt @@ -61,6 +61,14 @@ interface PartnerRepository { */ suspend fun isCredentialsServerTokenValid(credentialsServerToken: String): Boolean + /** + * Used to find a partner url by its identifier. + * + * @param partnerId, identifies uniquely the partner + * @return the partner url + */ + suspend fun getPartnerUrl(partnerId: String): String? + /** * Used to find a partner url by its server token. Basically used to retrieve all the partner information * from the token in a request. diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsClientService.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsClientService.kt index bc8b811..bec1456 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsClientService.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsClientService.kt @@ -26,7 +26,6 @@ import com.izivia.ocpi.toolkit.transport.TransportClientBuilder * @property clientPartnerRepository client's repository to store and retrieve tokens and information about partners * @property clientVersionsRepository client's repository to retrieve available versions on the client * @property clientCredentialsRoleRepository client's repository to retrieve its role - * @property serverVersionsEndpointUrl the versions endpoint url of the server (for the client to retrieve endpoints) * @property partnerId a value that identifies uniquely the partner * @property transportClientBuilder used to build a transport (will be used to create CredentialClient to make calls) * @property requiredEndpoints the endpoints this client expects from the other part to provide @@ -36,7 +35,6 @@ open class CredentialsClientService( private val clientPartnerRepository: PartnerRepository, private val clientVersionsRepository: VersionsRepository, private val clientCredentialsRoleRepository: CredentialsRoleRepository, - private val serverVersionsEndpointUrl: String, private val partnerId: String, private val transportClientBuilder: TransportClientBuilder, private val requiredEndpoints: RequiredEndpoints? @@ -196,7 +194,6 @@ open class CredentialsClientService( private suspend fun findLatestMutualVersionAndSaveInformation(): List { val availableServerVersions = VersionsClient( transportClientBuilder = transportClientBuilder, - serverVersionsEndpointUrl = serverVersionsEndpointUrl, partnerId = partnerId, partnerRepository = clientPartnerRepository ) diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsServerService.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsServerService.kt index 5073941..7a03499 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsServerService.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/credentials/services/CredentialsServerService.kt @@ -35,12 +35,6 @@ open class CredentialsServerService( // A partner can use a valid serverToken on registration. // It can happen when a partner unregister, then registers with its clientToken (which is the serverToken // for us) - partnerRepository.getPartnerUrlByCredentialsServerToken(token) - // If we could not find a partner with this serverToken, then, it means that it's probably a tokenA - ?: partnerRepository.savePartnerUrlForTokenA(tokenA = token, partnerUrl = credentials.url) - ?: throw OcpiClientInvalidParametersException( - "Invalid token ($token) - should be either a TokenA or a ServerToken" - ) val partnerId = partnerRepository.getPartnerIdByCredentialsServerToken(token) // If we could not find a partner with this serverToken, then, it means that it's probably a tokenA ?: partnerRepository.getPartnerIdByCredentialsTokenA(credentialsTokenA = token) diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/versions/VersionsClient.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/versions/VersionsClient.kt index fe11f88..4daeec5 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/versions/VersionsClient.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/versions/VersionsClient.kt @@ -9,12 +9,11 @@ import com.izivia.ocpi.toolkit.transport.domain.* /** * Used to get the versions of a partner * @property transportClientBuilder used to build transport client - * @property serverVersionsEndpointUrl used to know which partner to communicate with + * @property partnerId used to know which partner to communicate with * @property partnerRepository used to get information about the partner (token) */ class VersionsClient( private val transportClientBuilder: TransportClientBuilder, - private val serverVersionsEndpointUrl: String, private val partnerId: String, private val partnerRepository: PartnerRepository ) : VersionsInterface { @@ -22,7 +21,11 @@ class VersionsClient( override suspend fun getVersions(): OcpiResponseBody> = with( transportClientBuilder - .build(baseUrl = serverVersionsEndpointUrl) + .build( + baseUrl = partnerRepository + .getPartnerUrl(partnerId = partnerId) + ?: throw OcpiToolkitUnknownEndpointException("version with no url") + ) ) { send( HttpRequest(method = HttpMethod.GET) @@ -43,7 +46,7 @@ class VersionsClient( this.parseBody>>() } .onFailure { - throw OcpiToolkitResponseParsingException(serverVersionsEndpointUrl, it) + throw OcpiToolkitResponseParsingException(partnerId, it) } .getOrThrow() } diff --git a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/DummyPartnerCacheRepository.kt b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/DummyPartnerCacheRepository.kt index 3097eaa..03baf5a 100644 --- a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/DummyPartnerCacheRepository.kt +++ b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/DummyPartnerCacheRepository.kt @@ -4,6 +4,8 @@ class DummyPartnerCacheRepository : PartnerCacheRepository() { override suspend fun isCredentialsServerTokenValid(credentialsServerToken: String): Boolean = true + override suspend fun getPartnerUrl(partnerId: String): String = partnerId + override suspend fun getCredentialsClientToken(partnerId: String): String = "*" } diff --git a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/PartnerCacheRepository.kt b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/PartnerCacheRepository.kt index a16421a..41b00fd 100644 --- a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/PartnerCacheRepository.kt +++ b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/common/PartnerCacheRepository.kt @@ -72,6 +72,9 @@ open class PartnerCacheRepository : PartnerRepository { override suspend fun isCredentialsServerTokenValid(credentialsServerToken: String): Boolean = partners .any { it.serverToken == credentialsServerToken } + override suspend fun getPartnerUrl(partnerId: String): String? = partners + .firstOrNull { it.url == partnerId }?.url + override suspend fun getPartnerUrlByCredentialsServerToken(credentialsServerToken: String): String? = partners .firstOrNull { it.serverToken == credentialsServerToken }?.url diff --git a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/credentials/CredentialsSender.kt b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/credentials/CredentialsSender.kt index 02d6c50..ed625f5 100644 --- a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/credentials/CredentialsSender.kt +++ b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/samples/credentials/CredentialsSender.kt @@ -67,7 +67,6 @@ fun main() { ) ) }, - serverVersionsEndpointUrl = receiverVersionsUrl, partnerId = receiverVersionsUrl, transportClientBuilder = Http4kTransportClientBuilder(), requiredEndpoints = RequiredEndpoints(receiver = listOf(ModuleID.credentials)) diff --git a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/CredentialsIntegrationTests.kt b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/CredentialsIntegrationTests.kt index ce87ff7..6dc98d0 100644 --- a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/CredentialsIntegrationTests.kt +++ b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/CredentialsIntegrationTests.kt @@ -144,7 +144,6 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() { ) ) }, - serverVersionsEndpointUrl = receiverServerSetupResult.versionsEndpoint, partnerId = receiverServerSetupResult.versionsEndpoint, transportClientBuilder = Http4kTransportClientBuilder(), requiredEndpoints = requiredEndpoints @@ -223,7 +222,6 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() { val versionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = receiverServer.versionsEndpoint, partnerId = receiverServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = senderServer.partnerCollection) ) @@ -447,7 +445,6 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() { val versionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = receiverServer.versionsEndpoint, partnerId = receiverServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = senderServer.partnerCollection) ) @@ -498,13 +495,11 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() { val senderVersionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = receiverServer.versionsEndpoint, partnerId = receiverServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = senderServer.partnerCollection) ) val receiverVersionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = senderServer.versionsEndpoint, partnerId = senderServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = receiverServer.partnerCollection) ) @@ -617,13 +612,11 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() { val senderVersionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = receiverServer.versionsEndpoint, partnerId = receiverServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = senderServer.partnerCollection) ) val receiverVersionsClient = VersionsClient( transportClientBuilder = Http4kTransportClientBuilder(), - serverVersionsEndpointUrl = senderServer.versionsEndpoint, partnerId = senderServer.versionsEndpoint, partnerRepository = PartnerMongoRepository(collection = receiverServer.partnerCollection) ) diff --git a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/mock/PartnerMongoRepository.kt b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/mock/PartnerMongoRepository.kt index 2903e87..a2b7caa 100644 --- a/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/mock/PartnerMongoRepository.kt +++ b/ocpi-toolkit-2.2.1/src/test/kotlin/com/izivia/ocpi/toolkit/tests/integration/mock/PartnerMongoRepository.kt @@ -66,6 +66,9 @@ class PartnerMongoRepository( override suspend fun isCredentialsServerTokenValid(credentialsServerToken: String): Boolean = collection .findOne(Partner::serverToken eq credentialsServerToken) != null + override suspend fun getPartnerUrl(partnerId: String): String? = collection + .findOne(Partner::url eq partnerId)?.url + override suspend fun getPartnerUrlByCredentialsServerToken(credentialsServerToken: String): String? = collection .findOne(Partner::serverToken eq credentialsServerToken)?.url