mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
renamed ICredentialProvider to ICredentialRepository and split up data/behavior to separate classes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace mRemoteNG.Credential
|
||||
{
|
||||
public interface ICredentialList : IList<ICredentialRecord>
|
||||
{
|
||||
ICredentialProvider CredentialProvider { get; }
|
||||
ICredentialRepository CredentialProvider { get; }
|
||||
|
||||
ICredentialRecord GetCredential(Guid uniqueId);
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
|
||||
|
||||
namespace mRemoteNG.Credential
|
||||
{
|
||||
public interface ICredentialProvider
|
||||
{
|
||||
Guid Id { get; }
|
||||
|
||||
string Name { get; }
|
||||
|
||||
ICredentialList LoadCredentials();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
13
mRemoteV1/Credential/ICredentialRepository.cs
Normal file
13
mRemoteV1/Credential/ICredentialRepository.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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))
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user