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

  1. 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
  2. GET /virtual_registries/container/upstreams/:id/test

    • Tests connection to an existing upstream
    • Requires read_virtual_registry authorization
    • Calls the upstream's test method and returns results

Model Enhancement

  • Added test method to VirtualRegistries::Container::Upstream model
  • 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 headers method
  • Authorization: Both endpoints require read_virtual_registry permission
  • Feature Flag: Uses existing container_virtual_registries feature flag
  • Error Handling: Properly handles HTTP errors and returns structured error messages
Edited by Radamanthus Batnag

Merge request reports

Loading