Стабилизировать ingress-тесты без глобального env
ci / build-test (pull_request) Successful in 2m50s

TelegramIngressTestHost больше не мутирует процессную переменную
DEAL_SERVICE_TOKEN: токен задаётся in-memory конфигурацией хоста.
Три ingress-тест-класса шли параллельно и перетирали env друг другу.
This commit is contained in:
2026-09-13 03:54:36 +03:00
parent f788b6d39b
commit 3bcf4074b5
@@ -18,6 +18,7 @@ using Grpc.Net.Client;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
@@ -57,15 +58,17 @@ internal static class TelegramIngressTestHost
Func<GrpcChannel, Task> scenario,
RateLimitOptions? rateLimitOptions = null)
{
string? originalToken = Environment.GetEnvironmentVariable(ServiceTokenEnvKey);
Environment.SetEnvironmentVariable(ServiceTokenEnvKey, serviceToken);
WebApplication? app = null;
GrpcChannel? channel = null;
try
{
int port = TestPort.Allocate();
WebApplicationBuilder builder = WebApplication.CreateBuilder();
// Токен ингресса задаётся конфигурацией хоста (в приоритете над env) — без мутации процесса.
builder.Configuration.AddInMemoryCollection(new Dictionary<string, string?>
{
[ServiceTokenEnvKey] = serviceToken,
});
builder.WebHost.ConfigureKestrel(kestrel =>
kestrel.Listen(IPAddress.Loopback, port, listen => listen.Protocols = HttpProtocols.Http2));
@@ -131,8 +134,6 @@ internal static class TelegramIngressTestHost
await app.StopAsync();
await app.DisposeAsync();
}
Environment.SetEnvironmentVariable(ServiceTokenEnvKey, originalToken);
}
}