From a8e022cab4a88b021148cfbffa9a7951ed55e2ad Mon Sep 17 00:00:00 2001 From: David Sparer Date: Sun, 2 Apr 2017 19:32:49 -0600 Subject: [PATCH] added some lifecycle tests for the cred de/encrypt --- .../XmlCredentialSerializerLifeCycleTests.cs | 61 ++++++++++++++++--- .../XmlCredentialRecordSerializer.cs | 2 +- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/mRemoteNGTests/IntegrationTests/XmlCredentialSerializerLifeCycleTests.cs b/mRemoteNGTests/IntegrationTests/XmlCredentialSerializerLifeCycleTests.cs index 104fcd35..0ffe6d56 100644 --- a/mRemoteNGTests/IntegrationTests/XmlCredentialSerializerLifeCycleTests.cs +++ b/mRemoteNGTests/IntegrationTests/XmlCredentialSerializerLifeCycleTests.cs @@ -1,5 +1,8 @@ -using System.Linq; +using System; +using System.Collections.Generic; +using System.Linq; using System.Security; +using mRemoteNG.Config.Serializers; using mRemoteNG.Config.Serializers.CredentialSerializer; using mRemoteNG.Credential; using mRemoteNG.Security; @@ -9,13 +12,17 @@ namespace mRemoteNGTests.IntegrationTests { public class XmlCredentialSerializerLifeCycleTests { - private XmlCredentialRecordSerializer _serializer; + private ISerializer, string> _serializer; private XmlCredentialRecordDeserializer _deserializer; + private readonly Guid _id = Guid.NewGuid(); + private const string Title = "mycredential1"; + private const string Username = "user1"; + private const string Domain = "domain1"; + private readonly SecureString _password = "myPassword1!".ConvertToSecureString(); [SetUp] public void Setup() { - var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.CCM); _serializer = new XmlCredentialRecordSerializer(); _deserializer = new XmlCredentialRecordDeserializer(); } @@ -23,20 +30,56 @@ namespace mRemoteNGTests.IntegrationTests [Test] public void WeCanSerializeAndDeserializeXmlCredentials() { - var credentials = CreateCredentials(); + var credentials = new[] { new CredentialRecord(), new CredentialRecord() }; var serializedCredentials = _serializer.Serialize(credentials); var deserializedCredentials = _deserializer.Deserialize(serializedCredentials); Assert.That(deserializedCredentials.Count(), Is.EqualTo(2)); } - - private CredentialRecord[] CreateCredentials() + [Test] + public void IdConsistentAfterSerialization() { - return new[] + var sut = SerializeThenDeserializeCredential(); + Assert.That(sut.Id, Is.EqualTo(_id)); + } + + [Test] + public void TitleConsistentAfterSerialization() + { + var sut = SerializeThenDeserializeCredential(); + Assert.That(sut.Title, Is.EqualTo(Title)); + } + + [Test] + public void UsernameConsistentAfterSerialization() + { + var sut = SerializeThenDeserializeCredential(); + Assert.That(sut.Username, Is.EqualTo(Username)); + } + + [Test] + public void DomainConsistentAfterSerialization() + { + var sut = SerializeThenDeserializeCredential(); + Assert.That(sut.Domain, Is.EqualTo(Domain)); + } + + [Test] + public void PasswordConsistentAfterSerialization() + { + var sut = SerializeThenDeserializeCredential(); + Assert.That(sut.Password.ConvertToUnsecureString(), Is.EqualTo(_password.ConvertToUnsecureString())); + } + + private ICredentialRecord SerializeThenDeserializeCredential() + { + var credentials = new[] { - new CredentialRecord {Title = "mycred1", Username = "user1", Domain = "dom1", Password = "somepass1".ConvertToSecureString()}, - new CredentialRecord {Title = "mycred2", Username = "user2", Domain = "dom2", Password = "somepass2".ConvertToSecureString()} + new CredentialRecord(_id) {Title = Title, Username = Username, Domain = Domain, Password = _password} }; + var serializedCredentials = _serializer.Serialize(credentials); + var deserializedCredentials = _deserializer.Deserialize(serializedCredentials); + return deserializedCredentials.First(); } } } \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs b/mRemoteV1/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs index 3723fa56..b3cc9db8 100644 --- a/mRemoteV1/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs +++ b/mRemoteV1/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs @@ -7,7 +7,7 @@ using mRemoteNG.Security; namespace mRemoteNG.Config.Serializers.CredentialSerializer { - public class XmlCredentialRecordSerializer + public class XmlCredentialRecordSerializer : ISerializer, string> { public string SchemaVersion { get; } = "1.0";