Skip to content

Add integration tests for MCPRemoteProxy resource references#3608

Open
ChrisJBurns wants to merge 6 commits intomainfrom
mcp-remote-proxy-int-tests
Open

Add integration tests for MCPRemoteProxy resource references#3608
ChrisJBurns wants to merge 6 commits intomainfrom
mcp-remote-proxy-int-tests

Conversation

@ChrisJBurns
Copy link
Collaborator

@ChrisJBurns ChrisJBurns commented Feb 4, 2026

Summary

  • Add integration tests for MCPRemoteProxy controller's integration with other resources (ExternalAuthConfigRef, ToolConfigRef, GroupRef)
  • Add helper methods to reduce test duplication (WaitForPhase)
  • Add builder methods for setting resource references (WithExternalAuthConfigRef, WithToolConfigRef, WithGroupRef)
  • Leverage structured status conditions from Add structured status conditions for ToolConfigRef and ExternalAuthConfigRef validation #3634 for robust assertions on ToolConfigRef and ExternalAuthConfigRef validation

Test Coverage Added

ExternalAuthConfigRef Integration (3 tests)

  • Fails validation when referenced MCPExternalAuthConfig does not exist — asserts AuthConfigured=False with AuthInvalid reason
  • Successfully reconciles when referenced MCPExternalAuthConfig exists — asserts ExternalAuthConfigValidated=True with ExternalAuthConfigValid reason
  • Triggers reconciliation when MCPExternalAuthConfig is updated (hash tracking)

ToolConfigRef Integration (3 tests)

  • Fails validation when referenced MCPToolConfig does not exist — asserts ToolConfigValidated=False with ToolConfigNotFound reason and config name in message
  • Successfully reconciles when referenced MCPToolConfig exists — asserts ToolConfigValidated=True with ToolConfigValid reason
  • Propagates tool config changes to the RunConfig ConfigMap (hash tracking)

GroupRef Integration (4 tests)

  • Sets GroupRefValidated condition to False when MCPGroup does not exist
  • Sets GroupRefValidated condition to True when MCPGroup exists and is Ready
  • Does not have GroupRefValidated condition when no GroupRef is specified
  • Updates GroupRefValidated condition from False (NotFound) to True when MCPGroup is created

Test plan

  • All 25 MCPRemoteProxy integration tests pass locally
  • All 7 operator integration test suites pass (180 specs)
  • Code passes go vet and gofmt

Related Issues

Closes #3362 (Integration with Other Resources section)

Builds on #3634 (structured status conditions for ToolConfigRef and ExternalAuthConfigRef validation)

🤖 Generated with Claude Code

@github-actions github-actions bot added the size/L Large PR: 600-999 lines changed label Feb 4, 2026
@ChrisJBurns ChrisJBurns force-pushed the mcp-remote-proxy-int-tests branch from 1f6e931 to fa890fc Compare February 4, 2026 21:45
@github-actions github-actions bot added size/L Large PR: 600-999 lines changed and removed size/L Large PR: 600-999 lines changed labels Feb 4, 2026
@codecov
Copy link

codecov bot commented Feb 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.94%. Comparing base (865272e) to head (118ec38).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3608      +/-   ##
==========================================
- Coverage   65.99%   65.94%   -0.05%     
==========================================
  Files         415      415              
  Lines       41192    41194       +2     
==========================================
- Hits        27186    27167      -19     
- Misses      11911    11930      +19     
- Partials     2095     2097       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions github-actions bot added size/L Large PR: 600-999 lines changed size/M Medium PR: 300-599 lines changed and removed size/L Large PR: 600-999 lines changed size/M Medium PR: 300-599 lines changed labels Feb 5, 2026
ChrisJBurns and others added 5 commits February 6, 2026 16:23
Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com>
- Add WaitForPhase helper to reduce test duplication
- Add WaitForStatusMessage helper for status message assertions
- Update ExternalAuthConfigRef and ToolConfigRef tests to use helpers
- Improve "not found" assertions to verify both config name and
  "not found" substring for stronger validation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The MCPGroup controller requires a field index for MCPServer.Spec.GroupRef
to list servers belonging to a group. This was missing from the
mcp-remote-proxy test suite, causing failures when tests created MCPGroups.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ToolConfigRef "not found" test: Adjusted assertion to check only Phase=Failed
  since the controller doesn't set status.Message for ToolConfig validation
  failures (only logs the error). This is tracked in issue #3607.

- GroupRef "not Ready" test: Removed test that tried to manually set MCPGroup
  status to Pending, which doesn't work because the MCPGroup controller
  immediately reconciles empty groups to Ready state.

- GroupRef transition test: Changed from testing "not ready -> ready" to
  testing "not found -> found and ready", which avoids the race condition
  with the MCPGroup controller.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update MCPRemoteProxy integration tests to use the structured status
conditions added in #3634 for ToolConfigRef and ExternalAuthConfigRef
validation:

- ToolConfigRef "not found": Assert ToolConfigValidated=False with
  ToolConfigNotFound reason and config name in message
- ToolConfigRef "success": Assert ToolConfigValidated=True with
  ToolConfigValid reason
- ExternalAuthConfigRef "not found": Assert AuthConfigured=False with
  AuthInvalid reason
- ExternalAuthConfigRef "success": Assert ExternalAuthConfigValidated=True
  with ExternalAuthConfigValid reason

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ChrisJBurns ChrisJBurns force-pushed the mcp-remote-proxy-int-tests branch from fd171b0 to 78860ef Compare February 6, 2026 16:27
@github-actions github-actions bot added size/L Large PR: 600-999 lines changed and removed size/M Medium PR: 300-599 lines changed labels Feb 6, 2026
Extract repeated patterns into reusable helpers to reduce duplication
and align with sibling test suites (MCPServer, MCPRegistry):

- Add name derivation helpers (ServiceName, ConfigMapName, ServiceAccountName)
- Create k8s_helpers.go with WaitFor* resource and config hash helpers
- Add verifyRemoteProxyOwnerReference for owner ref verification
- Add WaitForCondition/WaitForConditionReason to status helpers
- Fix status helper constructor to accept existing proxy helper
- Fix noisy By() calls inside Eventually loops
- Consolidate two Describe blocks into one with shared setup/teardown
- Fix weak AuthConfigured test to assert condition does not exist
- Add owner reference verification to Deployment, Service, ConfigMap,
  and RBAC resource tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions github-actions bot added size/XL Extra large PR: 1000+ lines changed and removed size/L Large PR: 600-999 lines changed labels Feb 6, 2026
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Large PR Detected

This PR exceeds 1000 lines of changes and requires justification before it can be reviewed.

How to unblock this PR:

Add a section to your PR description with the following format:

## Large PR Justification

[Explain why this PR must be large, such as:]
- Generated code that cannot be split
- Large refactoring that must be atomic
- Multiple related changes that would break if separated
- Migration or data transformation

Alternative:

Consider splitting this PR into smaller, focused changes (< 1000 lines each) for easier review and reduced risk.

See our Contributing Guidelines for more details.


This review will be automatically dismissed once you add the justification section.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Extra large PR: 1000+ lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integration tests: MCPRemoteProxy Controller

1 participant