Kotlin client: fix loop and pre-commit tests.

This commit is contained in:
Sebastian Jeltsch 2026-03-26 12:45:49 +01:00
parent 970c9e0cbd
commit 57ab485d33
3 changed files with 23 additions and 7 deletions

View file

@ -169,7 +169,7 @@ repos:
entry: sh -c 'DIFF=$(gofmt -d -e client/go/trailbase/) && echo "${DIFF}" && test -z "${DIFF}"'
language: system
types: [go]
files: .*\.(go)$
# files: .*\.(go)$
pass_filenames: false
- id: go_test
@ -182,7 +182,7 @@ repos:
# Kotlin test
- id: kotlin_test
name: Kotlin test
entry: sh -c 'cd client/kotlin && ./gradlew test'
entry: sh -c 'cd client/kotlin && ./gradlew allTests'
language: system
types: [kotlin]
pass_filenames: false

View file

@ -484,7 +484,7 @@ class Client(
suspend fun refreshAuthToken() {
val refreshToken = tokenState.shouldRefresh()
if (refreshToken != null) {
tokenState = refreshTokensImpl(refreshToken)
tokenState = refreshTokensImpl(transport, refreshToken)
}
}
@ -497,7 +497,7 @@ class Client(
): HttpResponse {
val refreshToken = tokenState.shouldRefresh()
if (refreshToken != null) {
tokenState = refreshTokensImpl(refreshToken)
tokenState = refreshTokensImpl(transport, refreshToken)
}
val response = transport.fetch(path, method, tokenState.headers, params, body)
@ -507,12 +507,24 @@ class Client(
return response
}
}
private suspend fun refreshTokensImpl(refreshToken: String): TokenState {
@Serializable data class Body(val refresh_token: String)
private suspend fun refreshTokensImpl(transport: Transport, refreshToken: String): TokenState {
@Serializable data class Body(val refresh_token: String)
return TokenState.build(fetch("${AUTH_API}/refresh", Method.post, refreshToken).body())
val response =
transport.fetch(
"${AUTH_API}/refresh",
Method.post,
/*headers=*/ null,
/*params=*/ null,
Body(refreshToken),
)
if (!response.status.isSuccess()) {
throw HttpException(response.status.value, response.body())
}
return TokenState.build(response.body())
}
private fun initClient(): HttpClient {

View file

@ -143,8 +143,12 @@ class ClientTest {
assertNotNull(client.tokens())
assertEquals("admin@localhost", client.user()?.email)
client.refreshAuthToken()
assertNotNull(client.tokens())
client.logout()
assertNull(client.tokens())
client.refreshAuthToken()
}
@Test