Skip to content

Commit 6ef12b1

Browse files
committed
chore: Add missing test
1 parent 113d6df commit 6ef12b1

File tree

2 files changed

+54
-35
lines changed

2 files changed

+54
-35
lines changed

src/Testcontainers/Configurations/Containers/ConnectionStringProvider.cs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace DotNet.Testcontainers.Configurations
22
{
3-
using System;
43
using DotNet.Testcontainers.Containers;
54

65
/// <inheritdoc cref="IConnectionStringProvider{TContainerEntity, TConfigurationEntity}" />
@@ -22,17 +21,7 @@ public ConnectionStringProvider(IConnectionStringProvider<TContainerEntity, TCon
2221
/// <inheritdoc />
2322
public void Configure(IContainer container, IContainerConfiguration configuration)
2423
{
25-
if (container is not TContainerEntity typedContainer)
26-
{
27-
throw new InvalidCastException($"Expected container type '{typeof(TContainerEntity).FullName}', but received '{container.GetType().FullName}'.");
28-
}
29-
30-
if (configuration is not TConfigurationEntity typedConfiguration)
31-
{
32-
throw new InvalidCastException($"Expected configuration type '{typeof(TConfigurationEntity).FullName}', but received '{configuration.GetType().FullName}'.");
33-
}
34-
35-
_connectionStringProvider.Configure(typedContainer, typedConfiguration);
24+
_connectionStringProvider.Configure((TContainerEntity)container, (TConfigurationEntity)configuration);
3625
}
3726

3827
/// <inheritdoc />

tests/Testcontainers.Platform.Linux.Tests/ConnectionStringProviderTest.cs

Lines changed: 53 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,70 @@
11
namespace Testcontainers.Tests;
22

3-
public sealed class ConnectionStringProviderTests : IAsyncLifetime
3+
public static class ConnectionStringProviderTests
44
{
55
private const string ExpectedConnectionString = "connection string";
66

7-
private readonly ConnectionStringProvider _connectionStringProvider = new ConnectionStringProvider();
7+
public sealed class Configured : IAsyncLifetime
8+
{
9+
private readonly ConnectionStringProvider _connectionStringProvider = new ConnectionStringProvider();
10+
11+
private readonly IContainer _container;
812

9-
private readonly IContainer _container;
13+
public Configured()
14+
{
15+
_container = new ContainerBuilder()
16+
.WithImage(CommonImages.Alpine)
17+
.WithCommand(CommonCommands.SleepInfinity)
18+
.WithConnectionStringProvider(_connectionStringProvider)
19+
.Build();
20+
}
21+
22+
public async ValueTask InitializeAsync()
23+
{
24+
await _container.StartAsync()
25+
.ConfigureAwait(false);
26+
}
27+
28+
public async ValueTask DisposeAsync()
29+
{
30+
await _container.DisposeAsync()
31+
.ConfigureAwait(false);
32+
}
33+
34+
[Fact]
35+
public void GetConnectionStringReturnsExpectedValue()
36+
{
37+
Assert.True(_connectionStringProvider.IsConfigured, "Configure should have been called during container startup.");
38+
Assert.Equal(ExpectedConnectionString, _container.GetConnectionString());
39+
Assert.Equal(ExpectedConnectionString, _container.GetConnectionString("name"));
40+
}
41+
}
1042

11-
public ConnectionStringProviderTests()
43+
public sealed class NotConfigured : IAsyncLifetime
1244
{
13-
_container = new ContainerBuilder()
45+
private readonly IContainer _container = new ContainerBuilder()
1446
.WithImage(CommonImages.Alpine)
1547
.WithCommand(CommonCommands.SleepInfinity)
16-
.WithConnectionStringProvider(_connectionStringProvider)
1748
.Build();
18-
}
1949

20-
public async ValueTask InitializeAsync()
21-
{
22-
await _container.StartAsync()
23-
.ConfigureAwait(false);
24-
}
50+
public async ValueTask InitializeAsync()
51+
{
52+
await _container.StartAsync()
53+
.ConfigureAwait(false);
54+
}
2555

26-
public async ValueTask DisposeAsync()
27-
{
28-
await _container.DisposeAsync()
29-
.ConfigureAwait(false);
30-
}
56+
public async ValueTask DisposeAsync()
57+
{
58+
await _container.DisposeAsync()
59+
.ConfigureAwait(false);
60+
}
3161

32-
[Fact]
33-
public void GetConnectionStringReturnsExpectedValue()
34-
{
35-
Assert.True(_connectionStringProvider.IsConfigured, "Configure should have been called during container startup.");
36-
Assert.Equal(ExpectedConnectionString, _container.GetConnectionString());
37-
Assert.Equal(ExpectedConnectionString, _container.GetConnectionString("name"));
62+
[Fact]
63+
public void GetConnectionStringThrowsException()
64+
{
65+
Assert.Throws<ConnectionStringProviderNotConfiguredException>(() => _container.GetConnectionString());
66+
Assert.Throws<ConnectionStringProviderNotConfiguredException>(() => _container.GetConnectionString("name"));
67+
}
3868
}
3969

4070
private sealed class ConnectionStringProvider : IConnectionStringProvider<IContainer, IContainerConfiguration>

0 commit comments

Comments
 (0)