diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b1b3c3bb..fbd4f14b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -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 diff --git a/client/kotlin/lib/src/commonMain/kotlin/Library.kt b/client/kotlin/lib/src/commonMain/kotlin/Library.kt index ba0df514..68782345 100644 --- a/client/kotlin/lib/src/commonMain/kotlin/Library.kt +++ b/client/kotlin/lib/src/commonMain/kotlin/Library.kt @@ -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 { diff --git a/client/kotlin/lib/src/jvmTest/kotlin/LibraryTest.kt b/client/kotlin/lib/src/jvmTest/kotlin/LibraryTest.kt index fe35e943..06be6081 100644 --- a/client/kotlin/lib/src/jvmTest/kotlin/LibraryTest.kt +++ b/client/kotlin/lib/src/jvmTest/kotlin/LibraryTest.kt @@ -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