|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2023 the original author or authors. |
|
|
|
|
* Copyright 2002-2025 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -60,7 +60,6 @@ import org.mockito.ArgumentCaptor;
@@ -60,7 +60,6 @@ import org.mockito.ArgumentCaptor;
|
|
|
|
|
|
|
|
|
|
import org.springframework.cache.Cache; |
|
|
|
|
import org.springframework.cache.concurrent.ConcurrentMapCache; |
|
|
|
|
import org.springframework.cache.support.SimpleValueWrapper; |
|
|
|
|
import org.springframework.core.ParameterizedTypeReference; |
|
|
|
|
import org.springframework.core.convert.converter.Converter; |
|
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
|
@ -702,9 +701,8 @@ public class NimbusJwtDecoderTests {
@@ -702,9 +701,8 @@ public class NimbusJwtDecoderTests {
|
|
|
|
|
@Test |
|
|
|
|
public void decodeWhenCacheThenRetrieveFromCache() throws Exception { |
|
|
|
|
RestOperations restOperations = mock(RestOperations.class); |
|
|
|
|
Cache cache = mock(Cache.class); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI), eq(String.class))).willReturn(JWK_SET); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI))).willReturn(mock(Cache.ValueWrapper.class)); |
|
|
|
|
Cache cache = new ConcurrentMapCache("cache"); |
|
|
|
|
cache.put(JWK_SET_URI, JWK_SET); |
|
|
|
|
// @formatter:off
|
|
|
|
|
NimbusJwtDecoder jwtDecoder = NimbusJwtDecoder.withJwkSetUri(JWK_SET_URI) |
|
|
|
|
.cache(cache) |
|
|
|
|
@ -712,9 +710,7 @@ public class NimbusJwtDecoderTests {
@@ -712,9 +710,7 @@ public class NimbusJwtDecoderTests {
|
|
|
|
|
.build(); |
|
|
|
|
// @formatter:on
|
|
|
|
|
jwtDecoder.decode(SIGNED_JWT); |
|
|
|
|
verify(cache).get(eq(JWK_SET_URI), eq(String.class)); |
|
|
|
|
verify(cache, times(2)).get(eq(JWK_SET_URI)); |
|
|
|
|
verifyNoMoreInteractions(cache); |
|
|
|
|
assertThat(cache.get(JWK_SET_URI, String.class)).isSameAs(JWK_SET); |
|
|
|
|
verifyNoInteractions(restOperations); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -722,9 +718,8 @@ public class NimbusJwtDecoderTests {
@@ -722,9 +718,8 @@ public class NimbusJwtDecoderTests {
|
|
|
|
|
@Test |
|
|
|
|
public void decodeWhenCacheAndUnknownKidShouldTriggerFetchOfJwkSet() throws JOSEException { |
|
|
|
|
RestOperations restOperations = mock(RestOperations.class); |
|
|
|
|
Cache cache = mock(Cache.class); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI), eq(String.class))).willReturn(JWK_SET); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI))).willReturn(new SimpleValueWrapper(JWK_SET)); |
|
|
|
|
Cache cache = new ConcurrentMapCache("cache"); |
|
|
|
|
cache.put(JWK_SET_URI, JWK_SET); |
|
|
|
|
given(restOperations.exchange(any(RequestEntity.class), eq(String.class))) |
|
|
|
|
.willReturn(new ResponseEntity<>(NEW_KID_JWK_SET, HttpStatus.OK)); |
|
|
|
|
|
|
|
|
|
@ -794,9 +789,8 @@ public class NimbusJwtDecoderTests {
@@ -794,9 +789,8 @@ public class NimbusJwtDecoderTests {
|
|
|
|
|
@Test |
|
|
|
|
public void decodeWhenCacheIsConfiguredAndParseFailsOnCachedValueThenExceptionIgnored() { |
|
|
|
|
RestOperations restOperations = mock(RestOperations.class); |
|
|
|
|
Cache cache = mock(Cache.class); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI), eq(String.class))).willReturn(JWK_SET); |
|
|
|
|
given(cache.get(eq(JWK_SET_URI))).willReturn(mock(Cache.ValueWrapper.class)); |
|
|
|
|
Cache cache = new ConcurrentMapCache("cache"); |
|
|
|
|
cache.put(JWK_SET_URI, JWK_SET); |
|
|
|
|
// @formatter:off
|
|
|
|
|
NimbusJwtDecoder jwtDecoder = NimbusJwtDecoder.withJwkSetUri(JWK_SET_URI) |
|
|
|
|
.cache(cache) |
|
|
|
|
@ -804,9 +798,7 @@ public class NimbusJwtDecoderTests {
@@ -804,9 +798,7 @@ public class NimbusJwtDecoderTests {
|
|
|
|
|
.build(); |
|
|
|
|
// @formatter:on
|
|
|
|
|
jwtDecoder.decode(SIGNED_JWT); |
|
|
|
|
verify(cache).get(eq(JWK_SET_URI), eq(String.class)); |
|
|
|
|
verify(cache, times(2)).get(eq(JWK_SET_URI)); |
|
|
|
|
verifyNoMoreInteractions(cache); |
|
|
|
|
assertThat(cache.get(JWK_SET_URI, String.class)).isSameAs(JWK_SET); |
|
|
|
|
verifyNoInteractions(restOperations); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|