Skip to content

Tests: Add integration tests for end-to-end provisioning extension flow #7481

Description

@wbreza

Summary

Create integration tests that exercise the full provisioning extension flow end-to-end: extension connects via gRPC, registers a provisioning provider, azd core resolves it from IoC, and calls all provider methods through the broker with correct request-response correlation and progress streaming.

Parent Epic

Part of #7465 — Provisioning Providers in the AZD Extension Framework

Context

Integration tests validate the complete stack works together — from proto serialization through gRPC transport, MessageBroker correlation, IoC resolution, and type conversion. Can use an in-process test harness or the demo extension.

Detailed Requirements

Test Scenarios

  1. Registration Flow

    • Extension opens gRPC stream
    • Sends RegisterProvisioningProviderRequest with provider name
    • Receives RegisterProvisioningProviderResponse
    • Provider is resolvable from IoC by name
  2. Full Lifecycle

    • Initialize with project path and options (including Config)
    • Call State, get outputs and resources
    • Call Deploy, receive progress messages, get deployment result
    • Call Preview, receive progress, get preview with changes
    • Call Destroy, receive progress, get invalidated env keys
    • Call EnsureEnv
    • Call Parameters, get parameter list
  3. Error Propagation

    • Extension provider returns error → core receives typed error
    • ExtensionError fields preserved across gRPC boundary
  4. Progress Streaming

    • Deploy sends 5 progress messages before final response
    • Core receives all 5 progress callbacks in order
    • Request ID matches throughout
  5. Stream Lifecycle

    • Extension disconnects → broker cleanup
    • Context cancellation → graceful shutdown
  6. Multiple Providers

    • Two extensions register different provider names
    • IoC resolves correct provider for each name

Acceptance Criteria

  • Integration test starts gRPC server with ProvisioningService
  • Test extension registers a mock provisioning provider
  • Core resolves provider via IoC using provider name
  • Full request-response cycle for all 7 provider methods
  • Progress messages received during Deploy/Preview/Destroy
  • Error propagation works (extension error → core error)
  • Stream cleanup on extension disconnect
  • Tests pass in CI

Dependencies

Files

  • Create: Integration test file(s) in appropriate test directory

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions