[
https://issues.apache.org/jira/browse/KNOX-3317?focusedWorklogId=1019321&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1019321
]
ASF GitHub Bot logged work on KNOX-3317:
----------------------------------------
Author: ASF GitHub Bot
Created on: 08/May/26 08:26
Start Date: 08/May/26 08:26
Worklog Time Spent: 10m
Work Description: smolnar82 opened a new pull request, #1225:
URL: https://github.com/apache/knox/pull/1225
[KNOX-3317](https://issues.apache.org/jira/browse/KNOX-3317) - Add unit
tests for TokenMetadataHeaderHandler
## What changes were proposed in this pull request?
This PR introduces comprehensive unit tests for the
`TokenMetadataHeaderHandler` class within the `gateway-service-restcatalog`
module.
Specifically, it adds tests to:
- Verify that no `NullPointerException` occurs when the
`token-metadata-headers` configuration parameter is missing (null).
- Ensure headers are correctly applied to outbound requests based on
inbound client credentials and token metadata.
- Validate support for custom header prefixes.
- Confirm graceful handling of missing metadata items.
## How was this patch tested?
The patch was tested by running the newly created unit tests and existing
tests in the `gateway-service-restcatalog` module:
`mvn -pl gateway-service-restcatalog test`
The test suite `TokenMetadataHeaderHandlerTest` includes:
- `testNullTokenMetadataHeadersConfig`: Verifies the fix for the NPE.
- `testEmptyTokenMetadataHeadersConfig`: Verifies handling of empty
configuration strings.
- `testApplyHeaders`: Verifies correct mapping of multiple metadata items
to headers.
- `testApplyHeadersCustomPrefix`: Verifies that custom header prefixes are
respected.
- `testApplyHeadersMissingMetadata`: Verifies that headers are not added if
metadata is missing.
## Integration Tests
N/A
## UI changes
(None)
Issue Time Tracking
-------------------
Worklog Id: (was: 1019321)
Remaining Estimate: 0h
Time Spent: 10m
> Fix NPE when no token metadata headers defined for ICEBERG-REST
> ---------------------------------------------------------------
>
> Key: KNOX-3317
> URL: https://issues.apache.org/jira/browse/KNOX-3317
> Project: Apache Knox
> Issue Type: Bug
> Components: Server
> Affects Versions: 3.0.0
> Reporter: Sandor Molnar
> Assignee: Sandor Molnar
> Priority: Critical
> Fix For: 3.0.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> NOX-3279 introduces the ability to apply custom headers Knox dispatches to
> ICEBERG-REST.
> The issue is that {{service.xml}} doesn't contain any dispatch element with `
> token-metadata-headers` which ends up in the following runtime exception:
>
> {noformat}
> Caused by: java.lang.NullPointerException: Cannot invoke
> "String.split(String)" because "tokenMetadataHeadersConfig" is null at
> org.apache.knox.gateway.service.restcatalog.TokenMetadataHeaderHandler.getMetadataHeaderConfig(TokenMetadataHeaderHandler.java:93)
> ~[gateway-service-restcatalog-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT] at
> org.apache.knox.gateway.service.restcatalog.TokenMetadataHeaderHandler.<init>(TokenMetadataHeaderHandler.java:67)
> ~[gateway-service-restcatalog-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT] at
> org.apache.knox.gateway.service.restcatalog.RestCatalogHaDispatch.<init>(RestCatalogHaDispatch.java:36)
> ~[gateway-service-restcatalog-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT] at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method) ~[?:?] at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
> ~[?:?] at
> jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> ~[?:?] at
> java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
> ~[?:?] at java.lang.reflect.Constructor.newInstance(Constructor.java:481)
> ~[?:?] at
> org.apache.knox.gateway.dispatch.GatewayDispatchFilter.newInstanceFromName(GatewayDispatchFilter.java:226)
> ~[gateway-spi-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT] at
> org.apache.knox.gateway.dispatch.GatewayDispatchFilter.init(GatewayDispatchFilter.java:75)
> ~[gateway-spi-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT] at
> org.apache.knox.gateway.GatewayFilter$Holder.getInstance(GatewayFilter.java:421)
> ~[gateway-server-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT]{noformat}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)