From 2d9a045ac58902647a3ddc21b7b86251e11010b7 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Mon, 2 Sep 2024 01:38:07 +1000 Subject: [PATCH] Add functional tests for PgAdmin and RedisCommander. --- .../PostgresFunctionalTests.cs | 28 +++++++++++++++++++ .../RedisFunctionalTests.cs | 28 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs b/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs index b433815ac1..e7c8666ad9 100644 --- a/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs +++ b/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs @@ -2,8 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Data; +using System.Net; using Aspire.Components.Common.Tests; +using Aspire.Hosting.ApplicationModel; using Aspire.Hosting.Postgres; +using Aspire.Hosting.Testing; +using Aspire.Hosting.Tests.Utils; using Aspire.Hosting.Utils; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -17,6 +21,30 @@ namespace Aspire.Hosting.PostgreSQL.Tests; public class PostgresFunctionalTests(ITestOutputHelper testOutputHelper) { + [Fact] + [RequiresDocker] + public async Task VerifyPgAdminResource() + { + using var builder = TestDistributedApplicationBuilder.CreateWithTestContainerRegistry(testOutputHelper); + + IResourceBuilder? adminBuilder = null; + var redis = builder.AddPostgres("postgres").WithPgAdmin(c => adminBuilder = c); + Assert.NotNull(adminBuilder); + + using var app = builder.Build(); + + await app.StartAsync(); + + await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name); + + var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http"); + + var endpoint = redis.GetEndpoint("tcp"); + var path = $"/"; + var response = await client.GetAsync(path); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + } + [Fact] [RequiresDocker] public async Task VerifyPostgresResource() diff --git a/tests/Aspire.Hosting.Redis.Tests/RedisFunctionalTests.cs b/tests/Aspire.Hosting.Redis.Tests/RedisFunctionalTests.cs index 50cfa132eb..94eca4524f 100644 --- a/tests/Aspire.Hosting.Redis.Tests/RedisFunctionalTests.cs +++ b/tests/Aspire.Hosting.Redis.Tests/RedisFunctionalTests.cs @@ -1,7 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Net; using Aspire.Components.Common.Tests; +using Aspire.Hosting.ApplicationModel; +using Aspire.Hosting.Testing; +using Aspire.Hosting.Tests.Utils; using Aspire.Hosting.Utils; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,6 +18,30 @@ namespace Aspire.Hosting.Redis.Tests; public class RedisFunctionalTests(ITestOutputHelper testOutputHelper) { + [Fact] + [RequiresDocker] + public async Task VerifyRedisCommanderResource() + { + using var builder = TestDistributedApplicationBuilder.CreateWithTestContainerRegistry(testOutputHelper); + + IResourceBuilder? commanderBuilder = null; + var redis = builder.AddRedis("redis").WithRedisCommander(c => commanderBuilder = c); + Assert.NotNull(commanderBuilder); + + using var app = builder.Build(); + + await app.StartAsync(); + + await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name); + + var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http"); + + var endpoint = redis.GetEndpoint("tcp"); + var path = $"/apiv2/server/R:{endpoint.ContainerHost}:{endpoint.Port}:0/info"; + var response = await client.GetAsync(path); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + } + [Fact] [RequiresDocker] public async Task VerifyRedisResource()