Skip to content

Commit 4e57cbf

Browse files
Merge pull request #132 from OctopusDeploy/andrew-w/securing-message-protocol
Securing the Protocol
2 parents af95eb2 + b1c866b commit 4e57cbf

29 files changed

+507
-183
lines changed

source/Halibut.Tests/ConnectionManagerFixture.cs

+12-8
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@ public class ConnectionManagerFixture
1818
[SetUp]
1919
public void SetUp()
2020
{
21-
var stream = Substitute.For<IMessageExchangeStream>();
22-
connection = new SecureConnection(Substitute.For<IDisposable>(), Stream.Null, new MessageExchangeProtocol(stream));
21+
connection = new SecureConnection(Substitute.For<IDisposable>(), Stream.Null,GetProtocol, Substitute.For<ILog>());
2322
connectionFactory = Substitute.For<IConnectionFactory>();
24-
connectionFactory.EstablishNewConnection(Arg.Any<ServiceEndPoint>(), Arg.Any<ILog>()).Returns(connection);
23+
connectionFactory.EstablishNewConnection(GetProtocol, Arg.Any<ServiceEndPoint>(), Arg.Any<ILog>()).Returns(connection);
2524
}
2625

2726
[Test]
@@ -31,8 +30,8 @@ public void DisposedConnectionsAreRemovedFromActive_WhenMultipleConnectionsAreAc
3130
var connectionManager = new ConnectionManager();
3231

3332
//do it twice because this bug only triggers on multiple enumeration, having 1 in the collection doesn't trigger the bug
34-
connectionManager.AcquireConnection(connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
35-
connectionManager.AcquireConnection(connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
33+
connectionManager.AcquireConnection(GetProtocol, connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
34+
connectionManager.AcquireConnection(GetProtocol, connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
3635

3736
connectionManager.Disconnect(serviceEndpoint, null);
3837
connectionManager.GetActiveConnections(serviceEndpoint).Should().BeNullOrEmpty();
@@ -44,7 +43,7 @@ public void ReleasedConnectionsAreNotActive()
4443
var serviceEndpoint = new ServiceEndPoint("https://localhost:42", Certificates.TentacleListeningPublicThumbprint);
4544
var connectionManager = new ConnectionManager();
4645

47-
var activeConnection = connectionManager.AcquireConnection(connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
46+
var activeConnection = connectionManager.AcquireConnection(GetProtocol, connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
4847
connectionManager.GetActiveConnections(serviceEndpoint).Should().OnlyContain(c => c == activeConnection);
4948

5049
connectionManager.ReleaseConnection(serviceEndpoint, activeConnection);
@@ -57,7 +56,7 @@ public void DisposedConnectionsAreRemovedFromActive()
5756
var serviceEndpoint = new ServiceEndPoint("https://localhost:42", Certificates.TentacleListeningPublicThumbprint);
5857
var connectionManager = new ConnectionManager();
5958

60-
var activeConnection = connectionManager.AcquireConnection(connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
59+
var activeConnection = connectionManager.AcquireConnection(GetProtocol, connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
6160
connectionManager.GetActiveConnections(serviceEndpoint).Should().OnlyContain(c => c == activeConnection);
6261

6362
activeConnection.Dispose();
@@ -70,11 +69,16 @@ public void DisconnectDisposesActiveConnections()
7069
var serviceEndpoint = new ServiceEndPoint("https://localhost:42", Certificates.TentacleListeningPublicThumbprint);
7170
var connectionManager = new ConnectionManager();
7271

73-
var activeConnection = connectionManager.AcquireConnection(connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
72+
var activeConnection = connectionManager.AcquireConnection(GetProtocol, connectionFactory, serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
7473
connectionManager.GetActiveConnections(serviceEndpoint).Should().OnlyContain(c => c == activeConnection);
7574

7675
connectionManager.Disconnect(serviceEndpoint, new InMemoryConnectionLog(serviceEndpoint.ToString()));
7776
connectionManager.GetActiveConnections(serviceEndpoint).Should().BeNullOrEmpty();
7877
}
78+
79+
public MessageExchangeProtocol GetProtocol(Stream stream, ILog log)
80+
{
81+
return new MessageExchangeProtocol(new MessageExchangeStream(stream, new Type[] { }, log), log);
82+
}
7983
}
8084
}

source/Halibut.Tests/DiscoveryClientFixture.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
using System;
22
using FluentAssertions;
3-
using Halibut.Diagnostics;
43
using Halibut.ServiceModel;
54
using Halibut.Tests.TestServices;
65
using Halibut.Transport;
76
using NUnit.Framework;
87

98
namespace Halibut.Tests
109
{
11-
public class DiscoveryClientFixture : IDisposable
10+
public class DiscoveryClientFixture
1211
{
1312
ServiceEndPoint endpoint;
1413
HalibutRuntime tentacle;
@@ -27,12 +26,12 @@ public void SetUp()
2726
};
2827
}
2928

30-
public void Dispose()
29+
[TearDown]
30+
public void TearDown()
3131
{
3232
tentacle.Dispose();
3333
}
3434

35-
3635
[Test]
3736
public void DiscoverMethodReturnsEndpointDetails()
3837
{

source/Halibut.Tests/ProtocolFixture.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void SetUp()
2222
{
2323
stream = new DumpStream();
2424
stream.SetRemoteIdentity(new RemoteIdentity(RemoteIdentityType.Server));
25-
protocol = new MessageExchangeProtocol(stream);
25+
protocol = new MessageExchangeProtocol(stream, Substitute.For<ILog>());
2626
}
2727

2828
[Test]
@@ -344,7 +344,7 @@ public void SetNumberOfReads(int reads)
344344
numberOfReads = reads;
345345
}
346346

347-
public List<object> Sent { get; set; }
347+
public List<object> Sent { get; }
348348

349349
public void IdentifyAsClient()
350350
{

0 commit comments

Comments
 (0)