renamed ICredentialProvider to ICredentialRepository and split up data/behavior to separate classes

This commit is contained in:
David Sparer
2017-02-10 12:17:12 -07:00
parent edf0342404
commit b8c2c86c59
17 changed files with 67 additions and 54 deletions

View File

@@ -17,11 +17,11 @@ namespace mRemoteNGTests.Config.Serializers
_credentialProviderSerializer = new CredentialProviderSerializer();
}
private ICredentialProvider InitializeMockProvider()
private ICredentialRepository InitializeMockProvider()
{
var provider = Substitute.For<ICredentialProvider>();
provider.Name.Returns("ProviderName");
provider.Id.Returns(Guid.NewGuid());
var provider = Substitute.For<ICredentialRepository>();
provider.Config.Name.Returns("ProviderName");
provider.Config.Id.Returns(Guid.NewGuid());
return provider;
}

View File

@@ -10,12 +10,12 @@ namespace mRemoteNGTests.Credential
public class CredentialListBaseTests
{
private CredentialListBase _credentialList;
private ICredentialProvider _mockCredentialProvider;
private ICredentialRepository _mockCredentialProvider;
[SetUp]
public void Setup()
{
_mockCredentialProvider = Substitute.For<ICredentialProvider>();
_mockCredentialProvider = Substitute.For<ICredentialRepository>();
_credentialList = new CredentialListBase(_mockCredentialProvider);
}

View File

@@ -24,7 +24,7 @@ namespace mRemoteNGTests.Credential
[Test]
public void ProviderIsInListAfterBeingAdded()
{
var provider = Substitute.For<ICredentialProvider>();
var provider = Substitute.For<ICredentialRepository>();
_credentialCatalog.AddProvider(provider);
Assert.That(_credentialCatalog.CredentialProviders, Does.Contain(provider));
}
@@ -32,8 +32,8 @@ namespace mRemoteNGTests.Credential
[Test]
public void ProviderNotInListAfterBeingRemoved()
{
var provider1 = Substitute.For<ICredentialProvider>();
var provider2 = Substitute.For<ICredentialProvider>();
var provider1 = Substitute.For<ICredentialRepository>();
var provider2 = Substitute.For<ICredentialRepository>();
_credentialCatalog.AddProvider(provider1);
_credentialCatalog.AddProvider(provider2);
_credentialCatalog.RemoveProvider(provider1);
@@ -43,7 +43,7 @@ namespace mRemoteNGTests.Credential
[Test]
public void RemoveProviderThatIsntInTheList()
{
_credentialCatalog.RemoveProvider(Substitute.For<ICredentialProvider>());
_credentialCatalog.RemoveProvider(Substitute.For<ICredentialRepository>());
Assert.That(_credentialCatalog.CredentialProviders, Is.Empty);
}
}

View File

@@ -19,7 +19,7 @@ namespace mRemoteNGTests.Credential
public void CanAddCredentialList()
{
var credential = Substitute.For<ICredentialRecord>();
var credList = new CredentialListBase(Substitute.For<ICredentialProvider>()) {credential};
var credList = new CredentialListBase(Substitute.For<ICredentialRepository>()) {credential};
_credentialRecordCatalog.AddCredentialList(credList);
Assert.That(_credentialRecordCatalog.CredentialRecords, Does.Contain(credential));
}
@@ -28,9 +28,9 @@ namespace mRemoteNGTests.Credential
public void CanRemoveCredentialList()
{
var credential1 = Substitute.For<ICredentialRecord>();
var credList1 = new CredentialListBase(Substitute.For<ICredentialProvider>()) { credential1 };
var credList1 = new CredentialListBase(Substitute.For<ICredentialRepository>()) { credential1 };
var credential2 = Substitute.For<ICredentialRecord>();
var credList2 = new CredentialListBase(Substitute.For<ICredentialProvider>()) { credential2 };
var credList2 = new CredentialListBase(Substitute.For<ICredentialRepository>()) { credential2 };
_credentialRecordCatalog.AddCredentialList(credList1);
_credentialRecordCatalog.AddCredentialList(credList2);
_credentialRecordCatalog.RemoveCredentialList(credList1);
@@ -40,7 +40,7 @@ namespace mRemoteNGTests.Credential
[Test]
public void RemovingACredentialListThatIsntAddedDoesNothing()
{
var credList1 = new CredentialListBase(Substitute.For<ICredentialProvider>());
var credList1 = new CredentialListBase(Substitute.For<ICredentialRepository>());
_credentialRecordCatalog.RemoveCredentialList(credList1);
Assert.That(_credentialRecordCatalog.CredentialRecords, Is.Empty);
}

View File

@@ -8,7 +8,7 @@ namespace mRemoteNG.Config.Serializers.CredentialProviderSerializer
{
public class CredentialProviderSerializer
{
public string Serialize(IEnumerable<ICredentialProvider> credentialProviderCatalog)
public string Serialize(IEnumerable<ICredentialRepository> credentialProviderCatalog)
{
var xmlDocument = new XDocument(new XDeclaration("1.0", "utf-8", ""));
var rootElement = new XElement(XName.Get("CredentialProviders"));
@@ -22,11 +22,11 @@ namespace mRemoteNG.Config.Serializers.CredentialProviderSerializer
return string.Concat(declaration, Environment.NewLine, documentBody);
}
private XElement SerializeCredentialProvider(ICredentialProvider provider)
private XElement SerializeCredentialProvider(ICredentialRepository provider)
{
var element = new XElement(XName.Get("Provider"));
element.Add(new XAttribute(XName.Get("Id"), provider.Id));
element.Add(new XAttribute(XName.Get("Name"), provider.Name));
element.Add(new XAttribute(XName.Get("Id"), provider.Config.Id));
element.Add(new XAttribute(XName.Get("Name"), provider.Config.Name));
return element;
}
}

View File

@@ -7,9 +7,9 @@ namespace mRemoteNG.Credential
{
public class CredentialListBase : List<ICredentialRecord>, ICredentialList
{
public ICredentialProvider CredentialProvider { get; }
public ICredentialRepository CredentialProvider { get; }
public CredentialListBase(ICredentialProvider credentialProvider)
public CredentialListBase(ICredentialRepository credentialProvider)
{
CredentialProvider = credentialProvider;
}

View File

@@ -6,22 +6,22 @@ namespace mRemoteNG.Credential
{
public class CredentialProviderCatalog : ICredentialProviderCatalog
{
private readonly List<ICredentialProvider> _credentialProviders = new List<ICredentialProvider>();
private readonly List<ICredentialRepository> _credentialProviders = new List<ICredentialRepository>();
public IEnumerable<ICredentialProvider> CredentialProviders => _credentialProviders;
public IEnumerable<ICredentialRepository> CredentialProviders => _credentialProviders;
public void AddProvider(ICredentialProvider credentialProvider)
public void AddProvider(ICredentialRepository credentialProvider)
{
_credentialProviders.Add(credentialProvider);
}
public void RemoveProvider(ICredentialProvider credentialProvider)
public void RemoveProvider(ICredentialRepository credentialProvider)
{
_credentialProviders.Remove(credentialProvider);
}
public IEnumerator<ICredentialProvider> GetEnumerator()
public IEnumerator<ICredentialRepository> GetEnumerator()
{
return _credentialProviders.GetEnumerator();
}

View File

@@ -6,7 +6,7 @@ namespace mRemoteNG.Credential
{
public interface ICredentialList : IList<ICredentialRecord>
{
ICredentialProvider CredentialProvider { get; }
ICredentialRepository CredentialProvider { get; }
ICredentialRecord GetCredential(Guid uniqueId);

View File

@@ -1,14 +0,0 @@
using System;
namespace mRemoteNG.Credential
{
public interface ICredentialProvider
{
Guid Id { get; }
string Name { get; }
ICredentialList LoadCredentials();
}
}

View File

@@ -2,12 +2,12 @@
namespace mRemoteNG.Credential
{
public interface ICredentialProviderCatalog : IEnumerable<ICredentialProvider>
public interface ICredentialProviderCatalog : IEnumerable<ICredentialRepository>
{
IEnumerable<ICredentialProvider> CredentialProviders { get; }
IEnumerable<ICredentialRepository> CredentialProviders { get; }
void AddProvider(ICredentialProvider credentialProvider);
void AddProvider(ICredentialRepository credentialProvider);
void RemoveProvider(ICredentialProvider credentialProvider);
void RemoveProvider(ICredentialRepository credentialProvider);
}
}

View File

@@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Security;
using mRemoteNG.Credential.Repositories;
namespace mRemoteNG.Credential
{
public interface ICredentialRepository
{
ICredentialRepositoryConfig Config { get; }
IEnumerable<ICredentialRecord> LoadCredentials(SecureString key);
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Security;
namespace mRemoteNG.Credential.Repositories
{
public interface ICredentialRepositoryConfig
{
Guid Id { get; }
string Name { get; }
string Source { get; set; }
SecureString Key { get; set; }
}
}

View File

@@ -11,13 +11,13 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages
public string PageName { get; } = "add repo";
public Image PageIcon { get; }
public CredentialRepositorySelectionPage(IEnumerable<ISelectionTarget<ICredentialProvider>> selectionTargets)
public CredentialRepositorySelectionPage(IEnumerable<ISelectionTarget<ICredentialRepository>> selectionTargets)
{
InitializeComponent();
SetupListView(selectionTargets);
}
private void SetupListView(IEnumerable<ISelectionTarget<ICredentialProvider>> selectionTargets)
private void SetupListView(IEnumerable<ISelectionTarget<ICredentialRepository>> selectionTargets)
{
olvColumnName.ImageGetter = ImageGetter;
objectListView.SetObjects(selectionTargets);
@@ -25,7 +25,7 @@ namespace mRemoteNG.UI.Forms.CredentialManagerPages
private object ImageGetter(object rowObject)
{
var selection = rowObject as ISelectionTarget<ICredentialProvider>;
var selection = rowObject as ISelectionTarget<ICredentialRepository>;
if (selection == null) return "";
var imgHash = selection.Image.GetHashCode().ToString();
if (!objectListView.LargeImageList.Images.ContainsKey(imgHash))

View File

@@ -4,10 +4,10 @@ using mRemoteNG.UI.Controls;
namespace mRemoteNG.UI.Forms.CredentialManagerPages.CredentialRepositorySelectors
{
public class KeePassRepositorySelector : ISelectionTarget<ICredentialProvider>
public class KeePassRepositorySelector : ISelectionTarget<ICredentialRepository>
{
public string Text { get; set; } = "KeePass";
public Image Image { get; } = Resources.keepass_32x32;
public IFactory<ICredentialProvider> Factory { get; }
public IFactory<ICredentialRepository> Factory { get; }
}
}

View File

@@ -4,10 +4,10 @@ using mRemoteNG.UI.Controls;
namespace mRemoteNG.UI.Forms.CredentialManagerPages.CredentialRepositorySelectors
{
public class XmlCredentialRepositorySelector : ISelectionTarget<ICredentialProvider>
public class XmlCredentialRepositorySelector : ISelectionTarget<ICredentialRepository>
{
public string Text { get; set; } = "XML";
public Image Image { get; } = Resources.xml;
public IFactory<ICredentialProvider> Factory { get; }
public IFactory<ICredentialRepository> Factory { get; }
}
}

View File

@@ -129,7 +129,7 @@ namespace mRemoteNG.UI.Menu
DeletionConfirmer = new CredentialDeletionMsgBoxConfirmer(MessageBox.Show)
},
new CredentialSourcesPage(new CredentialProviderCatalog()),
new CredentialRepositorySelectionPage(new ISelectionTarget<ICredentialProvider>[]
new CredentialRepositorySelectionPage(new ISelectionTarget<ICredentialRepository>[]
{
new XmlCredentialRepositorySelector(),
new KeePassRepositorySelector()

View File

@@ -106,7 +106,6 @@
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Folder Include="Credential\Providers\" />
<Folder Include="Properties\DataSources\" />
</ItemGroup>
<ItemGroup>
@@ -215,12 +214,14 @@
<Compile Include="Credential\CredentialListBase.cs" />
<Compile Include="Credential\CredentialRecordCatalog.cs" />
<Compile Include="Credential\CredentialRecordTypeConverter.cs" />
<Compile Include="Credential\CredentialRepositoryConfig.cs" />
<Compile Include="Credential\ICredentialRecord.cs" />
<Compile Include="Credential\ICredentialProviderCatalog.cs" />
<Compile Include="Credential\ICredentialProvider.cs" />
<Compile Include="Credential\ICredentialRepository.cs" />
<Compile Include="Credential\ICredentialList.cs" />
<Compile Include="Credential\IFactory.cs" />
<Compile Include="Credential\INotifyingCredentialRecord.cs" />
<Compile Include="Credential\Repositories\ICredentialRepositoryConfig.cs" />
<Compile Include="Messages\MessageFilteringOptions\LogMessageTypeFilteringOptions.cs" />
<Compile Include="Messages\WriterDecorators\MessageTypeFilterDecorator.cs" />
<Compile Include="Messages\MessageWriters\DebugConsoleMessageWriter.cs" />