public void ShouldInsertNewPluginSetting() { _testPlugin.Setup(_ => _.GetSettings()) .Returns( new PluginSettingGroupDefinition { Code = "1111", DisplayName = "2222", SettingDefinitions = new List <Common.Contracts.PluginSettingDefinition> { new Common.Contracts.PluginSettingDefinition { SettingOwner = SettingOwner.Project, DisplayName = "3333", Code = "4444", DefaultValue = "5555", IsAuthentication = false, SettingType = SettingType.Text } } }); _pluginRepository .Setup(_ => _.GetByType( _testPlugin.Object.GetType().FullName, _testPlugin.Object.GetType().Assembly.GetName().Name, PluginType.IssueTracker)) .Returns(new Plugins { Id = 23 }); _target.Initialize(_testPlugin.Object, PluginType.IssueTracker); _pluginRepository.Verify(_ => _.GetByType( _testPlugin.Object.GetType().FullName, _testPlugin.Object.GetType().Assembly.GetName().Name, PluginType.IssueTracker), Times.Once); _settingGroupRepository.Verify(_ => _.Insert(It.IsAny <SettingGroups>()), Times.Once); _settingRepository.Verify(_ => _.Insert(It.IsAny <Settings>()), Times.Once); }
public void Initialize([NotNull] IPlugin plugin) { if (plugin == null) { throw new ArgumentNullException(nameof(plugin)); } var assemblyName = plugin.GetType().Assembly.GetName().Name; var typeFullName = plugin.GetType().FullName; var pluginTypes = GetPluginTypes(plugin); var currentLicense = _licenseProvider.GetCurrent(); var pluginLicenseComponent = currentLicense.Get <PluginLicenceComponent>(); if (!pluginLicenseComponent.CanUse(typeFullName)) { _log.Warning( $"Plugin type registration denied by licence. Licence Id='{currentLicense.Id}', Plugin type='{typeFullName}'"); return; } if (pluginTypes.Length == 0) { _log.Warning( Resources.Resources.PluginProvider_Initialize_PluginNotImplementsInterfaces.FormatWith( typeFullName, assemblyName)); return; } foreach (var pluginType in pluginTypes) { var pluginDb = _pluginRepository.GetByType(typeFullName, assemblyName, pluginType); if (pluginDb != null) { _log.Info( Resources.Resources.PluginProvider_Initialize_PluginAlreadyRegistered.FormatWith( typeFullName, assemblyName, pluginType)); } else { pluginDb = new Plugins { AssemblyName = assemblyName, DisplayName = plugin.Title, TypeFullName = typeFullName, Type = (int)pluginType }; _pluginRepository.Insert(pluginDb); _pluginRepository.Save(); LogInitializedPlugin(pluginDb); } _pluginSettingProvider.Initialize(plugin, pluginType); _pluginContainerManager.Register(plugin, typeFullName); } }