Skip to content

Commit 84b9281

Browse files
committed
Merge branch 'develop'
2 parents 5942469 + 41e378c commit 84b9281

File tree

147 files changed

+10054
-2054
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+10054
-2054
lines changed

src/Renci.SshNet.Silverlight/Renci.SshNet.Silverlight.csproj

+3
Original file line numberDiff line numberDiff line change
@@ -1183,6 +1183,9 @@
11831183
</Compile>
11841184
<Compile Include="..\Renci.SshNet\SftpClient.cs">
11851185
<Link>SftpClient.cs</Link>
1186+
</Compile>
1187+
<Compile Include="..\Renci.SshNet\ISftpClient.cs">
1188+
<Link>ISftpClient.cs</Link>
11861189
</Compile>
11871190
<Compile Include="..\Renci.SshNet\Sftp\Flags.cs">
11881191
<Link>Sftp\Flags.cs</Link>

src/Renci.SshNet.Silverlight5/Renci.SshNet.Silverlight5.csproj

+3
Original file line numberDiff line numberDiff line change
@@ -1189,6 +1189,9 @@
11891189
</Compile>
11901190
<Compile Include="..\Renci.SshNet\SftpClient.cs">
11911191
<Link>SftpClient.cs</Link>
1192+
</Compile>
1193+
<Compile Include="..\Renci.SshNet\ISftpClient.cs">
1194+
<Link>ISftpClient.cs</Link>
11921195
</Compile>
11931196
<Compile Include="..\Renci.SshNet\Sftp\Flags.cs">
11941197
<Link>Sftp\Flags.cs</Link>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using Moq;
2+
using Renci.SshNet.Connection;
3+
using Renci.SshNet.Tests.Common;
4+
5+
namespace Renci.SshNet.Tests.Classes
6+
{
7+
public abstract class BaseClientTestBase : TripleATestBase
8+
{
9+
internal Mock<IServiceFactory> _serviceFactoryMock { get; private set; }
10+
internal Mock<ISocketFactory> _socketFactoryMock { get; private set; }
11+
internal Mock<ISession> _sessionMock { get; private set; }
12+
13+
protected virtual void CreateMocks()
14+
{
15+
_serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
16+
_socketFactoryMock = new Mock<ISocketFactory>(MockBehavior.Strict);
17+
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
18+
}
19+
20+
protected virtual void SetupData()
21+
{
22+
}
23+
24+
protected virtual void SetupMocks()
25+
{
26+
}
27+
28+
protected override void Arrange()
29+
{
30+
CreateMocks();
31+
SetupData();
32+
SetupMocks();
33+
}
34+
}
35+
}

src/Renci.SshNet.Tests/Classes/BaseClientTest_Connect_OnConnectedThrowsException.cs

+26-35
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,30 @@
99
namespace Renci.SshNet.Tests.Classes
1010
{
1111
[TestClass]
12-
public class BaseClientTest_Connect_OnConnectedThrowsException
12+
public class BaseClientTest_Connect_OnConnectedThrowsException : BaseClientTestBase
1313
{
14-
private Mock<IServiceFactory> _serviceFactoryMock;
15-
private Mock<ISession> _sessionMock;
1614
private MyClient _client;
1715
private ConnectionInfo _connectionInfo;
1816
private ApplicationException _onConnectException;
1917
private ApplicationException _actualException;
2018

21-
[TestInitialize]
22-
public void Setup()
19+
protected override void SetupData()
2320
{
24-
Arrange();
25-
Act();
21+
_connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
22+
_onConnectException = new ApplicationException();
2623
}
2724

28-
[TestCleanup]
29-
public void Cleanup()
25+
protected override void SetupMocks()
26+
{
27+
_serviceFactoryMock.Setup(p => p.CreateSocketFactory())
28+
.Returns(_socketFactoryMock.Object);
29+
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object))
30+
.Returns(_sessionMock.Object);
31+
_sessionMock.Setup(p => p.Connect());
32+
_sessionMock.Setup(p => p.Dispose());
33+
}
34+
35+
protected override void TearDown()
3036
{
3137
if (_client != null)
3238
{
@@ -36,39 +42,17 @@ public void Cleanup()
3642
}
3743
}
3844

39-
private void SetupData()
40-
{
41-
_connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
42-
_onConnectException = new ApplicationException();
43-
}
44-
45-
private void CreateMocks()
45+
protected override void Arrange()
4646
{
47-
_serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
48-
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
49-
}
50-
51-
private void SetupMocks()
52-
{
53-
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo))
54-
.Returns(_sessionMock.Object);
55-
_sessionMock.Setup(p => p.Connect());
56-
_sessionMock.Setup(p => p.Dispose());
57-
}
58-
59-
protected void Arrange()
60-
{
61-
SetupData();
62-
CreateMocks();
63-
SetupMocks();
47+
base.Arrange();
6448

6549
_client = new MyClient(_connectionInfo, false, _serviceFactoryMock.Object)
6650
{
6751
OnConnectedException = _onConnectException
6852
};
6953
}
7054

71-
protected void Act()
55+
protected override void Act()
7256
{
7357
try
7458
{
@@ -88,10 +72,17 @@ public void ConnectShouldRethrowExceptionThrownByOnConnect()
8872
Assert.AreSame(_onConnectException, _actualException);
8973
}
9074

75+
[TestMethod]
76+
public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
77+
{
78+
_serviceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
79+
}
80+
9181
[TestMethod]
9282
public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
9383
{
94-
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo), Times.Once);
84+
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object),
85+
Times.Once);
9586
}
9687

9788
[TestMethod]

src/Renci.SshNet.Tests/Classes/BaseClientTest_Connected_KeepAliveInterval_NegativeOne.cs

+27-36
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,31 @@
22
using System.Threading;
33
using Microsoft.VisualStudio.TestTools.UnitTesting;
44
using Moq;
5+
using Renci.SshNet.Connection;
56
using Renci.SshNet.Messages.Transport;
67

78
namespace Renci.SshNet.Tests.Classes
89
{
910
[TestClass]
10-
public class BaseClientTest_Connected_KeepAliveInterval_NegativeOne
11+
public class BaseClientTest_Connected_KeepAliveInterval_NegativeOne : BaseClientTestBase
1112
{
12-
private Mock<IServiceFactory> _serviceFactoryMock;
13-
private Mock<ISession> _sessionMock;
1413
private BaseClient _client;
1514
private ConnectionInfo _connectionInfo;
1615
private TimeSpan _keepAliveInterval;
1716
private int _keepAliveCount;
1817

19-
[TestInitialize]
20-
public void Setup()
21-
{
22-
Arrange();
23-
Act();
24-
}
25-
26-
[TestCleanup]
27-
public void Cleanup()
28-
{
29-
if (_client != null)
30-
{
31-
_sessionMock.Setup(p => p.OnDisconnecting());
32-
_sessionMock.Setup(p => p.Dispose());
33-
_client.Dispose();
34-
}
35-
}
36-
37-
private void SetupData()
18+
protected override void SetupData()
3819
{
3920
_connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
4021
_keepAliveInterval = TimeSpan.FromMilliseconds(100d);
4122
_keepAliveCount = 0;
4223
}
4324

44-
private void CreateMocks()
45-
{
46-
_serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
47-
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
48-
}
49-
50-
private void SetupMocks()
25+
protected override void SetupMocks()
5126
{
52-
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo))
27+
_serviceFactoryMock.Setup(p => p.CreateSocketFactory())
28+
.Returns(_socketFactoryMock.Object);
29+
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object))
5330
.Returns(_sessionMock.Object);
5431
_sessionMock.Setup(p => p.Connect());
5532
_sessionMock.Setup(p => p.IsConnected).Returns(true);
@@ -58,18 +35,26 @@ private void SetupMocks()
5835
.Callback(() => Interlocked.Increment(ref _keepAliveCount));
5936
}
6037

61-
protected void Arrange()
38+
protected override void Arrange()
6239
{
63-
SetupData();
64-
CreateMocks();
65-
SetupMocks();
40+
base.Arrange();
6641

6742
_client = new MyClient(_connectionInfo, false, _serviceFactoryMock.Object);
6843
_client.Connect();
6944
_client.KeepAliveInterval = _keepAliveInterval;
7045
}
7146

72-
protected void Act()
47+
protected override void TearDown()
48+
{
49+
if (_client != null)
50+
{
51+
_sessionMock.Setup(p => p.OnDisconnecting());
52+
_sessionMock.Setup(p => p.Dispose());
53+
_client.Dispose();
54+
}
55+
}
56+
57+
protected override void Act()
7358
{
7459
// allow keep-alive to be sent once
7560
Thread.Sleep(150);
@@ -84,10 +69,16 @@ public void KeepAliveIntervalShouldReturnConfiguredValue()
8469
Assert.AreEqual(TimeSpan.FromMilliseconds(-1), _client.KeepAliveInterval);
8570
}
8671

72+
[TestMethod]
73+
public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
74+
{
75+
_serviceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
76+
}
77+
8778
[TestMethod]
8879
public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
8980
{
90-
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo), Times.Once);
81+
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object), Times.Once);
9182
}
9283

9384
[TestMethod]

src/Renci.SshNet.Tests/Classes/BaseClientTest_Connected_KeepAliveInterval_NotNegativeOne.cs

+27-36
Original file line numberDiff line numberDiff line change
@@ -7,49 +7,25 @@
77
namespace Renci.SshNet.Tests.Classes
88
{
99
[TestClass]
10-
public class BaseClientTest_Connected_KeepAliveInterval_NotNegativeOne
10+
public class BaseClientTest_Connected_KeepAliveInterval_NotNegativeOne : BaseClientTestBase
1111
{
12-
private Mock<IServiceFactory> _serviceFactoryMock;
13-
private Mock<ISession> _sessionMock;
1412
private BaseClient _client;
1513
private ConnectionInfo _connectionInfo;
1614
private TimeSpan _keepAliveInterval;
1715
private int _keepAliveCount;
1816

19-
[TestInitialize]
20-
public void Setup()
21-
{
22-
Arrange();
23-
Act();
24-
}
25-
26-
[TestCleanup]
27-
public void Cleanup()
28-
{
29-
if (_client != null)
30-
{
31-
_sessionMock.Setup(p => p.OnDisconnecting());
32-
_sessionMock.Setup(p => p.Dispose());
33-
_client.Dispose();
34-
}
35-
}
36-
37-
private void SetupData()
17+
protected override void SetupData()
3818
{
3919
_connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
4020
_keepAliveInterval = TimeSpan.FromMilliseconds(50d);
4121
_keepAliveCount = 0;
4222
}
4323

44-
private void CreateMocks()
45-
{
46-
_serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
47-
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
48-
}
49-
50-
private void SetupMocks()
24+
protected override void SetupMocks()
5125
{
52-
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo))
26+
_serviceFactoryMock.Setup(p => p.CreateSocketFactory())
27+
.Returns(_socketFactoryMock.Object);
28+
_serviceFactoryMock.Setup(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object))
5329
.Returns(_sessionMock.Object);
5430
_sessionMock.Setup(p => p.Connect());
5531
_sessionMock.Setup(p => p.IsConnected).Returns(true);
@@ -58,17 +34,25 @@ private void SetupMocks()
5834
.Callback(() => Interlocked.Increment(ref _keepAliveCount));
5935
}
6036

61-
protected void Arrange()
37+
protected override void Arrange()
6238
{
63-
SetupData();
64-
CreateMocks();
65-
SetupMocks();
39+
base.Arrange();
6640

6741
_client = new MyClient(_connectionInfo, false, _serviceFactoryMock.Object);
6842
_client.Connect();
6943
}
7044

71-
protected void Act()
45+
protected override void TearDown()
46+
{
47+
if (_client != null)
48+
{
49+
_sessionMock.Setup(p => p.OnDisconnecting());
50+
_sessionMock.Setup(p => p.Dispose());
51+
_client.Dispose();
52+
}
53+
}
54+
55+
protected override void Act()
7256
{
7357
_client.KeepAliveInterval = _keepAliveInterval;
7458

@@ -82,10 +66,17 @@ public void KeepAliveIntervalShouldReturnConfiguredValue()
8266
Assert.AreEqual(_keepAliveInterval, _client.KeepAliveInterval);
8367
}
8468

69+
[TestMethod]
70+
public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
71+
{
72+
_serviceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
73+
}
74+
8575
[TestMethod]
8676
public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
8777
{
88-
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo), Times.Once);
78+
_serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, _socketFactoryMock.Object),
79+
Times.Once);
8980
}
9081

9182
[TestMethod]

0 commit comments

Comments
 (0)