added some lifecycle tests for the cred de/encrypt

This commit is contained in:
David Sparer
2017-04-02 19:32:49 -06:00
parent 579e8abda1
commit a8e022cab4
2 changed files with 53 additions and 10 deletions

View File

@@ -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<IEnumerable<ICredentialRecord>, 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();
}
}
}

View File

@@ -7,7 +7,7 @@ using mRemoteNG.Security;
namespace mRemoteNG.Config.Serializers.CredentialSerializer
{
public class XmlCredentialRecordSerializer
public class XmlCredentialRecordSerializer : ISerializer<IEnumerable<ICredentialRecord>, string>
{
public string SchemaVersion { get; } = "1.0";