zai-proxy/docs/notes/bf-3zp.md
jedarden de0320d23d docs(bf-3zp): verify test infrastructure for mock upstream server
Verified comprehensive test infrastructure already exists in proxy/helpers_test.go:
- MockUpstream with configurable scenarios
- Test mode configuration (TestModeEnv, TestMaxRetriesEnv)
- Request builders and response assertions
- Proxy handler factory and execution helpers
- All helper tests pass successfully

No code changes needed - infrastructure is complete and functional.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-02 14:42:20 -04:00

3.3 KiB

Test Infrastructure Verification (bf-3zp)

Summary

Verified that comprehensive test infrastructure for mock upstream server already exists in proxy/helpers_test.go.

Existing Infrastructure

1. MockUpstream Server

  • MockUpstream struct with httptest.Server
  • Configurable scenarios (429, empty body, invalid JSON, etc.)
  • Request counting and failure simulation
  • Custom handler support

2. Test Mode Configuration

  • TestModeEnv environment variable support
  • TestMaxRetriesEnv for fast test execution
  • ConfigureTestEnv() helper function
  • IsTestMode() and GetTestMaxRetries() functions

3. Test Request Builders

  • CreateProxyRequest() - Generic request builder
  • CreateMessagesRequest() - /v1/messages requests
  • CreateStreamingMessagesRequest() - Streaming requests
  • CreateNonStreamingMessagesRequest() - Non-streaming requests

4. Response Assertions

  • AssertStatusCode() - Status code validation
  • AssertJSONBody() - JSON validation
  • AssertResponseField() - Field value checking
  • AssertEmptyBody() - Empty body validation
  • AssertHeader() - Header validation
  • AssertContentType() - Content-Type validation

5. Proxy Handler Factory

  • CreateTestProxyHandler() - Creates configured ProxyHandler instances
  • Automatically sets test environment variables
  • Configures high rate limits to avoid test interference

6. Test Execution Helpers

  • ExecuteProxyRequest() - Execute request through proxy
  • ExecuteMessagesRequest() - Execute /v1/messages request
  • Response reading helpers (ReadResponseBody, ReadJSONResponse)

7. Duration Assertions

  • AssertDurationAtLeast() - Minimum duration validation
  • AssertDurationInRange() - Range validation
  • CalculateBackoffDelay() - Backoff calculation helper
  • CalculateTotalMaxDelay() - Total delay calculation

8. Mock Server Helpers

  • CreateCountingMockServer() - Counting mock server
  • CountingMockServer - Wraps httptest.Server with counting

9. Additional Helpers

  • WaitForCondition() - Polling helper
  • AssertUpstreamCallCount() - Request count validation
  • ResetMetrics() - Metrics reset helper
  • CreateTestRequestBody() - Body builder

Verification Results

All helper tests pass:

go test ./proxy/ -run TestHelper -v
=== RUN   TestHelperFunctions
--- PASS: TestHelperFunctions (0.00s)
    --- PASS: TestHelperFunctions/IsTestMode (0.00s)
    --- PASS: TestHelperFunctions/GetTestMaxRetries (0.00s)
    --- PASS: TestHelperFunctions/CalculateBackoffDelay (0.00s)
    --- PASS: TestHelperFunctions/CreateNonStreamingMessagesRequest (0.00s)
    --- PASS: TestHelperFunctions/CreateStreamingMessagesRequest (0.00s)

Mock upstream tests pass:

go test ./proxy/ -run TestMockUpstreamBasic -v
=== RUN   TestMockUpstreamBasic
--- PASS: TestMockUpstreamBasic (0.00s)
    --- PASS: TestMockUpstreamBasic/success_scenario (0.00s)
    --- PASS: TestMockUpstreamBasic/429_scenario (0.00s)

Conclusion

The test infrastructure described in bead bf-3zp already exists and is fully functional. No new code changes are needed. The infrastructure includes:

  • net/http/httptest-based mock upstream server
  • Test helper functions for common setup
  • Environment/test-mode flags for fast execution
  • Tests never hit real api.z.ai (uses mock servers)
  • All helper tests pass