Skip to content

feat: add custom container registry support and align lifetime defaul…

b4692c5
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

Custom Container Registry Support & Lifetime Default Alignment #17

feat: add custom container registry support and align lifetime defaul…
b4692c5
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results (macOS) succeeded Nov 4, 2025 in 1s

288 passed, 0 failed and 0 skipped

Tests passed successfully

Report Passed Failed Skipped Time
/Users/runner/work/dotnet-aspire-for-localstack/dotnet-aspire-for-localstack/test-results/unit/testResults-net8.0.trx 144βœ… 3s
/Users/runner/work/dotnet-aspire-for-localstack/dotnet-aspire-for-localstack/test-results/unit/testResults-net9.0.trx 144βœ… 2s

βœ…Β /Users/runner/work/dotnet-aspire-for-localstack/dotnet-aspire-for-localstack/test-results/unit/testResults-net8.0.trx

144 tests were completed in 3s with 144 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackEnabledAnnotationTests 4βœ… 1ms
Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackReferenceAnnotationTests 5βœ… 2ms
Aspire.Hosting.LocalStack.Unit.Tests.CDK.CdkBootstrapManagerTests 9βœ… 53ms
Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackContainerOptionsTests 16βœ… 31ms
Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackLogLevelTests 11βœ… 7ms
Aspire.Hosting.LocalStack.Unit.Tests.Core.LocalStackResourceTests 12βœ… 3ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackCloudFormationResourceExtensionsTests 9βœ… 260ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackProjectExtensionsTests 8βœ… 232ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddAWSCDKBootstrapCfTemplateForLocalStackTests 3βœ… 48ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddLocalStackTests 27βœ… 774ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.UseLocalStackTests 9βœ… 509ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.ConstantsTests 8βœ… 21ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackConnectionStringAvailableCallbackTests 4βœ… 11ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackHealthCheckTests 9βœ… 233ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackResourceConfiguratorTests 10βœ… 232ms

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackEnabledAnnotationTests

βœ… LocalStackEnabledAnnotation_Should_Implement_IResourceAnnotation
βœ… LocalStackEnabledAnnotation_Should_Maintain_Same_Resource_Reference
βœ… LocalStackEnabledAnnotation_Should_Store_LocalStack_Resource_Reference
βœ… LocalStackEnabledAnnotation_Should_Throw_ArgumentNullException_For_Null_LocalStack_Resource

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackReferenceAnnotationTests

βœ… LocalStackReferenceAnnotation_Should_Accept_Resource_With_Empty_Name
βœ… LocalStackReferenceAnnotation_Should_Implement_IResourceAnnotation
βœ… LocalStackReferenceAnnotation_Should_Maintain_Same_Target_Resource_Reference
βœ… LocalStackReferenceAnnotation_Should_Store_Target_Resource_Reference
βœ… LocalStackReferenceAnnotation_Should_Throw_ArgumentNullException_For_Null_Target_Resource

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.CDK.CdkBootstrapManagerTests

βœ… GetBootstrapTemplatePath_Should_Be_Thread_Safe_And_Handle_Parallel_Calls
βœ… GetBootstrapTemplatePath_Should_Create_Directory_If_It_Does_Not_Exist
βœ… GetBootstrapTemplatePath_Should_Create_File_That_Exists
βœ… GetBootstrapTemplatePath_Should_Create_Non_Empty_Template_File
βœ… GetBootstrapTemplatePath_Should_Extract_Template_To_Temp_Directory
βœ… GetBootstrapTemplatePath_Should_Handle_Multiple_Sequential_Calls
βœ… GetBootstrapTemplatePath_Should_Overwrite_Existing_File
βœ… GetBootstrapTemplatePath_Should_Return_Same_Path_On_Multiple_Calls
βœ… GetBootstrapTemplatePath_Should_Return_Valid_File_Path

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackContainerOptionsTests

βœ… AdditionalEnvironmentVariables_Should_Be_Mutable_Dictionary
βœ… AdditionalEnvironmentVariables_Should_Use_Ordinal_StringComparer
βœ… Constructor_Should_Set_Correct_Defaults
βœ… ContainerImage_Should_Be_Settable
βœ… ContainerImage_Should_Default_To_Null
βœ… ContainerImageTag_Should_Be_Settable
βœ… ContainerImageTag_Should_Default_To_Null
βœ… ContainerRegistry_Should_Be_Settable
βœ… ContainerRegistry_Should_Default_To_Null
βœ… EagerLoadedServices_Should_Accept_Multiple_Services
βœ… EagerLoadedServices_Should_Accept_Single_Service
βœ… EagerLoadedServices_Should_Default_To_Empty_Collection
βœ… EnableDockerSocket_Should_Be_Settable
βœ… EnableDockerSocket_Should_Default_To_False
βœ… Port_Should_Be_Settable
βœ… Port_Should_Default_To_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackLogLevelTests

βœ… LocalStackLogLevel_Should_Have_All_Expected_Values
βœ… LocalStackLogLevel_Should_Have_Unique_Integer_Values
βœ… ToEnvironmentValue_Should_Handle_Invalid_Enum_Values_Gracefully
βœ… ToEnvironmentValue_Should_Handle_Negative_Enum_Values_Gracefully
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Debug, expectedValue: "debug")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Error, expectedValue: "error")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Info, expectedValue: "info")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Trace, expectedValue: "trace")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: TraceInternal, expectedValue: "trace-internal")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Warn, expectedValue: "warn")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Warning, expectedValue: "warning")

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Core.LocalStackResourceTests

βœ… LocalStackResource_Should_Be_Container_Resource
βœ… LocalStackResource_Should_Generate_HTTP_Connection_String_When_SSL_Disabled
βœ… LocalStackResource_Should_Generate_HTTPS_Connection_String_When_SSL_Enabled
βœ… LocalStackResource_Should_Have_Correct_Primary_Endpoint_Name
βœ… LocalStackResource_Should_Have_Primary_Endpoint
βœ… LocalStackResource_Should_Implement_ILocalStackResource
βœ… LocalStackResource_Should_Return_Same_Primary_Endpoint_Instance
βœ… LocalStackResource_Should_Store_Name_And_Options
βœ… LocalStackResource_Should_Throw_ArgumentException_For_Invalid_Name(invalidName: "   ")
βœ… LocalStackResource_Should_Throw_ArgumentException_For_Invalid_Name(invalidName: "")
βœ… LocalStackResource_Should_Throw_ArgumentNullException_For_Null_Name
βœ… LocalStackResource_Should_Throw_ArgumentNullException_For_Null_Options

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackCloudFormationResourceExtensionsTests

βœ… WithReference_Should_Add_LocalStack_Enabled_Annotation
βœ… WithReference_Should_Add_Wait_Dependency_On_LocalStack
βœ… WithReference_Should_Configure_CloudFormation_Client_For_LocalStack
βœ… WithReference_Should_Establish_Bidirectional_Reference
βœ… WithReference_Should_Not_Duplicate_References_When_Called_Multiple_Times
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Null
βœ… WithReference_Should_Throw_ArgumentNullException_When_Builder_Is_Null
βœ… WithReference_Should_Work_With_Multiple_CloudFormation_Resources

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackProjectExtensionsTests

βœ… WithReference_Should_Add_LocalStack_Reference_To_Project
βœ… WithReference_Should_Add_Wait_Dependency_On_LocalStack
βœ… WithReference_Should_Configure_LocalStack_Environment_Variables
βœ… WithReference_Should_Establish_Bidirectional_Reference
βœ… WithReference_Should_Not_Duplicate_References_When_Called_Multiple_Times
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Null
βœ… WithReference_Should_Throw_ArgumentNullException_When_Builder_Is_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddAWSCDKBootstrapCfTemplateForLocalStackTests

βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Create_Template_When_LocalStack_Enabled
βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Return_Null_When_LocalStack_Is_Null
βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Return_Null_When_UseLocalStack_Is_False

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddLocalStackTests

βœ… AddLocalStack_Should_Configure_Container_Options_When_Action_Provided
βœ… AddLocalStack_Should_Create_LocalStack_Resource_When_UseLocalStack_Is_True
βœ… AddLocalStack_Should_Inherit_Region_From_AWS_Config
βœ… AddLocalStack_Should_Mount_Docker_Socket_When_EnableDockerSocket_Is_True
βœ… AddLocalStack_Should_Not_Mount_Docker_Socket_By_Default
βœ… AddLocalStack_Should_Not_Mount_Docker_Socket_When_EnableDockerSocket_Is_False
βœ… AddLocalStack_Should_Not_Set_EAGER_SERVICE_LOADING_When_EagerLoadedServices_Empty
βœ… AddLocalStack_Should_Return_Null_When_UseLocalStack_Is_False
βœ… AddLocalStack_Should_Set_EAGER_SERVICE_LOADING_When_EagerLoadedServices_Configured
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Persistent, port: 1234, expectedPort: 1234)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Persistent, port: null, expectedPort: 4566)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Session, port: 1234, expectedPort: 1234)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Session, port: null, expectedPort: null)
βœ… AddLocalStack_Should_Set_SERVICES_Environment_Variable_With_Comma_Separated_Services
βœ… AddLocalStack_Should_Throw_ArgumentException_When_Name_Is_Invalid(invalidName: "   ")
βœ… AddLocalStack_Should_Throw_ArgumentException_When_Name_Is_Invalid(invalidName: "")
βœ… AddLocalStack_Should_Throw_ArgumentNullException_When_Builder_Is_Null
βœ… AddLocalStack_Should_Throw_When_EagerLoadedServices_Conflicts_With_AdditionalEnvVars_EAGER_SERVICE_LOADING
βœ… AddLocalStack_Should_Throw_When_EagerLoadedServices_Conflicts_With_AdditionalEnvVars_SERVICES
βœ… AddLocalStack_Should_Throw_When_Unsupported_Service_In_EagerLoadedServices
βœ… AddLocalStack_Should_Use_All_Custom_Container_Image_Values_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_Image_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_ImageTag_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_Registry_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Name_When_Specified
βœ… AddLocalStack_Should_Use_Default_Container_Image_Values_When_Not_Specified
βœ… AddLocalStack_Should_Use_Default_Name_When_Not_Specified

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.UseLocalStackTests

βœ… UseLocalStack_Should_Configure_CloudFormation_Resources_With_LocalStack_Reference
βœ… UseLocalStack_Should_Configure_Multiple_CloudFormation_Resources
βœ… UseLocalStack_Should_Configure_Projects_That_Reference_AWS_Resources
βœ… UseLocalStack_Should_Create_CDK_Bootstrap_When_Explicitly_Called
βœ… UseLocalStack_Should_Establish_Bidirectional_References
βœ… UseLocalStack_Should_Handle_Empty_Application_Gracefully
βœ… UseLocalStack_Should_Not_Configure_Resources_Already_Marked_With_LocalStack
βœ… UseLocalStack_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… UseLocalStack_Should_Return_Builder_When_LocalStack_Is_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.ConstantsTests

βœ… AWS_Assembly_Dependencies_Should_Be_Available
βœ… AWS_Types_Should_Be_Accessible_From_Current_Assembly_Context(typeName: "Aspire.Hosting.AWS.CloudFormation.CloudFormationRe"Β·Β·Β·)
βœ… AWS_Types_Should_Be_Accessible_From_Current_Assembly_Context(typeName: "Aspire.Hosting.AWS.Lambda.SQSEventSourceResource")
βœ… CloudFormationReferenceAnnotation_Should_Have_Correct_Type_Name
βœ… CloudFormationReferenceAnnotation_Type_Should_Exist_In_AWS_Assembly
βœ… DefaultContainerPort_Should_Be_4566
βœ… SQSEventSourceResource_Should_Have_Correct_Type_Name
βœ… SQSEventSourceResource_Type_Should_Exist_In_AWS_Assembly

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackConnectionStringAvailableCallbackTests

βœ… Callback_Should_Skip_When_UseLocalStack_Is_False
βœ… CreateCallback_Should_Return_Function_With_Correct_Signature
βœ… CreateCallback_Should_Return_Valid_Callback
βœ… CreateCallback_Should_Throw_ArgumentNullException_For_Null_Builder

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackHealthCheckTests

βœ… CheckHealthAsync_Handles_Case_Insensitive_Service_Names
βœ… CheckHealthAsync_Handles_HttpRequestException
βœ… CheckHealthAsync_Handles_Timeout
βœ… CheckHealthAsync_Returns_Healthy_When_All_Services_Running
βœ… CheckHealthAsync_Returns_Healthy_When_No_Services_Specified_And_Endpoint_Responds
βœ… CheckHealthAsync_Returns_Unhealthy_When_Endpoint_Returns_Non_Success_Status
βœ… CheckHealthAsync_Returns_Unhealthy_When_Service_Missing
βœ… CheckHealthAsync_Returns_Unhealthy_When_Service_Not_Running
βœ… CheckHealthAsync_Returns_Unhealthy_When_Services_Object_Missing

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackResourceConfiguratorTests

βœ… ConfigureCloudFormationResource_Should_Configure_Client_With_LocalStack_Endpoint
βœ… ConfigureCloudFormationResource_Should_Handle_SSL_Configuration
βœ… ConfigureCloudFormationResource_Should_Set_CloudFormation_Client
βœ… ConfigureProjectResource_Should_Call_WithEnvironment
βœ… ConfigureProjectResource_Should_Handle_All_Configuration_Options
βœ… ConfigureProjectResource_Should_Handle_Custom_Port_And_Host
βœ… ConfigureSqsEventSourceResource_Should_Add_Annotation_Via_WithEnvironment
βœ… ConfigureSqsEventSourceResource_Should_Add_Environment_Annotation_With_AWS_Endpoint_URL
βœ… ConfigureSqsEventSourceResource_Should_Handle_Different_LocalStack_URLs
βœ… ConfigureSqsEventSourceResource_Should_Handle_Empty_Annotations_Collection

βœ…Β /Users/runner/work/dotnet-aspire-for-localstack/dotnet-aspire-for-localstack/test-results/unit/testResults-net9.0.trx

144 tests were completed in 2s with 144 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackEnabledAnnotationTests 4βœ… 0ms
Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackReferenceAnnotationTests 5βœ… 2ms
Aspire.Hosting.LocalStack.Unit.Tests.CDK.CdkBootstrapManagerTests 9βœ… 51ms
Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackContainerOptionsTests 16βœ… 38ms
Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackLogLevelTests 11βœ… 4ms
Aspire.Hosting.LocalStack.Unit.Tests.Core.LocalStackResourceTests 12βœ… 6ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackCloudFormationResourceExtensionsTests 9βœ… 446ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackProjectExtensionsTests 8βœ… 367ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddAWSCDKBootstrapCfTemplateForLocalStackTests 3βœ… 57ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddLocalStackTests 27βœ… 683ms
Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.UseLocalStackTests 9βœ… 307ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.ConstantsTests 8βœ… 1ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackConnectionStringAvailableCallbackTests 4βœ… 152ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackHealthCheckTests 9βœ… 63ms
Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackResourceConfiguratorTests 10βœ… 129ms

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackEnabledAnnotationTests

βœ… LocalStackEnabledAnnotation_Should_Implement_IResourceAnnotation
βœ… LocalStackEnabledAnnotation_Should_Maintain_Same_Resource_Reference
βœ… LocalStackEnabledAnnotation_Should_Store_LocalStack_Resource_Reference
βœ… LocalStackEnabledAnnotation_Should_Throw_ArgumentNullException_For_Null_LocalStack_Resource

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Annotations.LocalStackReferenceAnnotationTests

βœ… LocalStackReferenceAnnotation_Should_Accept_Resource_With_Empty_Name
βœ… LocalStackReferenceAnnotation_Should_Implement_IResourceAnnotation
βœ… LocalStackReferenceAnnotation_Should_Maintain_Same_Target_Resource_Reference
βœ… LocalStackReferenceAnnotation_Should_Store_Target_Resource_Reference
βœ… LocalStackReferenceAnnotation_Should_Throw_ArgumentNullException_For_Null_Target_Resource

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.CDK.CdkBootstrapManagerTests

βœ… GetBootstrapTemplatePath_Should_Be_Thread_Safe_And_Handle_Parallel_Calls
βœ… GetBootstrapTemplatePath_Should_Create_Directory_If_It_Does_Not_Exist
βœ… GetBootstrapTemplatePath_Should_Create_File_That_Exists
βœ… GetBootstrapTemplatePath_Should_Create_Non_Empty_Template_File
βœ… GetBootstrapTemplatePath_Should_Extract_Template_To_Temp_Directory
βœ… GetBootstrapTemplatePath_Should_Handle_Multiple_Sequential_Calls
βœ… GetBootstrapTemplatePath_Should_Overwrite_Existing_File
βœ… GetBootstrapTemplatePath_Should_Return_Same_Path_On_Multiple_Calls
βœ… GetBootstrapTemplatePath_Should_Return_Valid_File_Path

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackContainerOptionsTests

βœ… AdditionalEnvironmentVariables_Should_Be_Mutable_Dictionary
βœ… AdditionalEnvironmentVariables_Should_Use_Ordinal_StringComparer
βœ… Constructor_Should_Set_Correct_Defaults
βœ… ContainerImage_Should_Be_Settable
βœ… ContainerImage_Should_Default_To_Null
βœ… ContainerImageTag_Should_Be_Settable
βœ… ContainerImageTag_Should_Default_To_Null
βœ… ContainerRegistry_Should_Be_Settable
βœ… ContainerRegistry_Should_Default_To_Null
βœ… EagerLoadedServices_Should_Accept_Multiple_Services
βœ… EagerLoadedServices_Should_Accept_Single_Service
βœ… EagerLoadedServices_Should_Default_To_Empty_Collection
βœ… EnableDockerSocket_Should_Be_Settable
βœ… EnableDockerSocket_Should_Default_To_False
βœ… Port_Should_Be_Settable
βœ… Port_Should_Default_To_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Container.LocalStackLogLevelTests

βœ… LocalStackLogLevel_Should_Have_All_Expected_Values
βœ… LocalStackLogLevel_Should_Have_Unique_Integer_Values
βœ… ToEnvironmentValue_Should_Handle_Invalid_Enum_Values_Gracefully
βœ… ToEnvironmentValue_Should_Handle_Negative_Enum_Values_Gracefully
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Debug, expectedValue: "debug")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Error, expectedValue: "error")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Info, expectedValue: "info")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Trace, expectedValue: "trace")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: TraceInternal, expectedValue: "trace-internal")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Warn, expectedValue: "warn")
βœ… ToEnvironmentValue_Should_Map_All_Enum_Values_Correctly(logLevel: Warning, expectedValue: "warning")

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Core.LocalStackResourceTests

βœ… LocalStackResource_Should_Be_Container_Resource
βœ… LocalStackResource_Should_Generate_HTTP_Connection_String_When_SSL_Disabled
βœ… LocalStackResource_Should_Generate_HTTPS_Connection_String_When_SSL_Enabled
βœ… LocalStackResource_Should_Have_Correct_Primary_Endpoint_Name
βœ… LocalStackResource_Should_Have_Primary_Endpoint
βœ… LocalStackResource_Should_Implement_ILocalStackResource
βœ… LocalStackResource_Should_Return_Same_Primary_Endpoint_Instance
βœ… LocalStackResource_Should_Store_Name_And_Options
βœ… LocalStackResource_Should_Throw_ArgumentException_For_Invalid_Name(invalidName: "   ")
βœ… LocalStackResource_Should_Throw_ArgumentException_For_Invalid_Name(invalidName: "")
βœ… LocalStackResource_Should_Throw_ArgumentNullException_For_Null_Name
βœ… LocalStackResource_Should_Throw_ArgumentNullException_For_Null_Options

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackCloudFormationResourceExtensionsTests

βœ… WithReference_Should_Add_LocalStack_Enabled_Annotation
βœ… WithReference_Should_Add_Wait_Dependency_On_LocalStack
βœ… WithReference_Should_Configure_CloudFormation_Client_For_LocalStack
βœ… WithReference_Should_Establish_Bidirectional_Reference
βœ… WithReference_Should_Not_Duplicate_References_When_Called_Multiple_Times
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Null
βœ… WithReference_Should_Throw_ArgumentNullException_When_Builder_Is_Null
βœ… WithReference_Should_Work_With_Multiple_CloudFormation_Resources

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.LocalStackProjectExtensionsTests

βœ… WithReference_Should_Add_LocalStack_Reference_To_Project
βœ… WithReference_Should_Add_Wait_Dependency_On_LocalStack
βœ… WithReference_Should_Configure_LocalStack_Environment_Variables
βœ… WithReference_Should_Establish_Bidirectional_Reference
βœ… WithReference_Should_Not_Duplicate_References_When_Called_Multiple_Times
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… WithReference_Should_Return_Builder_When_LocalStack_Is_Null
βœ… WithReference_Should_Throw_ArgumentNullException_When_Builder_Is_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddAWSCDKBootstrapCfTemplateForLocalStackTests

βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Create_Template_When_LocalStack_Enabled
βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Return_Null_When_LocalStack_Is_Null
βœ… AddAWSCDKBootstrapCloudFormationTemplateForLocalStack_Should_Return_Null_When_UseLocalStack_Is_False

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.AddLocalStackTests

βœ… AddLocalStack_Should_Configure_Container_Options_When_Action_Provided
βœ… AddLocalStack_Should_Create_LocalStack_Resource_When_UseLocalStack_Is_True
βœ… AddLocalStack_Should_Inherit_Region_From_AWS_Config
βœ… AddLocalStack_Should_Mount_Docker_Socket_When_EnableDockerSocket_Is_True
βœ… AddLocalStack_Should_Not_Mount_Docker_Socket_By_Default
βœ… AddLocalStack_Should_Not_Mount_Docker_Socket_When_EnableDockerSocket_Is_False
βœ… AddLocalStack_Should_Not_Set_EAGER_SERVICE_LOADING_When_EagerLoadedServices_Empty
βœ… AddLocalStack_Should_Return_Null_When_UseLocalStack_Is_False
βœ… AddLocalStack_Should_Set_EAGER_SERVICE_LOADING_When_EagerLoadedServices_Configured
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Persistent, port: 1234, expectedPort: 1234)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Persistent, port: null, expectedPort: 4566)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Session, port: 1234, expectedPort: 1234)
βœ… AddLocalStack_Should_Set_Endpoint_Port(lifetime: Session, port: null, expectedPort: null)
βœ… AddLocalStack_Should_Set_SERVICES_Environment_Variable_With_Comma_Separated_Services
βœ… AddLocalStack_Should_Throw_ArgumentException_When_Name_Is_Invalid(invalidName: "   ")
βœ… AddLocalStack_Should_Throw_ArgumentException_When_Name_Is_Invalid(invalidName: "")
βœ… AddLocalStack_Should_Throw_ArgumentNullException_When_Builder_Is_Null
βœ… AddLocalStack_Should_Throw_When_EagerLoadedServices_Conflicts_With_AdditionalEnvVars_EAGER_SERVICE_LOADING
βœ… AddLocalStack_Should_Throw_When_EagerLoadedServices_Conflicts_With_AdditionalEnvVars_SERVICES
βœ… AddLocalStack_Should_Throw_When_Unsupported_Service_In_EagerLoadedServices
βœ… AddLocalStack_Should_Use_All_Custom_Container_Image_Values_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_Image_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_ImageTag_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Container_Registry_When_Specified
βœ… AddLocalStack_Should_Use_Custom_Name_When_Specified
βœ… AddLocalStack_Should_Use_Default_Container_Image_Values_When_Not_Specified
βœ… AddLocalStack_Should_Use_Default_Name_When_Not_Specified

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Extensions.ResourceBuilderExtensionsTests.UseLocalStackTests

βœ… UseLocalStack_Should_Configure_CloudFormation_Resources_With_LocalStack_Reference
βœ… UseLocalStack_Should_Configure_Multiple_CloudFormation_Resources
βœ… UseLocalStack_Should_Configure_Projects_That_Reference_AWS_Resources
βœ… UseLocalStack_Should_Create_CDK_Bootstrap_When_Explicitly_Called
βœ… UseLocalStack_Should_Establish_Bidirectional_References
βœ… UseLocalStack_Should_Handle_Empty_Application_Gracefully
βœ… UseLocalStack_Should_Not_Configure_Resources_Already_Marked_With_LocalStack
βœ… UseLocalStack_Should_Return_Builder_When_LocalStack_Is_Disabled
βœ… UseLocalStack_Should_Return_Builder_When_LocalStack_Is_Null

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.ConstantsTests

βœ… AWS_Assembly_Dependencies_Should_Be_Available
βœ… AWS_Types_Should_Be_Accessible_From_Current_Assembly_Context(typeName: "Aspire.Hosting.AWS.CloudFormation.CloudFormationRe"Β·Β·Β·)
βœ… AWS_Types_Should_Be_Accessible_From_Current_Assembly_Context(typeName: "Aspire.Hosting.AWS.Lambda.SQSEventSourceResource")
βœ… CloudFormationReferenceAnnotation_Should_Have_Correct_Type_Name
βœ… CloudFormationReferenceAnnotation_Type_Should_Exist_In_AWS_Assembly
βœ… DefaultContainerPort_Should_Be_4566
βœ… SQSEventSourceResource_Should_Have_Correct_Type_Name
βœ… SQSEventSourceResource_Type_Should_Exist_In_AWS_Assembly

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackConnectionStringAvailableCallbackTests

βœ… Callback_Should_Skip_When_UseLocalStack_Is_False
βœ… CreateCallback_Should_Return_Function_With_Correct_Signature
βœ… CreateCallback_Should_Return_Valid_Callback
βœ… CreateCallback_Should_Throw_ArgumentNullException_For_Null_Builder

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackHealthCheckTests

βœ… CheckHealthAsync_Handles_Case_Insensitive_Service_Names
βœ… CheckHealthAsync_Handles_HttpRequestException
βœ… CheckHealthAsync_Handles_Timeout
βœ… CheckHealthAsync_Returns_Healthy_When_All_Services_Running
βœ… CheckHealthAsync_Returns_Healthy_When_No_Services_Specified_And_Endpoint_Responds
βœ… CheckHealthAsync_Returns_Unhealthy_When_Endpoint_Returns_Non_Success_Status
βœ… CheckHealthAsync_Returns_Unhealthy_When_Service_Missing
βœ… CheckHealthAsync_Returns_Unhealthy_When_Service_Not_Running
βœ… CheckHealthAsync_Returns_Unhealthy_When_Services_Object_Missing

βœ…Β Aspire.Hosting.LocalStack.Unit.Tests.Internal.LocalStackResourceConfiguratorTests

βœ… ConfigureCloudFormationResource_Should_Configure_Client_With_LocalStack_Endpoint
βœ… ConfigureCloudFormationResource_Should_Handle_SSL_Configuration
βœ… ConfigureCloudFormationResource_Should_Set_CloudFormation_Client
βœ… ConfigureProjectResource_Should_Call_WithEnvironment
βœ… ConfigureProjectResource_Should_Handle_All_Configuration_Options
βœ… ConfigureProjectResource_Should_Handle_Custom_Port_And_Host
βœ… ConfigureSqsEventSourceResource_Should_Add_Annotation_Via_WithEnvironment
βœ… ConfigureSqsEventSourceResource_Should_Add_Environment_Annotation_With_AWS_Endpoint_URL
βœ… ConfigureSqsEventSourceResource_Should_Handle_Different_LocalStack_URLs
βœ… ConfigureSqsEventSourceResource_Should_Handle_Empty_Annotations_Collection