Skip to content

Commit 9491afd

Browse files
committed
chore: Apply minor simplifications
1 parent 3c8f83b commit 9491afd

File tree

7 files changed

+34
-35
lines changed

7 files changed

+34
-35
lines changed

src/Testcontainers/Builders/MTlsEndpointAuthenticationProvider.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ private static X509Certificate2 CreateFromPemFile(string certPemFilePath, string
9696
}
9797
}
9898
}
99+
99100
private static AsymmetricKeyParameter ResolveKeyParameter(object keyObject)
100101
{
101102
switch (keyObject)
@@ -105,7 +106,7 @@ private static AsymmetricKeyParameter ResolveKeyParameter(object keyObject)
105106
case RsaPrivateCrtKeyParameters rpckp:
106107
return rpckp;
107108
default:
108-
throw new ArgumentOutOfRangeException(nameof(keyObject), "Unsupported type when reading key pem file");
109+
throw new ArgumentOutOfRangeException(nameof(keyObject), $"Unsupported asymmetric key entry encountered while trying to resolve key from input object '{keyObject.GetType()}'.");
109110
}
110111
}
111112
}

tests/Testcontainers.Tests/Fixtures/Containers/Unix/DockerMTls.cs

-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
namespace DotNet.Testcontainers.Tests.Fixtures
22
{
33
using System.Collections.Generic;
4-
using System.IO;
54
using DotNet.Testcontainers.Builders;
6-
using Org.BouncyCastle.OpenSsl;
75

86
public abstract class DockerMTls : ProtectDockerDaemonSocket
97
{
@@ -12,15 +10,6 @@ public DockerMTls(string dockerImageVersion)
1210
{
1311
}
1412

15-
public object ClientCertificateKey()
16-
{
17-
var path = Path.Combine(_hostCertsDirectoryPath, "client", "key.pem");
18-
using (var keyFileStream = new StreamReader(path))
19-
{
20-
return new PemReader(keyFileStream).ReadObject();
21-
}
22-
}
23-
2413
public override IList<string> CustomProperties
2514
{
2615
get

tests/Testcontainers.Tests/Fixtures/Containers/Unix/DockerTlsFixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ namespace DotNet.Testcontainers.Tests.Fixtures
77
[UsedImplicitly]
88
public sealed class DockerTlsFixture : ProtectDockerDaemonSocket
99
{
10-
public const string DockerVersion = "20.10.18";
1110
public DockerTlsFixture()
1211
: base(new ContainerBuilder()
13-
.WithCommand("--tlsverify=false"), DockerVersion)
12+
.WithCommand("--tlsverify=false"), "20.10.18")
1413
{
1514
}
1615

tests/Testcontainers.Tests/Fixtures/Containers/Unix/OpenSsl1_1_1Fixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ namespace DotNet.Testcontainers.Tests.Fixtures
55
[UsedImplicitly]
66
public sealed class OpenSsl1_1_1Fixture : DockerMTls
77
{
8-
public const string DockerVersion = "20.10.18";
9-
public OpenSsl1_1_1Fixture() : base(DockerVersion)
8+
public OpenSsl1_1_1Fixture() : base("20.10.18")
109
{
1110
}
1211
}

tests/Testcontainers.Tests/Fixtures/Containers/Unix/OpenSsl3_1Fixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ namespace DotNet.Testcontainers.Tests.Fixtures
55
[UsedImplicitly]
66
public sealed class OpenSsl3_1Fixture : DockerMTls
77
{
8-
public const string DockerVersion = "24.0.5";
9-
public OpenSsl3_1Fixture() : base(DockerVersion)
8+
public OpenSsl3_1Fixture() : base("24.0.5")
109
{
1110
}
1211
}

tests/Testcontainers.Tests/Fixtures/Containers/Unix/ProtectDockerDaemonSocket.cs

+15-8
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace DotNet.Testcontainers.Tests.Fixtures
88
using DotNet.Testcontainers.Configurations;
99
using DotNet.Testcontainers.Containers;
1010
using DotNet.Testcontainers.Images;
11+
using Org.BouncyCastle.OpenSsl;
1112
using Xunit;
1213

1314
public abstract class ProtectDockerDaemonSocket : IAsyncLifetime
@@ -16,16 +17,16 @@ public abstract class ProtectDockerDaemonSocket : IAsyncLifetime
1617

1718
private const ushort TlsPort = 2376;
1819

20+
private readonly string _hostCertsDirectoryPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("D"), CertsDirectoryName);
21+
1922
private readonly string _containerCertsDirectoryPath = Path.Combine("/", CertsDirectoryName);
2023

2124
private readonly IContainer _container;
2225

23-
protected readonly string _hostCertsDirectoryPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("D"), CertsDirectoryName);
24-
2526
protected ProtectDockerDaemonSocket(ContainerBuilder containerConfiguration, string dockerImageVersion)
2627
{
2728
_container = containerConfiguration
28-
.WithImage(DockerImage(dockerImageVersion))
29+
.WithImage(new DockerImage(string.Empty, "docker", dockerImageVersion + "-dind"))
2930
.WithPrivileged(true)
3031
.WithPortBinding(TlsPort, true)
3132
.WithBindMount(_hostCertsDirectoryPath, _containerCertsDirectoryPath, AccessMode.ReadWrite)
@@ -38,22 +39,28 @@ public virtual IList<string> CustomProperties
3839
get
3940
{
4041
var customProperties = new List<string>();
41-
customProperties.Add($"docker.host={TcpEndpoint}");
42+
customProperties.Add($"docker.host={new UriBuilder("tcp", _container.Hostname, _container.GetMappedPublicPort(TlsPort))}");
4243
customProperties.Add($"docker.cert.path={Path.Combine(_hostCertsDirectoryPath, "client")}");
4344
return customProperties;
4445
}
4546
}
4647

47-
private static IImage DockerImage(string dockerImageVersion)
48+
public IImage Image
4849
{
49-
return new DockerImage(string.Empty, "docker", dockerImageVersion + "-dind");
50+
get
51+
{
52+
return _container.Image;
53+
}
5054
}
5155

52-
private Uri TcpEndpoint
56+
public object TlsKey
5357
{
5458
get
5559
{
56-
return new UriBuilder("tcp", _container.Hostname, _container.GetMappedPublicPort(TlsPort)).Uri;
60+
using (var tlsKeyStream = new StreamReader(Path.Combine(_hostCertsDirectoryPath, "client", "key.pem")))
61+
{
62+
return new PemReader(tlsKeyStream).ReadObject();
63+
}
5764
}
5865
}
5966

tests/Testcontainers.Tests/Unit/Containers/Unix/ProtectDockerDaemonSocketTest.cs

+14-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ private static IDockerEndpointAuthenticationConfiguration GetAuthConfig(ProtectD
2222

2323
public sealed class MTlsOpenSsl1_1_1 : IClassFixture<OpenSsl1_1_1Fixture>
2424
{
25-
private readonly OpenSsl1_1_1Fixture _fixture;
25+
private readonly ProtectDockerDaemonSocket _fixture;
26+
2627
private readonly IDockerEndpointAuthenticationConfiguration _authConfig;
2728

2829
public MTlsOpenSsl1_1_1(OpenSsl1_1_1Fixture dockerMTlsFixture)
@@ -36,20 +37,21 @@ public async Task GetVersionReturnsVersion()
3637
{
3738
// Given
3839
var client = new TestcontainersClient(Guid.Empty, _authConfig, NullLogger.Instance);
40+
3941
// When
4042
var version = await client.System.GetVersionAsync()
4143
.ConfigureAwait(false);
42-
var key = _fixture.ClientCertificateKey();
4344

4445
// Then
45-
Assert.Equal(OpenSsl1_1_1Fixture.DockerVersion, version.Version);
46-
Assert.IsType<AsymmetricCipherKeyPair>(key);
46+
Assert.StartsWith(version.Version, _fixture.Image.Tag);
47+
Assert.IsType<AsymmetricCipherKeyPair>(_fixture.TlsKey);
4748
}
4849
}
4950

5051
public sealed class MTlsOpenSsl3_1 : IClassFixture<OpenSsl3_1Fixture>
5152
{
52-
private readonly OpenSsl3_1Fixture _fixture;
53+
private readonly ProtectDockerDaemonSocket _fixture;
54+
5355
private readonly IDockerEndpointAuthenticationConfiguration _authConfig;
5456

5557
public MTlsOpenSsl3_1(OpenSsl3_1Fixture dockerMTlsFixture)
@@ -63,23 +65,26 @@ public async Task GetVersionReturnsVersion()
6365
{
6466
// Given
6567
var client = new TestcontainersClient(Guid.Empty, _authConfig, NullLogger.Instance);
68+
6669
// When
6770
var version = await client.System.GetVersionAsync()
6871
.ConfigureAwait(false);
69-
var key = _fixture.ClientCertificateKey();
7072

7173
// Then
72-
Assert.Equal(OpenSsl3_1Fixture.DockerVersion, version.Version);
73-
Assert.IsType<RsaPrivateCrtKeyParameters>(key);
74+
Assert.StartsWith(version.Version, _fixture.Image.Tag);
75+
Assert.IsType<RsaPrivateCrtKeyParameters>(_fixture.TlsKey);
7476
}
7577
}
7678

7779
public sealed class Tls : IClassFixture<DockerTlsFixture>
7880
{
81+
private readonly ProtectDockerDaemonSocket _fixture;
82+
7983
private readonly IDockerEndpointAuthenticationConfiguration _authConfig;
8084

8185
public Tls(DockerTlsFixture dockerTlsFixture)
8286
{
87+
_fixture = dockerTlsFixture;
8388
_authConfig = GetAuthConfig(dockerTlsFixture);
8489
}
8590

@@ -94,7 +99,7 @@ public async Task GetVersionReturnsVersion()
9499
.ConfigureAwait(false);
95100

96101
// Then
97-
Assert.Equal(DockerTlsFixture.DockerVersion, version.Version);
102+
Assert.StartsWith(version.Version, _fixture.Image.Tag);
98103
}
99104
}
100105
}

0 commit comments

Comments
 (0)