From ddfbb1d42e3f313a705430971322bcf8cbbcefaa Mon Sep 17 00:00:00 2001 From: David Sparer Date: Sun, 25 Sep 2016 14:01:43 -0600 Subject: [PATCH] Created tests for PuttyConnectionManagerDeserializer --- ...PuttyConnectionManagerDeserializerTests.cs | 112 ++++++++++++++++++ .../Properties/Resources.Designer.cs | 16 +++ mRemoteNGTests/Properties/Resources.resx | 3 + .../test_puttyConnectionManager_database.dat | Bin 0 -> 3844 bytes ...puttyConnectionManager_database_backup.dat | Bin 0 -> 3742 bytes mRemoteNGTests/mRemoteNGTests.csproj | 2 + .../PuttyConnectionManagerDeserializer.cs | 6 +- 7 files changed, 134 insertions(+), 5 deletions(-) create mode 100644 mRemoteNGTests/Config/Serializers/PuttyConnectionManagerDeserializerTests.cs create mode 100644 mRemoteNGTests/Resources/test_puttyConnectionManager_database.dat create mode 100644 mRemoteNGTests/Resources/test_puttyConnectionManager_database_backup.dat diff --git a/mRemoteNGTests/Config/Serializers/PuttyConnectionManagerDeserializerTests.cs b/mRemoteNGTests/Config/Serializers/PuttyConnectionManagerDeserializerTests.cs new file mode 100644 index 000000000..f8d5fbe30 --- /dev/null +++ b/mRemoteNGTests/Config/Serializers/PuttyConnectionManagerDeserializerTests.cs @@ -0,0 +1,112 @@ +using System.Linq; +using mRemoteNG.Config.Serializers; +using mRemoteNG.Connection; +using mRemoteNG.Connection.Protocol; +using mRemoteNG.Container; +using mRemoteNGTests.Properties; +using NUnit.Framework; + + +namespace mRemoteNGTests.Config.Serializers +{ + public class PuttyConnectionManagerDeserializerTests + { + private PuttyConnectionManagerDeserializer _deserializer; + private ContainerInfo _rootImportedFolder; + private const string ExpectedRootFolderName = "test_puttyConnectionManager_database"; + private const string ExpectedConnectionDisplayName = "my ssh connection"; + private const string ExpectedConnectionHostname = "server1.mydomain.com"; + private const string ExpectedConnectionDescription = "My Description Here"; + private const int ExpectedConnectionPort = 22; + private const ProtocolType ExpectedProtocolType = ProtocolType.SSH2; + private const string ExpectedPuttySession = "MyCustomPuttySession"; + private const string ExpectedConnectionUsername = "mysshusername"; + private const string ExpectedConnectionPassword = "password123"; + + + [OneTimeSetUp] + public void OnetimeSetup() + { + var fileContents = Resources.test_puttyConnectionManager_database; + _deserializer = new PuttyConnectionManagerDeserializer(fileContents); + var connectionTreeModel = _deserializer.Deserialize(); + var rootNode = connectionTreeModel.RootNodes.First(); + _rootImportedFolder = rootNode.Children.Cast().First(); + } + + [OneTimeTearDown] + public void OnetimeTeardown() + { + _deserializer = null; + _rootImportedFolder = null; + } + + [Test] + public void RootFolderImportedWithCorrectName() + { + Assert.That(_rootImportedFolder.Name, Is.EqualTo(ExpectedRootFolderName)); + } + + [Test] + public void ConnectionDisplayNameImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Name, Is.EqualTo(ExpectedConnectionDisplayName)); + } + + [Test] + public void ConnectionHostNameImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Hostname, Is.EqualTo(ExpectedConnectionHostname)); + } + + [Test] + public void ConnectionDescriptionImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Description, Is.EqualTo(ExpectedConnectionDescription)); + } + + [Test] + public void ConnectionPortImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Port, Is.EqualTo(ExpectedConnectionPort)); + } + + [Test] + public void ConnectionProtocolTypeImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Protocol, Is.EqualTo(ExpectedProtocolType)); + } + + [Test] + public void ConnectionPuttySessionImported() + { + var connection = GetSshConnection(); + Assert.That(connection.PuttySession, Is.EqualTo(ExpectedPuttySession)); + } + + [Test] + public void ConnectionUsernameImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Username, Is.EqualTo(ExpectedConnectionUsername)); + } + + [Test] + public void ConnectionPasswordImported() + { + var connection = GetSshConnection(); + Assert.That(connection.Password, Is.EqualTo(ExpectedConnectionPassword)); + } + + private ConnectionInfo GetSshConnection() + { + var sshFolder = _rootImportedFolder.Children.OfType().First(node => node.Name == "SSHFolder"); + return sshFolder.Children.First(); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/Properties/Resources.Designer.cs b/mRemoteNGTests/Properties/Resources.Designer.cs index f0aa49cdf..2048ae029 100644 --- a/mRemoteNGTests/Properties/Resources.Designer.cs +++ b/mRemoteNGTests/Properties/Resources.Designer.cs @@ -60,6 +60,22 @@ namespace mRemoteNGTests.Properties { } } + /// + /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-16"?> + ///<!-- ****************************************************************--> + ///<!-- * *--> + ///<!-- * PuTTY Configuration Manager save file - All right reserved. *--> + ///<!-- * *--> + ///<!-- ****************************************************************--> + ///<!-- The following lines can be modified at your own risks. --> + ///<configuration version="0.7.1.136" [rest of string was truncated]";. + /// + internal static string test_puttyConnectionManager_database { + get { + return ResourceManager.GetString("test_puttyConnectionManager_database", resourceCulture); + } + } + /// /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?> ///<RDCMan schemaVersion="1"> diff --git a/mRemoteNGTests/Properties/Resources.resx b/mRemoteNGTests/Properties/Resources.resx index 78cf04dc5..91106699f 100644 --- a/mRemoteNGTests/Properties/Resources.resx +++ b/mRemoteNGTests/Properties/Resources.resx @@ -121,6 +121,9 @@ ..\Resources\TestConfCons.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + ..\Resources\test_puttyConnectionManager_database.dat;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + ..\Resources\test_rdcman_badVersionNumber.rdg;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 diff --git a/mRemoteNGTests/Resources/test_puttyConnectionManager_database.dat b/mRemoteNGTests/Resources/test_puttyConnectionManager_database.dat new file mode 100644 index 0000000000000000000000000000000000000000..552acdde5a52b792d8a9fdccb9a995523cbed178 GIT binary patch literal 3844 zcmc&%O^?$s5S=p;|H15WrTu8jvX_t*0^JfbLC9Y@0EP#mBKf==<_%04r#C%Bb zZi9&&kjfzio#5`8^KCougwB zZ;ny27sG1tT9$UOw`!1G7r9lAk%|`Tp$z4tJYv0Toy%IBGQW$#U#X9xuKy-;8JMC@ zB{Ge9M9uw3u0C$fCPC}5^1xNwKID2-&&glyQYd(A{zPsZd+q^M9QQkcX3U)(ZmwdD z`7OWnZ;!>}tl-UDO7U5BvqJNlSZ5f`4r*WPOc}EF2JBT{@yJ`)6dJiNef6r}#Jz}u z`q&Ik(W9B$d&NjB)YfMF(6c0}rf+-}a+c}JnD&ovTbGvKakK8}eesH4w>l5wo zI_#^gtXCW6B|$aR-K^}aiaH0mE3gxC=c~>(ehs=7A=Rp`VRsUrXQFt-3~TL1jLW@) z`&8R59-IHO>h3Mt=w}|(}wHJvEKhVX^qg~ b*6^Og|FrX#UkyZBolq^l8hhv;RVse~p{)-6 literal 0 HcmV?d00001 diff --git a/mRemoteNGTests/Resources/test_puttyConnectionManager_database_backup.dat b/mRemoteNGTests/Resources/test_puttyConnectionManager_database_backup.dat new file mode 100644 index 0000000000000000000000000000000000000000..a5496285e4f72a99f6e77a6df04c49639ad27e00 GIT binary patch literal 3742 zcmc&%O>fgc5S=p;|6%E|Qa_SXdNHmLsN#Zz)Lb}4A)gho6WIx+e;#;mHfDF7T}R;( zSxy}9%|Iu%Q4 zOsB1=SUnA7p`6d485v*6GZ<%w82sWDIXCDX>SpA-S{J)cqGnXWV3i8J;64>M8i)4O zua+M;ty(??_G78K@7KwGFJB|V9ZvRiPj0klUHzrP3qbdt1 z=Bwa$W~Otw1RFk&L(P`C*=gf@G}qZbg>vZh0$%K1tX5W57%`J8&z_UMiQ|7~P=*z< z!O18~>~C45|NdG!&H~=7m>i$Y%&N3{iFJb2VyEe)?o^;QufSB}m5#iIO{J0h(pN8c zC+$TPlA!mhV#_Db+h(U}l9a+6KSm3l+1BH*# z$fxM4L1mNIsWOm?5JSq0Vij_z<}&27!enG0c4gzN4&~jRT8Hgfn}u?ewqc%-;(+oyMP$lE@5a=Y6hZIh1M<~kkykY#$0u=>+G zblb(^lh<~Ex!Ofq#vnyN; za*lI$@mckN>!r@iunT>gm~OVyILG DVT$@U literal 0 HcmV?d00001 diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index f75d44aeb..d1910f750 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -109,6 +109,7 @@ + @@ -167,6 +168,7 @@ + diff --git a/mRemoteV1/Config/Serializers/PuttyConnectionManagerDeserializer.cs b/mRemoteV1/Config/Serializers/PuttyConnectionManagerDeserializer.cs index 159f3f275..955696f98 100644 --- a/mRemoteV1/Config/Serializers/PuttyConnectionManagerDeserializer.cs +++ b/mRemoteV1/Config/Serializers/PuttyConnectionManagerDeserializer.cs @@ -62,8 +62,6 @@ namespace mRemoteNG.Config.Serializers throw (new FileFormatException($"Unrecognized child node ({childNode.Name}).")); } } - - Runtime.ContainerList.Add(newContainer); } private void VerifyNodeType(XmlNode xmlNode) @@ -108,8 +106,6 @@ namespace mRemoteNG.Config.Serializers var connectionInfo = ConnectionInfoFromXml(connectionNode); parentContainer.AddChild(connectionInfo); - - Runtime.ConnectionList.Add(connectionInfo); } private ConnectionInfo ConnectionInfoFromXml(XmlNode xmlNode) @@ -129,7 +125,7 @@ namespace mRemoteNG.Config.Serializers connectionInfo.Protocol = ProtocolType.SSH2; break; default: - throw (new FileFormatException($"Unrecognized protocol ({protocol}).")); + throw new FileFormatException($"Unrecognized protocol ({protocol})."); } connectionInfo.Hostname = connectionInfoNode.SelectSingleNode("./host")?.InnerText;