Raghav Maheshwari created KNOX-3451:
---------------------------------------
Summary: Add unit tests for XForwardedHeaderRequestWrapper
Key: KNOX-3451
URL: https://issues.apache.org/jira/browse/KNOX-3451
Project: Apache Knox
Issue Type: Improvement
Reporter: Raghav Maheshwari
Add dedicated unit tests for `XForwardedHeaderRequestWrapper` to improve
unit-test coverage of the forwarded-header handling logic in Apache Knox.
The `XForwardedHeaderRequestWrapper` class contains logic for generating and
handling forwarded request headers such as `X-Forwarded-For`,
`X-Forwarded-Proto`, `X-Forwarded-Port`, `X-Forwarded-Host`,
`X-Forwarded-Server`, and `X-Forwarded-Context`.
Currently, the existing test coverage primarily exercises forwarded-header
behavior through the filter. Adding a dedicated unit test class for the request
wrapper will provide more focused coverage of the wrapper's individual
behaviors and edge cases.
Proposed Change
Add:
`gateway-server-xforwarded-filter/src/test/java/org/apache/knox/gateway/filter/XForwardedHeaderRequestWrapperTest.java`
The test class should cover the following scenarios:
* Verify default `X-Forwarded-For` behavior when the header is not already
present.
* Verify that an existing `X-Forwarded-For` value is preserved and the remote
address is appended appropriately.
* Verify `X-Forwarded-Proto` generation for HTTP requests.
* Verify `X-Forwarded-Proto` generation for HTTPS requests.
* Verify default ports (`80` for HTTP and `443` for HTTPS).
* Verify that an existing `X-Forwarded-Port` value is preserved.
* Verify `X-Forwarded-Host` handling.
* Verify case-insensitive forwarded-header lookup.
* Verify `X-Forwarded-Context` generation from the request context path.
* Verify service-context handling.
* Verify service-name/context handling when enabled.
* Verify `getHeaders()` returns the expected forwarded-header values.
* Add regression coverage for host values containing port information.
* Add edge-case coverage for IPv6-style host values if applicable to the
current implementation.
Testing Approach
Use the existing JUnit 4 and EasyMock testing conventions used by the
`gateway-server-xforwarded-filter` module.
The tests should mock `HttpServletRequest` and verify the values exposed by
`XForwardedHeaderRequestWrapper`.
No production-code changes are expected as part of this issue.
Expected Outcome
The change will provide direct unit-test coverage for
`XForwardedHeaderRequestWrapper`, making the forwarded-header behavior easier
to validate and reducing the risk of regressions when the request-wrapper
implementation is modified in the future.
Acceptance Criteria
* A dedicated `XForwardedHeaderRequestWrapperTest` test class is added.
* Existing forwarded-header behavior is covered by focused unit tests.
* HTTP and HTTPS scenarios are covered.
* Existing and generated forwarded-header values are tested.
* Context/service-name behavior is covered.
* Header lookup behavior is tested.
* Relevant edge cases are covered.
* All existing tests continue to pass.
* The new tests follow the existing Apache Knox test conventions.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)