Skip to content

Commit

Permalink
Merge pull request #55 from andacata/bugfix/46_versions_endpoint_shou…
Browse files Browse the repository at this point in the history
…ld_return_http_401

fix(ocpi-2.2.1) versions endpoint should return http 401, not 400
  • Loading branch information
lilgallon authored Jan 4, 2024
2 parents 1037649 + de30fb6 commit df5c492
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ suspend fun PartnerRepository.checkToken(
isCredentialsServerTokenValid(token)

if (!validToken) {
throw OcpiClientInvalidParametersException("Invalid server token (token A allowed: $allowTokenA): $token")
throw HttpException(HttpStatus.UNAUTHORIZED, "Invalid server token (token A allowed: $allowTokenA)")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,10 @@ class OcpiToolkitUnknownEndpointException(
already registered, make sure that the partnerRepository works properly.
""".trimIndent()
)

class OcpiToolkitResponseParsingException(
urlCalled: String,
cause: Throwable
) : Exception(
"Response cannot be parsed. URL='$urlCalled', error='${cause.message}'"
)
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
package com.izivia.ocpi.toolkit.modules.versions

import com.izivia.ocpi.toolkit.common.OcpiResponseBody
import com.izivia.ocpi.toolkit.common.authenticate
import com.izivia.ocpi.toolkit.common.parseBody
import com.izivia.ocpi.toolkit.common.withRequiredHeaders
import com.izivia.ocpi.toolkit.common.*
import com.izivia.ocpi.toolkit.modules.credentials.repositories.PartnerRepository
import com.izivia.ocpi.toolkit.modules.versions.domain.Version
import com.izivia.ocpi.toolkit.transport.TransportClientBuilder
import com.izivia.ocpi.toolkit.transport.domain.HttpMethod
import com.izivia.ocpi.toolkit.transport.domain.HttpRequest
import com.izivia.ocpi.toolkit.transport.domain.*

/**
* Used to get the versions of a partner
Expand Down Expand Up @@ -39,6 +35,15 @@ class VersionsClient(
allowTokenA = true
)
)
.parseBody()
.also {
if (it.status != HttpStatus.OK) throw HttpException(it.status, parseHttpStatus(it.status.code).name)
}
.runCatching {
this.parseBody<OcpiResponseBody<List<Version>>>()
}
.onFailure {
throw OcpiToolkitResponseParsingException(serverVersionsEndpointUrl, it)
}
.getOrThrow()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.izivia.ocpi.toolkit.transport.domain.HttpStatus
import com.mongodb.client.MongoCollection
import com.mongodb.client.MongoDatabase
import kotlinx.coroutines.runBlocking
import org.eclipse.jetty.client.HttpResponseException
import org.junit.jupiter.api.Test
import org.litote.kmongo.eq
import org.litote.kmongo.getCollection
Expand All @@ -29,6 +30,7 @@ import strikt.api.expectThat
import strikt.api.expectThrows
import strikt.assertions.*
import java.util.*
import java.util.concurrent.ExecutionException

class CredentialsIntegrationTests : BaseServerIntegrationTest() {

Expand Down Expand Up @@ -179,9 +181,11 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() {
credentialsClientService.register()
}
.isFailure()
.isA<OcpiResponseException>()
.get { statusCode }
.isEqualTo(OcpiStatus.CLIENT_INVALID_PARAMETERS.code)
.isA<ExecutionException>()
.get { this.cause }
.isA<HttpResponseException>()
.get { this.response.status }
.isEqualTo(HttpStatus.UNAUTHORIZED.code)

receiverServer.partnerCollection.deleteOne(Partner::url eq senderServer.versionsEndpoint)
receiverServer.partnerCollection.insertOne(
Expand All @@ -196,9 +200,11 @@ class CredentialsIntegrationTests : BaseServerIntegrationTest() {
credentialsClientService.register()
}
.isFailure()
.isA<OcpiResponseException>()
.get { statusCode }
.isEqualTo(OcpiStatus.CLIENT_INVALID_PARAMETERS.code)
.isA<ExecutionException>()
.get { this.cause }
.isA<HttpResponseException>()
.get { this.response.status }
.isEqualTo(HttpStatus.UNAUTHORIZED.code)
}

@Test
Expand Down

0 comments on commit df5c492

Please sign in to comment.