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

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions