Skip to content

Commit 057cc4c

Browse files
committed
add tls tests for different virtual hosts
Signed-off-by: Gabriele Santomaggio <[email protected]>
1 parent c57d939 commit 057cc4c

File tree

9 files changed

+21
-21
lines changed

9 files changed

+21
-21
lines changed

.ci/ubuntu/cluster/rmq/Dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@ COPY --chown=rabbitmq:rabbitmq --chmod=0644 enabled_plugins /etc/rabbitmq/enable
1212
COPY --chown=rabbitmq:rabbitmq rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf
1313
COPY --chown=rabbitmq:rabbitmq rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
1414
COPY --chown=rabbitmq:rabbitmq advanced.config /etc/rabbitmq/advanced.config
15-
COPY --chown=rabbitmq:rabbitmq definitions.json /etc/rabbitmq/definitions.json
1615

1716
EXPOSE 4369 5671 5672 15672 15692 25672 35672-35682

.ci/ubuntu/cluster/rmq/definitions.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

.ci/ubuntu/cluster/rmq/rabbitmq.conf

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,4 @@ cluster_formation.classic_config.nodes.2 = [email protected]
3131

3232

3333
auth_backends.1 = internal
34-
auth_backends.2 = rabbit_auth_backend_oauth2
35-
36-
load_definitions = /etc/rabbitmq/definitions.json
34+
auth_backends.2 = rabbit_auth_backend_oauth2

.ci/ubuntu/one-node/definitions.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

.ci/ubuntu/one-node/gha-setup.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ function start_rabbitmq
8989
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/enabled_plugins:/etc/rabbitmq/enabled_plugins" \
9090
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro" \
9191
--volume "$GITHUB_WORKSPACE/.ci/certs:/etc/rabbitmq/certs:ro" \
92-
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/definitions.json:/etc/rabbitmq/definitions.json:ro" \
9392
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/one-node/advanced.config:/etc/rabbitmq/advanced.config:ro" \
9493
--volume "$GITHUB_WORKSPACE/.ci/ubuntu/log:/var/log/rabbitmq" \
9594
"$rabbitmq_image"

.ci/ubuntu/one-node/rabbitmq.conf

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,3 @@ auth_mechanisms.3 = EXTERNAL
2727

2828
auth_backends.1 = internal
2929
auth_backends.2 = rabbit_auth_backend_oauth2
30-
31-
load_definitions = /etc/rabbitmq/definitions.json

RabbitMQ.AMQP.Client/ConnectionSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ public TlsSettings() : this(DefaultSslProtocols)
604604
public TlsSettings(SslProtocols protocols)
605605
{
606606
Protocols = protocols;
607-
RemoteCertificateValidationCallback = trustEverythingCertValidationCallback;
607+
RemoteCertificateValidationCallback = TrustEverythingCertValidationCallback;
608608
LocalCertificateSelectionCallback = null;
609609
}
610610

@@ -620,7 +620,7 @@ public TlsSettings(SslProtocols protocols)
620620

621621
public LocalCertificateSelectionCallback? LocalCertificateSelectionCallback { get; set; }
622622

623-
private bool trustEverythingCertValidationCallback(object sender, X509Certificate? certificate,
623+
private bool TrustEverythingCertValidationCallback(object sender, X509Certificate? certificate,
624624
X509Chain? chain, SslPolicyErrors sslPolicyErrors)
625625
{
626626
return (sslPolicyErrors & ~AcceptablePolicyErrors) == SslPolicyErrors.None;

Tests/HttpApiClient.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ public ushort GetClusterSize()
3131
/// Creates a user, without password, with full permissions
3232
/// </summary>
3333
/// <param name="userName">The user name.</param>
34-
public async Task CreateUserAsync(string userName)
34+
/// <param name="virtualHost">The virtual host</param>
35+
public async Task CreateUserAsync(string userName, string virtualHost)
3536
{
3637
var userInfo = new UserInfo(null, null, []);
3738
await _managementClient.CreateUserAsync(userName, userInfo);
3839
var permissionInfo = new PermissionInfo();
39-
await _managementClient.CreatePermissionAsync("/", userName, permissionInfo);
40+
await _managementClient.CreatePermissionAsync(virtualHost, userName, permissionInfo);
4041
}
4142

4243
public async Task CreateVhostAsync(string vhostName)

Tests/TlsConnectionTests.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ public async Task ConnectUsingTlsAndUserPassword(string virtualHost)
7676
else
7777
{
7878
connectionSettings.TlsSettings.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors;
79-
connectionSettings.TlsSettings.RemoteCertificateValidationCallback = (sender, certificate, chain, errors) => true;
79+
connectionSettings.TlsSettings.RemoteCertificateValidationCallback =
80+
(sender, certificate, chain, errors) => true;
8081
}
8182

8283
Assert.Equal("localhost", connectionSettings.Host);
@@ -92,18 +93,22 @@ public async Task ConnectUsingTlsAndUserPassword(string virtualHost)
9293
Assert.Equal(State.Closed, connection.State);
9394
}
9495

95-
[Fact]
96-
public async Task ConnectUsingTlsAndClientCertificate()
96+
[Theory]
97+
[InlineData("/my_tls_host_certificate")]
98+
[InlineData("/")]
99+
public async Task ConnectUsingTlsAndClientCertificate(string virtualHost)
97100
{
101+
await CreateVhostAsync(virtualHost);
98102
string clientCertFile = GetClientCertFile();
99103
var cert = new X509Certificate2(clientCertFile, "grapefruit");
100104

101-
await CreateUserFromCertSubject(cert);
105+
await CreateUserFromCertSubject(cert, virtualHost);
102106

103107
ConnectionSettings connectionSettings = _connectionSettingBuilder
104108
.Scheme("amqps")
105109
.SaslMechanism(SaslMechanism.External)
106110
.Port(_port)
111+
.VirtualHost(virtualHost)
107112
.Build();
108113

109114
Assert.True(connectionSettings.UseSsl);
@@ -125,14 +130,15 @@ public async Task ConnectUsingTlsAndClientCertificate()
125130
else
126131
{
127132
connectionSettings.TlsSettings.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors;
128-
connectionSettings.TlsSettings.RemoteCertificateValidationCallback = (sender, certificate, chain, errors) => true;
133+
connectionSettings.TlsSettings.RemoteCertificateValidationCallback =
134+
(sender, certificate, chain, errors) => true;
129135
}
130136

131137
Assert.Equal("localhost", connectionSettings.Host);
132138
Assert.Equal(_port, connectionSettings.Port);
133139
Assert.Null(connectionSettings.User);
134140
Assert.Null(connectionSettings.Password);
135-
Assert.Equal("/", connectionSettings.VirtualHost);
141+
Assert.Equal(virtualHost, connectionSettings.VirtualHost);
136142
Assert.Equal("amqps", connectionSettings.Scheme);
137143
Assert.Equal(SaslMechanism.External, connectionSettings.SaslMechanism);
138144

@@ -142,10 +148,10 @@ public async Task ConnectUsingTlsAndClientCertificate()
142148
Assert.Equal(State.Closed, connection.State);
143149
}
144150

145-
private Task CreateUserFromCertSubject(X509Certificate cert)
151+
private Task CreateUserFromCertSubject(X509Certificate cert, string virtualHost)
146152
{
147153
string userName = cert.Subject.Trim().Replace(" ", string.Empty);
148-
return _httpApiClient.CreateUserAsync(userName);
154+
return _httpApiClient.CreateUserAsync(userName, virtualHost);
149155
}
150156

151157
private static string GetClientCertFile()
@@ -156,6 +162,7 @@ private static string GetClientCertFile()
156162
{
157163
clientCertFile = Path.GetFullPath(Path.Combine(cwd, "../../../../../.ci/certs/client_localhost.p12"));
158164
}
165+
159166
Assert.True(File.Exists(clientCertFile));
160167
return clientCertFile;
161168
}

0 commit comments

Comments
 (0)