示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }