Skip to content

Commit

Permalink
use builder, so that we do not lose instrumentation (#834)
Browse files Browse the repository at this point in the history
* use builder, so that we do not lose instrumentation

* use builder, so that we do not lose instrumentation
  • Loading branch information
jan-olaveide committed Jan 11, 2024
1 parent 9183c26 commit 81fefdc
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,19 @@ import no.nav.security.token.support.core.context.TokenValidationContextHolder
@EnableConfigurationProperties(ClientConfigurationProperties::class)
@Configuration
class OAuth2ClientConfiguration : ImportAware {
private var attrs: AnnotationAttributes? = null
private var attrs: AnnotationAttributes? = null
override fun setImportMetadata(meta: AnnotationMetadata) {
attrs = requireNotNull(fromMap(meta.getAnnotationAttributes(EnableOAuth2Client::class.java.name, false))) { "@EnableOAuth2Client is not present on importing class $meta.className" }
}

@Bean
fun oAuth2AccessTokenService(bearerTokenResolver: JwtBearerTokenResolver, client: OAuth2HttpClient) =
if (attrs?.getBoolean("cacheEnabled") == true) {
val max = attrs?.getNumber<Long>("cacheMaximumSize") ?: 0
val maxx = attrs?.getNumber<Long>("cacheMaximumSize") ?: 0
val skew = attrs?.getNumber<Long>("cacheEvictSkew") ?: 0
OAuth2AccessTokenService(bearerTokenResolver, OnBehalfOfTokenClient(client), ClientCredentialsTokenClient(client),
TokenExchangeClient(client), accessTokenResponseCache(max, skew),
accessTokenResponseCache(max, skew), accessTokenResponseCache(max, skew))
TokenExchangeClient(client), accessTokenResponseCache(maxx, skew),
accessTokenResponseCache(maxx, skew), accessTokenResponseCache(maxx, skew))
}
else {
OAuth2AccessTokenService(
Expand All @@ -49,7 +49,7 @@ class OAuth2ClientConfiguration : ImportAware {

@Bean
@ConditionalOnMissingBean(OAuth2HttpClient::class)
fun oAuth2HttpClient() = DefaultOAuth2HttpClient(RestClient.create())
fun oAuth2HttpClient(builder: RestClient.Builder) = DefaultOAuth2HttpClient(builder.build())

@Bean
@ConditionalOnClass(TokenValidationContextHolder::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,22 @@ import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.test.context.ActiveProfiles
import org.springframework.web.client.RestClient
import no.nav.security.token.support.client.core.oauth2.OnBehalfOfGrantRequest
import no.nav.security.token.support.client.spring.ClientConfigurationProperties
import no.nav.security.token.support.core.context.TokenValidationContextHolder

@SpringBootTest(classes = [OAuth2ClientConfiguration::class, RestTemplateAutoConfiguration::class])
@SpringBootTest(classes = [OAuth2ClientConfiguration::class, RestClientAutoConfiguration::class])
@ActiveProfiles("test")
internal class ClientConfigurationPropertiesTest {

@MockBean
private val tokenValidationContextHolder: TokenValidationContextHolder? = null

private lateinit var tokenValidationContextHolder: TokenValidationContextHolder

@Autowired
private lateinit var clientConfigurationProperties: ClientConfigurationProperties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import org.mockito.Mockito.*
import org.mockito.kotlin.whenever
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.http.MediaType.*
Expand All @@ -37,7 +39,7 @@ import no.nav.security.token.support.core.context.TokenValidationContext
import no.nav.security.token.support.core.context.TokenValidationContextHolder
import no.nav.security.token.support.core.jwt.JwtToken

@SpringBootTest(classes = [ConfigurationWithCacheEnabledTrue::class])
@SpringBootTest(classes = [ConfigurationWithCacheEnabledTrue::class, RestClientAutoConfiguration::class])
@ActiveProfiles("test")
internal class OAuth2AccessTokenServiceIntegrationTest {
@MockBean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ package no.nav.security.token.support.client.spring.oauth2
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
import no.nav.security.token.support.client.core.oauth2.OAuth2AccessTokenService
import no.nav.security.token.support.core.context.TokenValidationContextHolder

@SpringBootTest(classes = [ConfigurationWithCacheEnabledTrue::class])
@SpringBootTest(classes = [ConfigurationWithCacheEnabledTrue::class, RestClientAutoConfiguration::class])
@ActiveProfiles("test")
internal class OAuth2ClientConfigurationWithCacheTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ package no.nav.security.token.support.client.spring.oauth2
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.mock.mockito.MockBean
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
import no.nav.security.token.support.client.core.oauth2.OAuth2AccessTokenService
import no.nav.security.token.support.core.context.TokenValidationContextHolder

@SpringBootTest(classes = [ConfigurationWithCacheEnabledFalse::class])
@SpringBootTest(classes = [ConfigurationWithCacheEnabledFalse::class, RestClientAutoConfiguration::class])
@ActiveProfiles("test")
internal class OAuth2ClientConfigurationWithoutCacheTest {
@MockBean
Expand Down

0 comments on commit 81fefdc

Please sign in to comment.