- Add Http4sTestServer singleton for shared HTTP4S test server across test classes
- Create Http4sServerIntegrationTest for real end-to-end HTTP4S server testing
- Move Http4sLiftBridgeParityTest to http4sbridge package for better organization
- Move Http4sLiftRoundTripPropertyTest to http4sbridge package for consistency
- Implement lazy initialization pattern matching TestServer (Jetty/Lift) behavior
- Add automatic server startup on first access and shutdown hook for cleanup
- Enable real HTTP requests over network to test complete server stack including middleware
- Replace auto-generated notice with timestamp in failed_tests.txt header
- Add new else branch to clear failed_tests.txt when all tests pass
- Include "ALL TESTS PASSED" marker in cleared failed_tests.txt file
- Add logging message when tests pass and failed tests file is cleared
- Improve test result tracking by distinguishing between failed and passing runs
- Replace NotFoundResponse with JSON error responses in Http4sLiftWebBridge for consistent error formatting
- Improve Content-Type header extraction with fallback to header parameters when contentType is unavailable
- Fix query parameter extraction to use parsed queryParams instead of raw URI query parsing
- Add wrappedRoutesV500ServicesWithJsonNotFound for standalone JSON 404 responses
- Add wrappedRoutesV500ServicesWithBridge for production-like fallback behavior to Lift bridge
- Fix multi-value query parameter handling in Http4sRequestConversionPropertyTest by adding all values at once
- Update authenticatedEndpoints to use path segments instead of string literals to avoid URL encoding issues
- Enhance logging messages to indicate JSON 404 responses are being returned
- These changes improve parity between Http4s and Lift implementations and provide better error diagnostics
- Replace mapfile with while loop for macOS compatibility when reading test files
- Refactor test execution to run test classes individually instead of batch mode
- Add parallel compilation support with -T 4 flag for faster builds
- Implement comprehensive test result tracking and aggregation
- Add detailed summary reporting with passed/failed test counts
- Display individual test status with checkmarks (✓) and crosses (✗) in output
- Enhance logging with per-test execution headers and status indicators
- Improve result determination logic to handle individual test failures
- Add failed test class listing in summary report for better visibility
- Replace unreliable grep pattern matching with line-number-based approach
- Find most recent test class name before each failure occurrence
- Use awk to filter test class lines that appear before failure markers
- Improve accuracy of test class identification in complex log outputs
- Maintain backward compatibility with existing test file discovery logic
- This change addresses edge cases where multiple test classes appear in logs before failures
- Remove ✅ emoji prefixes from APIMethods600 API documentation comments
- Remove ✅ emoji prefixes from SecureLogging utility method documentation
- Remove ✅ emoji prefixes from Http4sResponseConversionPropertyTest validation summary output
- Improve readability and consistency by using plain text instead of emoji markers
- Ensure documentation maintains clarity without relying on visual emoji indicators
- Add Http4sRequestConversionPropertyTest with 100+ iteration property tests
- Add Http4sResponseConversionPropertyTest with comprehensive response validation
- Implement random data generators for HTTP methods, URIs, headers, and bodies
- Test HTTP method preservation across random request variations
- Test URI path preservation with various path segments and encodings
- Test query parameter preservation with multiple values and special characters
- Test header preservation including custom headers and edge cases
- Test request body preservation with empty, JSON, and special character payloads
- Test response status code preservation and mapping
- Test response header preservation and accessibility
- Test response body preservation with various content types
- Validate edge cases: empty bodies, special characters, large payloads, unusual headers
- Ensure bridge correctly implements HTTPRequest interface per Requirements 2.2
- Minimum 100 iterations per test scenario for robust property validation
- Refactor Http4sCallContextBuilderTest with improved header extraction test scenarios
- Add comprehensive header handling tests including single values, multiple values, and special characters
- Enhance Authorization header extraction and validation tests
- Add Http4sResponseConversionTest with response mapping and conversion validation
- Create Http4sLiftRoundTripPropertyTest for HTTP4S to Lift Req conversion property-based testing
- Improve test documentation and validation requirements traceability
- Simplify imports and remove unused dependencies for cleaner test code
- Validates Requirements 2.2 for header parameter extraction and query parameter handling
- Add Http4sResponseConversionTest with comprehensive test coverage for Lift to HTTP4S response conversion
- Test all response types: InMemoryResponse, StreamingResponse, OutputStreamResponse, BasicResponse
- Validate HTTP status codes, headers, and body preservation across response types
- Test edge cases: empty responses, large payloads (>1MB), UTF-8 characters, error status codes
- Test streaming responses with callbacks and output stream handling
- Enhance Http4sLiftWebBridge debugging with body preview (first 200 bytes) and request JSON/body logging
- Improve observability for request/response flow debugging and troubleshooting
- Validates Requirements 2.4 (Task 2.5) for response conversion parity
- Add comprehensive debug logging throughout Http4sLiftBridge dispatch flow to track request handling and handler resolution
- Log stateful scope state, handler availability checks, and response types for better troubleshooting
- Add detailed request metadata logging (content-type, auth headers, body size, path information) in buildLiftReq
- Move http4sRoutes initialization to beforeAll() to ensure Lift is fully initialized before bridge setup
- Add afterAll() cleanup method to remove test data (ViewDefinition and AccountAccess records)
- Fix header and body ordering in toHttp4sRequest to ensure headers are set after body to prevent defaults from overriding
- Add explanatory comments documenting known limitation of bridge running in separate LiftRules instance from Jetty server
- Improve request construction to properly handle Content-Type and other headers in http4s requests
- Add comprehensive system views CRUD operations parity test between Lift and Http4s
- Import required dependencies for view creation, entitlements, and JSON serialization
- Add entitlements for system view operations (create, read, update, delete)
- Implement create operation test with request/response parity validation
- Implement get operation test to verify view retrieval consistency
- Implement update operation test with modified view attributes
- Implement get-after-update test to verify persistence of changes
- Implement delete operation test with account access cleanup
- Implement get-after-delete test to verify deletion across both frameworks
- Validate correlation IDs and response status codes for all operations
- Ensure JSON response structure parity between Lift and Http4s implementations
Updated the ApiCollector implementations across multiple API versions to replace the deprecated ScannedApiVersion with the new ApiVersion utility. This change enhances consistency and maintainability in the API versioning approach. The affected files include ApiCollector.scala for AU, Bahrain, Polish, STET, and UK Open Banking APIs, as well as the ApiVersion.scala file where new constants were defined for these versions.
Add test user and consumer setup in beforeAll for DirectLogin testing. Introduce new scenarios to validate DirectLogin behavior with and without authentication headers, ensuring consistent response codes and token presence across Http4s and Lift implementations. This improves test coverage and aligns with the ongoing efforts for contract parity.
Update feature descriptions and failure messages in Http4sLiftBridgeParityTest and V500ContractParityTest to consistently refer to 'liftweb' instead of 'Lift'. This change enhances clarity and aligns with the naming conventions used throughout the codebase. Additionally, update comments in MessageDocsJsonSchemaTest for consistency in terminology.
Remove the legacy Http4sBoot class and integrate the new Http4sLiftBridge to enhance request handling and response mapping between Http4s and Lift frameworks. This update includes the addition of standard headers in responses and improves the overall structure of the Http4s server.
New tests have been added to ensure contract parity between the Http4s and Lift implementations, focusing on consistent response behavior across different API versions.
Refactor the Http4s500 module to improve request handling by introducing a new method for building Lift requests and enhancing the response mapping from Lift to Http4s. This includes the addition of correlation header checks in the V500ContractParityTest to ensure consistent response behavior between Http4s and Lift implementations.
The changes aim to streamline the integration between the two frameworks, facilitating better contract parity testing and improving overall code clarity.
Add a proxy route in Http4s500 to forward unmatched requests to the legacy Lift framework, enabling contract parity testing between the two implementations. This allows new http4s endpoints to be tested against existing Lift behavior.
Update V500ContractParityTest to include a test for the private accounts endpoint, verifying both implementations return consistent responses. Simplify assertion syntax from `should not be empty` to `isDefined shouldBe true` for clarity.
Implement GET /banks/{bankId}/products and GET /banks/{bankId}/products/{productCode} endpoints in the http4s v5.0.0 routes. Enhance error response converter to parse APIFailureNewStyle from exception messages. Add corresponding unit and contract parity tests.
Implement GET /banks/{BANK_ID} endpoint in the http4s v5.0.0 routes, returning bank details in JSON format. This provides parity with the existing Lift-based API and enables direct http4s client access to individual bank resources.
Add corresponding test scenarios to verify the endpoint functionality and ensure response consistency between http4s and Lift implementations.
Introduce new Http4s500 module providing v5.0.0 API endpoints alongside existing v7.0.0 routes.
Update Http4sServer to serve both API versions by combining routes with fallback logic.
Modify ResourceDocMiddleware to extract API version from request path for proper call context.
Add comprehensive test suites for v5.0.0 routes and contract parity verification.
Move role-based authorization for resource-docs endpoint from endpoint implementation to ResourceDocMiddleware. This ensures consistent authentication handling across all endpoints and removes duplicate authorization logic.
The middleware now checks the `resource_docs_requires_role` property and enforces the `canReadResourceDoc` role when enabled. Tests are updated to verify proper 403 responses with missing role messages.
- Safely extract request headers using `S.request.map(...).openOr(Nil)` instead of `openOrThrowException`
- Add proper error handling for resource-docs endpoint using `ErrorResponseConverter`
- Extract query parameters directly from URI instead of parsing URL string
- Add comprehensive test suite for Http4s700 routes
- Ensure all responses (errors and successful) have JSON Content-Type
- Replace repeated EitherT patterns with a clean Validation DSL (success/failure)
- Add ValidationContext to accumulate user, bank, account, view, and counterparty entities
- Add detailed comments for authentication, authorization, and entity validation steps
- Simplify middleware logic while preserving original validation order and behavior
- Add comprehensive test suite for ResourceDocMatcher with 545 lines of test coverage
- Test exact path matching for GET, POST, and multi-segment paths
- Test verb and path mismatch scenarios returning None
- Test BANK_ID variable matching and parameter extraction
- Test BANK_ID + ACCOUNT_ID variable matching and extraction
- Test BANK_ID + ACCOUNT_ID + VIEW_ID variable matching and extraction
- Test COUNTERPARTY_ID variable matching and extraction
- Test non-matching request scenarios
- Ensure ResourceDocMatcher correctly identifies and extracts path parameters for all variable types
- Use FeatureSpec with Given-When-Then style for clear test documentation
- Add Http4sCallContextBuilderTest with 454 lines of test coverage
- Test URL extraction including path, query parameters, and path parameters
- Test header extraction and conversion to HTTPParam format
- Test body extraction for POST, PUT, and GET requests
- Test correlation ID generation and extraction from X-Request-ID header
- Test IP address extraction from X-Forwarded-For and direct connection
- Test authentication header extraction for all supported auth types
- Test error handling and edge cases in CallContext building
- Ensure Http4sCallContextBuilder correctly processes http4s Request[IO] objects