mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
added some lifecycle tests for the cred de/encrypt
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user