feat: Add test endpoints for Container Virtual Registry upstreams
Relates to issue #578679
Changes
This MR implements two test endpoints for Container Virtual Registry upstreams to achieve parity with Maven Virtual Registry API endpoints.
API Endpoints Added
-
POST /groups/:id/-/virtual_registries/container/upstreams/test
- Tests connection before creating an upstream
- Validates URL and credentials (username/password with all_or_none_of constraint)
- Creates temporary upstream instance without persisting
- Returns test results immediately
-
GET /virtual_registries/container/upstreams/:id/test
- Tests connection to an existing upstream
- Requires
read_virtual_registryauthorization - Calls the upstream's test method and returns results
Model Enhancement
- Added
testmethod toVirtualRegistries::Container::Upstreammodel - Implements HEAD request validation using bearer token authentication
- Returns
{ success: true }for 2XX/404 responses - Returns
{ success: false, result: "Error: ..." }for other status codes or HTTP errors - Uses existing cache entries' relative paths for testing, or empty path for new records
Test Coverage
- Created comprehensive RSpec tests for both endpoints (
ee/spec/requests/api/virtual_registries/container/upstreams_test_spec.rb) - Tests valid/invalid parameters, authentication, authorization, feature flag behavior, and different user roles
Documentation
- Added "Test connection before creating an upstream registry" section
- Added "Test connection to an upstream registry" section
- Includes example requests/responses and notes about 2XX/404 success interpretation
- Documented as GitLab 18.7
Key Implementation Details
- Pattern Consistency: Follows the exact pattern from Maven Virtual Registry implementation
-
Authentication: Uses bearer token authentication via the existing
headersmethod -
Authorization: Both endpoints require
read_virtual_registrypermission -
Feature Flag: Uses existing
container_virtual_registriesfeature flag - Error Handling: Properly handles HTTP errors and returns structured error messages
Edited by Radamanthus Batnag