Harden remaining runtime transport lifecycles
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
using StellaOps.Workflow.DataStore.PostgreSQL;
|
||||
using StellaOps.Workflow.Engine.Services;
|
||||
|
||||
using FluentAssertions;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Npgsql;
|
||||
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace StellaOps.Workflow.DataStore.PostgreSQL.Tests;
|
||||
|
||||
[TestFixture]
|
||||
public class PostgresWorkflowDatabaseTests
|
||||
{
|
||||
[Test]
|
||||
public void BuildConnectionString_WhenApplicationNameIsOmitted_UsesWorkflowDefaults()
|
||||
{
|
||||
var options = new PostgresWorkflowBackendOptions
|
||||
{
|
||||
ConnectionStringName = "WorkflowPostgres",
|
||||
MinPoolSize = 2,
|
||||
MaxPoolSize = 9,
|
||||
ConnectionIdleLifetimeSeconds = 123,
|
||||
};
|
||||
|
||||
var connectionString = CreateDatabase(options).BuildConnectionString();
|
||||
var builder = new NpgsqlConnectionStringBuilder(connectionString);
|
||||
|
||||
builder.ApplicationName.Should().Be("stellaops-workflow");
|
||||
builder.Pooling.Should().BeTrue();
|
||||
builder.MinPoolSize.Should().Be(2);
|
||||
builder.MaxPoolSize.Should().Be(9);
|
||||
builder.ConnectionIdleLifetime.Should().Be(123);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BuildConnectionString_WhenExplicitSettingsAreProvided_AppliesNormalizedValues()
|
||||
{
|
||||
var options = new PostgresWorkflowBackendOptions
|
||||
{
|
||||
ConnectionStringName = "WorkflowPostgres",
|
||||
ApplicationName = "workflow-projection-tests",
|
||||
Pooling = false,
|
||||
MinPoolSize = 8,
|
||||
MaxPoolSize = 3,
|
||||
};
|
||||
|
||||
var connectionString = CreateDatabase(options).BuildConnectionString();
|
||||
var builder = new NpgsqlConnectionStringBuilder(connectionString);
|
||||
|
||||
builder.ApplicationName.Should().Be("workflow-projection-tests");
|
||||
builder.Pooling.Should().BeFalse();
|
||||
builder.MinPoolSize.Should().Be(8);
|
||||
builder.MaxPoolSize.Should().Be(8);
|
||||
}
|
||||
|
||||
private static PostgresWorkflowDatabase CreateDatabase(PostgresWorkflowBackendOptions options)
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
[$"ConnectionStrings:{options.ConnectionStringName}"] =
|
||||
"Host=localhost;Database=workflow;Username=workflow;Password=workflow",
|
||||
})
|
||||
.Build();
|
||||
|
||||
return new PostgresWorkflowDatabase(
|
||||
configuration,
|
||||
Options.Create(options),
|
||||
new PostgresWorkflowMutationSessionAccessor(),
|
||||
new WorkflowMutationScopeAccessor());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user