Repository navigation
[TST-380] test: credentials, integrations and the MCP catalog run against the real server - #424
Merged
Merged
Conversation
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 17, 2026
…eal server Part of #380 (PR 4 of 4). Nine live tests on the simulated-drive fixture. Each fails at its oracle when its operation is made a no-op that returns a valid success shape, or sent to the wrong route.
Blind-Striker
force-pushed
the
test/tst-380-local-flows
branch
from
October 17, 2026 06:52
65db67a to
b66bc86
Compare
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 17, 2026
This was referenced Oct 17, 2026
This was referenced Oct 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Description
What does this PR do?
It adds nine real-server tests for the local credential, integration and MCP catalog operations, the last of #380's sweep. They run on the existing simulated-drive fixture, with no new fixture, provider, support type or dependency.
RemoveCredentialAsyncCredentialsClientLiveTests.RemoveCredentialAsync_Should_Remove_The_Owned_Row_When_It_ExistsCreateCredentialAsyncCredentialsClientLiveTests.CreateCredentialAsync_Should_Persist_The_Row_When_The_Id_Is_UnusedActivateCredentialAsyncCredentialsClientLiveTests.ActivateCredentialAsync_Should_Select_The_Older_Row_When_A_Newer_Row_Is_ActiveListCredentialsAsyncCredentialsClientLiveTests.ListCredentialsAsync_Should_Return_The_Owned_Metadata_When_A_Row_Was_CreatedUpdateCredentialAsyncCredentialsClientLiveTests.UpdateCredentialAsync_Should_Replace_The_Label_When_A_Row_ExistsConnectWithKeyAsyncIntegrationClientLiveTests.ConnectWithKeyAsync_Should_Store_A_Connection_When_The_Seeded_Key_Method_Is_UsedIntegrationClient.GetAsyncIntegrationClientLiveTests.GetAsync_Should_Return_The_Seeded_Integration_When_Its_Id_Is_RequestedListIntegrationsAsyncIntegrationsClientLiveTests.ListIntegrationsAsync_Should_Include_The_Seeded_Provider_When_Plugins_Are_ActivatedListMcpServersAsyncMcpServersClientLiveTests.ListMcpServersAsync_Should_Report_The_Disabled_Entry_When_It_Was_Added_At_RuntimeSecrets. Credential values are inert sentinels the tests create. No test prints, compares, serializes or dumps a value, a response body or
RawBody. Every list is filtered to the test's own IDs or labels, with no global counts and no host or environment credential touched.Ownership. Each credential, connection and MCP entry has its cleanup registered before it is created, so a lost response still cleans up. M01's MCP entry is typed, disabled, OAuth-off, and points at an inert
.invalidURL, so no connection is attempted.With this PR, #380's sweep is complete: PRs 1–4 cover every reachable operation the issue named, and the out-list with reasons is on the issue.
Part of #380 (PR 4 of 4).
🔄 Type of Change
🎯 Protocol & API Surface
external/,spec/orsrc/was touched🧪 Testing
Each test is shown to catch the missing or wrong operation. It is green, then red at its oracle, then green again; the mutations are not committed.
/api/integration/opencodesim, receivedopencodesimis missingEvery failure is an assertion, never a hang guard or timeout. M01 checks the list before it waits for the status event, so a no-op cannot stall it.
Review. A fresh read-only review found no defects. Its one note was a null-forgiving
request.Id!without a stated invariant (slop-review R7). The test helper now returns the ID it assigned, so the operator is gone. The resulting arrange copy between C02 and C04 moved into a private method in the class; theContains(id)oracle each mutant failed on is unchanged.Merge-queue ejection, and the fix. The first merge group failed the clone gate. #423 (PR 3, merged just before) and this PR each carried the same owned-MCP removal helper:
ExperimentalClientLiveTests:185-193McpServersClientLiveTests:59-68Each PR was clone-free on its own. Two slices now use the disabled-MCP registration and its owned removal, so per
testing-style.mdthey live in the rootSupport/. The new helperSupport/DisabledMcpServer.csholds both, and the two classes call it instead of private copies. The helper's removal still tolerates only the exact already-missing refusal. The fix is rebased onto #423's merge,3cbb8c14.✅ Completion Gate
Local check (
quality-gates.md) on the first head, basecff6057f, idle host. Every step's own exit code was read:dotnet build --configuration Release: 0 warnings, 0 errorsdotnet format whitespace/dotnet format style --severity warn: no changesverify-clones: passed, 0 new (tests 5.68%, under the 6% ceiling); no baseline changeOpenCode.Sdk.Tools.Tests(all but NativeAot): 1995, 0 failedOpenCode.Sdk.Tests(all but ServiceElection/NativeAot): 8317, 0 failedAfter review, a narrow re-check ran on that head. The head
65db67aechanges onlyCredentialsClientLiveTests.cs(the R7 fix and its private method). On it:verify-clonesreports 0 new;CredentialsClientLiveTestspasses 15, 0 failed;Final head
b66bc866(rebased onto3cbb8c14, with the shared helper):dotnet build --configuration Release: 0 warnings, 0 errorsdotnet formatstyle and whitespace: no changesverify-clones: passed, 0 new (tests 5.66%)OpenCode.Sdk.Tools.Tests(all but NativeAot): 1995, 0 failedOpenCode.Sdk.Tests(all but ServiceElection/NativeAot): 8344, 0 failedThe host runs Bun 1.4.3, a maintainer-named off-pin host (
OPENCODE_SDK_TESTS_BUN_MISMATCH=allow); the pin is 1.4.2.✅ Code Quality Checklist