Skip to content

[Repo Assist] test: add HandleRequestError coverage for auth/scope/unknown-method paths#202

Merged
shanselman merged 1 commit intomasterfrom
repo-assist/test-gateway-request-error-handling-02ba01aec8037a90
Apr 23, 2026
Merged

[Repo Assist] test: add HandleRequestError coverage for auth/scope/unknown-method paths#202
shanselman merged 1 commit intomasterfrom
repo-assist/test-gateway-request-error-handling-02ba01aec8037a90

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

🤖 This is an automated draft PR from Repo Assist.

Summary

Adds 13 new tests to OpenClawGatewayClientTests covering the private HandleRequestError path, which had zero test coverage. This code handles critical connection-lifecycle scenarios: authentication failures, device signature fallback chains, scope access errors, and unsupported-method detection.

Motivation

Issue #198 highlighted that the reconnect/auth-failure logic can behave incorrectly (specifically: _pairingRequiredAwaitingApproval blocking reconnect, and _signatureTokenMode cycling). Writing tests for HandleRequestError directly verifies these behaviours and will guard against regressions when fixing #198.

Changes

tests/OpenClaw.Shared.Tests/OpenClawGatewayClientTests.cs

New helper methods on GatewayClientTestHelper:

  • GatewayClientTestHelper(IOpenClawLogger) — constructor for log-capture tests
  • TrackPendingRequest(requestId, method) — pre-registers a pending request so ProcessRawMessage can resolve the method and reach the correct HandleRequestError branch
  • GetPairingRequiredFlag() — reads _pairingRequiredAwaitingApproval
  • GetSignatureTokenMode() — reads _signatureTokenMode as a string
  • GetOperatorReadScopeUnavailable() — reads _operatorReadScopeUnavailable
  • CaptureStatusChanges() — subscribes to StatusChanged for event-assertion tests

New tests (13):

Test Verifies
HandleRequestError_PairingRequired_SetsPairingBlockFlag _pairingRequiredAwaitingApproval = true on "pairing required" connect error
HandleRequestError_PairingRequired_LogsWarning auto-reconnect-paused warning logged
HandleRequestError_PairingRequired_RaisesErrorStatus ConnectionStatus.Error raised
HandleRequestError_DeviceSignatureInvalid_CyclesSignatureMode mode steps V3AuthToken → V3EmptyToken
HandleRequestError_DeviceSignatureInvalid_LogsWarningWithMode rejection warning logged
HandleRequestError_MissingOperatorReadScope_SetsUnavailableFlag (×4 Theory) _operatorReadScopeUnavailable set for sessions.list, usage.status, usage.cost, node.list
HandleRequestError_UnknownMethod_UsageStatus_SetsUnsupportedFlag _usageStatusUnsupported set
HandleRequestError_UnknownMethod_UsageCost_SetsUnsupportedFlag _usageCostUnsupported set
HandleRequestError_UnknownMethod_SessionsPreview_SetsUnsupportedFlag _sessionPreviewUnsupported set
HandleRequestError_UnknownMethod_NodeList_SetsUnsupportedFlag _nodeListUnsupported set

Test Status

  • ✅ Build: dotnet build OpenClaw.Shared.Testssucceeded, 0 warnings
  • ✅ Shared tests: 643 passed, 20 skipped (up from 630 before this PR)
  • ✅ Tray tests: passed, 0 failures
  • No source changes — tests only

Generated by 🌈 Repo Assist, see workflow run. Learn more.

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@97143ac59cb3a13ef2a77581f929f06719c7402a

Generated by 🌈 Repo Assist, see workflow run. Learn more.

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@97143ac59cb3a13ef2a77581f929f06719c7402a

…aths

Add 13 new tests to OpenClawGatewayClientTests covering the
HandleRequestError private method via reflection:

Pairing required (3 tests):
- SetsPairingBlockFlag: verifies _pairingRequiredAwaitingApproval = true
- LogsWarning: verifies auto-reconnect-paused warning is emitted
- RaisesErrorStatus: verifies ConnectionStatus.Error is raised

Device signature invalid (2 tests):
- CyclesSignatureMode: verifies mode steps V3AuthToken -> V3EmptyToken
- LogsWarningWithMode: verifies rejection warning is logged

Missing operator.read scope (1 Theory x 4 cases):
- sessions.list, usage.status, usage.cost, node.list all set
  _operatorReadScopeUnavailable = true

Unknown method fallbacks (4 tests):
- usage.status, usage.cost, sessions.preview, node.list each set
  their respective _*Unsupported flags

Also adds GatewayClientTestHelper overloads:
- Constructor accepting IOpenClawLogger (for log capture)
- TrackPendingRequest, GetPairingRequiredFlag, GetSignatureTokenMode,
  GetOperatorReadScopeUnavailable, CaptureStatusChanges helpers

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@shanselman shanselman marked this pull request as ready for review April 23, 2026 17:25
@shanselman shanselman merged commit 2c29677 into master Apr 23, 2026
@shanselman shanselman deleted the repo-assist/test-gateway-request-error-handling-02ba01aec8037a90 branch April 23, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant