2
0

NetConfClientTest_Finalize_Connected.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Moq;
  4. using Renci.SshNet.NetConf;
  5. namespace Renci.SshNet.Tests.Classes
  6. {
  7. [TestClass]
  8. public class NetConfClientTest_Finalize_Connected
  9. {
  10. private Mock<IServiceFactory> _serviceFactoryMock;
  11. private Mock<ISession> _sessionMock;
  12. private NetConfClient _netConfClient;
  13. private ConnectionInfo _connectionInfo;
  14. private Mock<INetConfSession> _netConfSessionMock;
  15. [TestInitialize]
  16. public void Setup()
  17. {
  18. Arrange();
  19. Act();
  20. }
  21. protected void Arrange()
  22. {
  23. _serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Loose);
  24. _sessionMock = new Mock<ISession>(MockBehavior.Loose);
  25. _netConfSessionMock = new Mock<INetConfSession>(MockBehavior.Loose);
  26. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  27. _netConfClient = new NetConfClient(_connectionInfo, false, _serviceFactoryMock.Object);
  28. var sequence = new MockSequence();
  29. _serviceFactoryMock.InSequence(sequence)
  30. .Setup(p => p.CreateSession(_connectionInfo))
  31. .Returns(_sessionMock.Object);
  32. _sessionMock.InSequence(sequence).Setup(p => p.Connect());
  33. _serviceFactoryMock.InSequence(sequence)
  34. .Setup(p => p.CreateNetConfSession(_sessionMock.Object, _netConfClient.OperationTimeout))
  35. .Returns(_netConfSessionMock.Object);
  36. _netConfSessionMock.InSequence(sequence).Setup(p => p.Connect());
  37. _netConfClient.Connect();
  38. _netConfClient = null;
  39. // we need to dereference all other mocks as they might otherwise hold the target alive
  40. _sessionMock = null;
  41. _connectionInfo = null;
  42. _serviceFactoryMock = null;
  43. }
  44. protected void Act()
  45. {
  46. GC.Collect();
  47. GC.WaitForPendingFinalizers();
  48. }
  49. [TestMethod]
  50. public void DisconnectOnNetConfSessionShouldBeInvokedOnce()
  51. {
  52. _netConfSessionMock.Verify(p => p.Disconnect(), Times.Never);
  53. }
  54. [TestMethod]
  55. public void DisposeOnNetConfSessionShouldBeInvokedOnce()
  56. {
  57. _netConfSessionMock.Verify(p => p.Dispose(), Times.Never);
  58. }
  59. }
  60. }