Skip to content

Commit 8e7408d

Browse files
Fix #1210 - use put method to set headers in oauth2 delegate to avoid immutable error (#1211) (#1213)
* Fix #1210 - use put method to set headers in oauth2 delegate to avoid immutable error * Add unit test --------- Signed-off-by: gabriel-farache <[email protected]> Co-authored-by: gabriel-farache <[email protected]>
1 parent 70f1e45 commit 8e7408d

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

client/oidc/src/main/java/io/quarkiverse/openapi/generator/oidc/ClassicOidcClientRequestFilterDelegate.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.quarkiverse.openapi.generator.oidc;
22

33
import java.io.IOException;
4+
import java.util.Collections;
45

56
import jakarta.annotation.Priority;
67
import jakarta.enterprise.inject.spi.InjectionPoint;
@@ -42,7 +43,7 @@ protected java.util.Optional<String> clientId() {
4243
public void filter(ClientRequestContext requestContext) throws IOException {
4344
try {
4445
String accessToken = this.getAccessToken();
45-
requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
46+
requestContext.getHeaders().put(HttpHeaders.AUTHORIZATION, Collections.singletonList("Bearer " + accessToken));
4647
} catch (DisabledOidcClientException ex) {
4748
LOG.debug("Client is disabled, acquiring and propagating the token is not necessary");
4849
} catch (RuntimeException ex) {

client/oidc/src/main/java/io/quarkiverse/openapi/generator/oidc/ReactiveOidcClientRequestFilterDelegate.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.quarkiverse.openapi.generator.oidc;
22

33
import java.io.IOException;
4+
import java.util.Collections;
45

56
import jakarta.annotation.Priority;
67
import jakarta.enterprise.inject.spi.InjectionPoint;
@@ -57,8 +58,8 @@ public void filter(ResteasyReactiveClientRequestContext requestContext) {
5758
requestContext.suspend();
5859

5960
super.getTokens().subscribe().with(tokens -> {
60-
requestContext.getHeaders().putSingle(HttpHeaders.AUTHORIZATION,
61-
BEARER_SCHEME_WITH_SPACE + tokens.getAccessToken());
61+
requestContext.getHeaders().put(HttpHeaders.AUTHORIZATION,
62+
Collections.singletonList(BEARER_SCHEME_WITH_SPACE + tokens.getAccessToken()));
6263
requestContext.resume();
6364
}, t -> {
6465
if (t instanceof DisabledOidcClientException) {

client/oidc/src/test/java/io/quarkiverse/openapi/generator/oidc/OAuth2AuthenticationProviderTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.mockito.Mockito.when;
55

66
import java.io.IOException;
7+
import java.util.Collections;
78
import java.util.List;
89
import java.util.Optional;
910
import java.util.stream.Stream;
@@ -57,6 +58,7 @@ public class OAuth2AuthenticationProviderTest {
5758
@BeforeEach
5859
void setUp() {
5960
headers = new MultivaluedHashMap<>();
61+
headers.put(HttpHeaders.AUTHORIZATION, Collections.singletonList("TEST"));
6062
Mockito.lenient().doReturn(headers).when(requestContext).getHeaders();
6163

6264
classicDelegate = Mockito.mock(ClassicOidcClientRequestFilterDelegate.class);

client/oidc/src/test/java/io/quarkiverse/openapi/generator/oidc/ReactiveOAuth2AuthenticationProviderTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.mockito.Mockito.when;
55

66
import java.io.IOException;
7+
import java.util.Collections;
78
import java.util.List;
89
import java.util.Optional;
910
import java.util.stream.Stream;
@@ -61,6 +62,7 @@ public class ReactiveOAuth2AuthenticationProviderTest {
6162
@BeforeEach
6263
void setUp() {
6364
headers = new MultivaluedHashMap<>();
65+
headers.put(HttpHeaders.AUTHORIZATION, Collections.singletonList("TEST"));
6466
Mockito.lenient().doReturn(headers).when(reactiveRequestContext).getHeaders();
6567
Mockito.lenient().doReturn(restClientRequestContext).when(reactiveRequestContext).getRestClientRequestContext();
6668
Mockito.lenient().doAnswer(invocationOnMock -> restClientRequestContext.setSuspended(true))

0 commit comments

Comments
 (0)