private static void AddBlockSettingsPolicy(
            AdmContentBuilder contentBuilder,
            String sectionKey,
            LoggingSettings configurationSection)
        {
            contentBuilder.StartPolicy(Resources.LoggingSettingsPolicyName, sectionKey);
            {
                contentBuilder.AddDropDownListPartForNamedElementCollection <TraceSourceData>(
                    Resources.LoggingSettingsDefaultCategoryPartName,
                    DefaultCategoryPropertyName,
                    configurationSection.TraceSources,
                    configurationSection.DefaultCategory,
                    false);

                contentBuilder.AddCheckboxPart(Resources.LoggingSettingsLogWarningPartName,
                                               LogWarningOnNoMatchPropertyName,
                                               configurationSection.LogWarningWhenNoCategoriesMatch);

                contentBuilder.AddCheckboxPart(Resources.LoggingSettingsEnableTracingPartName,
                                               TracingEnabledPropertyName,
                                               configurationSection.TracingEnabled);

                contentBuilder.AddCheckboxPart(Resources.LoggingSettingsRevertImpersonationPartName,
                                               RevertImpersonationPropertyName,
                                               configurationSection.RevertImpersonation);
            }
            contentBuilder.EndPolicy();
        }
        protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                                      CategoryFilterData configurationObject,
                                                                      IConfigurationSource configurationSource,
                                                                      String elementPolicyKeyName)
        {
            contentBuilder.AddDropDownListPartForEnumeration <CategoryFilterMode>(Resources.CategoryFilterFilterModePartName,
                                                                                  CategoryFilterModePropertyName,
                                                                                  configurationObject.CategoryFilterMode);

            contentBuilder.AddTextPart(Resources.CategoryFilterCategoriesPartName);

            LoggingSettings configurationSection
                = configurationSource.GetSection(LoggingSettings.SectionName) as LoggingSettings;
            String logFilterCategoriesKeyName
                = elementPolicyKeyName + @"\" + CategoryFiltersKeyName;

            foreach (TraceSourceData category in configurationSection.TraceSources)
            {
                contentBuilder.AddCheckboxPart(category.Name,
                                               logFilterCategoriesKeyName,
                                               category.Name,
                                               configurationObject.CategoryFilters.Contains(category.Name),
                                               true,
                                               false);
            }
        }
 /// <summary>
 /// Adds the ADM instructions that describe the policies that can be used to override the configuration
 /// information represented by a configuration section.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationSection">The configuration section instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="sectionKey">The root key for the section's policies.</param>
 protected override void AddAdministrativeTemplateDirectives(
     AdmContentBuilder contentBuilder,
     LoggingSettings configurationSection,
     IConfigurationSource configurationSource,
     String sectionKey)
 {
     AddBlockSettingsPolicy(contentBuilder, sectionKey, configurationSection);
     AddCategorySourcesPolicies(contentBuilder, sectionKey, configurationSection);
     AddSpecialSourcesPolicies(contentBuilder, sectionKey, configurationSection);
     AddElementsPolicies <LogFilterData>(contentBuilder,
                                         configurationSection.LogFilters,
                                         configurationSource,
                                         sectionKey + @"\" + LogFiltersKeyName,
                                         Resources.LogFiltersCategoryName);
     AddElementsPolicies <FormatterData>(contentBuilder,
                                         configurationSection.Formatters,
                                         configurationSource,
                                         sectionKey + @"\" + LogFormattersKeyName,
                                         Resources.LogFormattersCategoryName);
     AddElementsPolicies <TraceListenerData>(contentBuilder,
                                             configurationSection.TraceListeners,
                                             configurationSource,
                                             sectionKey + @"\" + TraceListenersKeyName,
                                             Resources.TraceListenersCategoryName);
 }
예제 #4
0
        protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                                    OracleConnectionSettings configurationSection,
                                                                    IConfigurationSource configurationSource,
                                                                    String sectionKey)
        {
            contentBuilder.StartCategory(Resources.OracleConnectionsCategoryName);
            {
                foreach (OracleConnectionData data in configurationSection.OracleConnectionsData)
                {
                    String connectionPolicyKey = sectionKey + @"\" + data.Name;

                    contentBuilder.StartPolicy(String.Format(CultureInfo.InvariantCulture,
                                                             Resources.OracleConnectionPolicyNameTemplate,
                                                             data.Name),
                                               connectionPolicyKey);
                    {
                        contentBuilder.AddEditTextPart(Resources.OracleConnectionPackagesPartName,
                                                       PackagesPropertyName,
                                                       GenerateRulesString(data.Packages),
                                                       1024,
                                                       true);
                    }
                    contentBuilder.EndPolicy();
                }
            }
            contentBuilder.EndCategory();
        }
예제 #5
0
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               WmiTraceListenerData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               String elementPolicyKeyName)
 {
     AddTraceOptionsPart(contentBuilder, configurationObject.TraceOutputOptions);
 }
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             ConnectionStringsSection configurationSection,
                                                             IConfigurationSource configurationSource,
                                                             String sectionKey)
 {
     contentBuilder.StartCategory(Resources.ConnectionStringsCategoryName);
     {
         foreach (ConnectionStringSettings connectionString in configurationSection.ConnectionStrings)
         {
             contentBuilder.StartPolicy(String.Format(CultureInfo.InvariantCulture,
                                                      Resources.ConnectionStringPolicyNameTemplate,
                                                      connectionString.Name),
                                        sectionKey + @"\" + connectionString.Name);
             contentBuilder.AddEditTextPart(Resources.ConnectionStringConnectionStringPartName,
                                            ConnectionStringPropertyName,
                                            connectionString.ConnectionString,
                                            500,
                                            true);
             contentBuilder.AddComboBoxPart(Resources.ConnectionStringProviderNamePartName,
                                            ProviderNamePropertyName,
                                            connectionString.ProviderName,
                                            255,
                                            true,
                                            "System.Data.SqlClient",
                                            "System.Data.OracleClient");
             contentBuilder.EndPolicy();
         }
     }
     contentBuilder.EndCategory();
 }
        protected override void AddAdministrativeTemplateDirectives(
            AdmContentBuilder contentBuilder,
            DatabaseSettings configurationSection,
            IConfigurationSource configurationSource,
            string sectionKey)
        {
            contentBuilder.StartPolicy(Resources.DatabaseSettingsPolicyName, sectionKey);
            List <AdmDropDownListItem> dropDownListItemList = new List <AdmDropDownListItem>();
            ConnectionStringsSection   section = (ConnectionStringsSection)configurationSource.GetSection("connectionStrings");

            if (section != null)
            {
                foreach (ConnectionStringSettings connectionString in (ConfigurationElementCollection)section.ConnectionStrings)
                {
                    dropDownListItemList.Add(new AdmDropDownListItem(connectionString.Name, connectionString.Name));
                }
            }
            contentBuilder.AddDropDownListPart(Resources.DatabaseSettingsDefaultDatabasePartName, "defaultDatabase", (IEnumerable <AdmDropDownListItem>)dropDownListItemList, configurationSection.DefaultDatabase);
            contentBuilder.EndPolicy();
            if (configurationSection.ProviderMappings.Count <= 0)
            {
                return;
            }
            contentBuilder.StartCategory(Resources.ProviderMappingsCategoryName);
            foreach (DbProviderMapping providerMapping in configurationSection.ProviderMappings)
            {
                contentBuilder.StartPolicy(string.Format((IFormatProvider)CultureInfo.InvariantCulture, Resources.ProviderMappingPolicyNameTemplate, (object)providerMapping.Name), sectionKey + "\\providerMappings\\" + providerMapping.Name);
                contentBuilder.AddComboBoxPart(Resources.ProviderMappingDatabaseTypePartName, "databaseType", providerMapping.DatabaseType.AssemblyQualifiedName, (int)byte.MaxValue, false, DatabaseSettingsManageabilityProvider.DatabaseTypeNames);
                contentBuilder.EndPolicy();
            }
            contentBuilder.EndCategory();
        }
        /// <summary>
        /// <para>This method supports the Enterprise Library Manageability Extensions infrastructure and is not intended to
        /// be used directly from your code.</para>
        /// Adds the ADM instructions that describe the policies that can be used to override the configuration
        /// information for the Cryptography Application Block.
        /// </summary>
        /// <seealso cref="ConfigurationSectionManageabilityProvider.AddAdministrativeTemplateDirectives(AdmContentBuilder, ConfigurationSection, IConfigurationSource, String)"/>
        protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                                    CryptographySettings configurationSection,
                                                                    IConfigurationSource configurationSource,
                                                                    String sectionKey)
        {
            contentBuilder.StartPolicy(Resources.CryptographySettingsPolicyName, sectionKey);
            {
                contentBuilder.AddDropDownListPartForNamedElementCollection <HashProviderData>(Resources.CryptographySettingsDefaultHashProviderPartName,
                                                                                               DefaultHashProviderPropertyName,
                                                                                               configurationSection.HashProviders,
                                                                                               configurationSection.DefaultHashProviderName,
                                                                                               true);

                contentBuilder.AddDropDownListPartForNamedElementCollection <SymmetricProviderData>(Resources.CryptographySettingsDefaultSymmetricCryptoProviderPartName,
                                                                                                    DefaultSymmetricCryptoProviderPropertyName,
                                                                                                    configurationSection.SymmetricCryptoProviders,
                                                                                                    configurationSection.DefaultSymmetricCryptoProviderName,
                                                                                                    true);
            }
            contentBuilder.EndPolicy();

            AddElementsPolicies <HashProviderData>(contentBuilder,
                                                   configurationSection.HashProviders,
                                                   configurationSource,
                                                   sectionKey + @"\" + HashProvidersKeyName,
                                                   Resources.HashProvidersCategoryName);
            AddElementsPolicies <SymmetricProviderData>(contentBuilder,
                                                        configurationSection.SymmetricCryptoProviders,
                                                        configurationSource,
                                                        sectionKey + @"\" + SymmetricCryptoProvidersKeyName,
                                                        Resources.SymmetricCryptoProvidersCategoryName);
        }
예제 #9
0
        private static void AddTraceSourcePolicy(TraceSourceData traceSourceData,
                                                 String traceSourceName,
                                                 String parentKey,
                                                 AdmContentBuilder contentBuilder,
                                                 LoggingSettings configurationSection)
        {
            String traceSourceKey = parentKey + @"\" + traceSourceName;

            contentBuilder.StartPolicy(String.Format(CultureInfo.InvariantCulture,
                                                     Resources.TraceSourcePolicyNameTemplate,
                                                     traceSourceName),
                                       traceSourceKey);
            {
                contentBuilder.AddDropDownListPartForEnumeration <SourceLevels>(Resources.TraceSourceDefaultLevelPartName,
                                                                                SourceDefaultLevelPropertyName,
                                                                                traceSourceData.DefaultLevel);

                contentBuilder.AddTextPart(Resources.TraceSourceListenersPartName);

                String traceSourceListenersKey = traceSourceKey + @"\" + SourceTraceListenersPropertyName;
                foreach (TraceListenerData traceListener in configurationSection.TraceListeners)
                {
                    contentBuilder.AddCheckboxPart(traceListener.Name,
                                                   traceSourceListenersKey,
                                                   traceListener.Name,
                                                   traceSourceData.TraceListeners.Contains(traceListener.Name),
                                                   true,
                                                   false);
                }
            }
            contentBuilder.EndPolicy();
        }
예제 #10
0
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             TestConfigurationSection configurationSection,
                                                             IConfigurationSource configurationSource,
                                                             string sectionKey)
 {
     throw new Exception("The method or operation is not implemented.");
 }
        protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                                      FlatFileTraceListenerData configurationObject,
                                                                      IConfigurationSource configurationSource,
                                                                      String elementPolicyKeyName)
        {
            contentBuilder.AddEditTextPart(Resources.FlatFileTraceListenerFileNamePartName,
                                           FileNamePropertyName,
                                           configurationObject.FileName,
                                           255,
                                           true);

            contentBuilder.AddEditTextPart(Resources.FlatFileTraceListenerHeaderPartName,
                                           HeaderPropertyName,
                                           configurationObject.Header,
                                           512,
                                           false);

            contentBuilder.AddEditTextPart(Resources.FlatFileTraceListenerFooterPartName,
                                           FooterPropertyName,
                                           configurationObject.Footer,
                                           512,
                                           false);

            AddTraceOptionsPart(contentBuilder, configurationObject.TraceOutputOptions);

            AddFormattersPart(contentBuilder, configurationObject.Formatter, configurationSource);
        }
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               FaultContractExceptionHandlerData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               String elementPolicyKeyName)
 {
     contentBuilder.AddTextPart(String.Format(CultureInfo.CurrentCulture,
                                              Resources.HandlerPartNameTemplate,
                                              configurationObject.Name));
     contentBuilder.AddEditTextPart(Resources.FaultContractExceptionHandlerExceptionMessagePartName,
                                    elementPolicyKeyName,
                                    ExceptionMessagePropertyName,
                                    configurationObject.ExceptionMessage,
                                    512,
                                    true);
     contentBuilder.AddEditTextPart(Resources.FaultContractExceptionHandlerFaultContractTypePartName,
                                    elementPolicyKeyName,
                                    FaultContractTypePropertyName,
                                    configurationObject.FaultContractType,
                                    512,
                                    true);
     contentBuilder.AddEditTextPart(Resources.FaultContractExceptionHandlerAttributesPartName,
                                    elementPolicyKeyName,
                                    AttributesPropertyName,
                                    GenerateAttributesString(configurationObject.Attributes),
                                    1024,
                                    false);
 }
        /// <summary>
        /// Adds the ADM parts that represent the properties of
        /// a specific instance of the configuration element type managed by the receiver.
        /// </summary>
        /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
        /// <param name="configurationObject">The configuration object instance.</param>
        /// <param name="configurationSource">The configuration source from where to get additional configuration
        /// information, if necessary.</param>
        /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
        /// <remarks>
        /// Subclasses that manage custom provider's configuration objects with additional properties may
        /// override this method to add the corresponding parts.
        /// </remarks>
        /// <seealso cref="ConfigurationElementManageabilityProviderBase{T}.AddAdministrativeTemplateDirectives(AdmContentBuilder, T, IConfigurationSource, String)"/>
        protected override void AddElementAdministrativeTemplateParts(
            AdmContentBuilder contentBuilder,
            T configurationObject,
            IConfigurationSource configurationSource,
            string elementPolicyKeyName)
        {
            base.AddElementAdministrativeTemplateParts(contentBuilder,
                                                       configurationObject,
                                                       configurationSource,
                                                       elementPolicyKeyName);

            contentBuilder.AddEditTextPart(Resources.CustomTraceListenerInitializationPartName,
                                           InitDataPropertyName,
                                           configurationObject.InitData,
                                           1024,
                                           false);

            contentBuilder.AddTextPart(Resources.TraceListenerTraceOptionsPartName);

            var traceOptionsKey = elementPolicyKeyName + @"\" + TraceOutputOptionsPropertyName;

            AddCheckboxPartsForFlagsEnumeration <TraceOptions>(contentBuilder, traceOptionsKey, configurationObject.TraceOutputOptions);

            contentBuilder.AddDropDownListPartForEnumeration <SourceLevels>(Resources.TraceListenerFilterPartName,
                                                                            FilterPropertyName,
                                                                            configurationObject.Filter);
        }
        private static void AddSpecialSourcesPolicies(
            AdmContentBuilder contentBuilder,
            String sectionKey,
            LoggingSettings configurationSection)
        {
            String specialTraceSourcesKey = sectionKey + @"\" + SpecialSourcesKeyName;

            contentBuilder.StartCategory(Resources.SpecialSourcesCategoryName);

            AddTraceSourcePolicy(configurationSection.SpecialTraceSources.AllEventsTraceSource,
                                 SpecialSourcesAllEventsKeyName,
                                 specialTraceSourcesKey,
                                 contentBuilder,
                                 configurationSection);

            AddTraceSourcePolicy(configurationSection.SpecialTraceSources.NotProcessedTraceSource,
                                 SpecialSourcesNotProcessedKeyName,
                                 specialTraceSourcesKey,
                                 contentBuilder,
                                 configurationSection);

            AddTraceSourcePolicy(configurationSection.SpecialTraceSources.ErrorsTraceSource,
                                 SpecialSourcesErrorsKeyName,
                                 specialTraceSourcesKey,
                                 contentBuilder,
                                 configurationSection);

            contentBuilder.EndCategory();
        }
예제 #15
0
        protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                                      FormattedEventLogTraceListenerData configurationObject,
                                                                      IConfigurationSource configurationSource,
                                                                      String elementPolicyKeyName)
        {
            contentBuilder.AddEditTextPart(Resources.EventLogTraceListenerSourcePartName,
                                           SourcePropertyName,
                                           configurationObject.Source,
                                           255,
                                           true);

            contentBuilder.AddEditTextPart(Resources.EventLogTraceListenerLogPartName,
                                           LogPropertyName,
                                           configurationObject.Log,
                                           255,
                                           false);

            contentBuilder.AddEditTextPart(Resources.EventLogTraceListenerMachineNamePartName,
                                           MachineNamePropertyName,
                                           configurationObject.MachineName,
                                           255,
                                           false);

            AddTraceOptionsPart(contentBuilder, configurationObject.TraceOutputOptions);

            AddFormattersPart(contentBuilder, configurationObject.Formatter, configurationSource);
        }
 public void StartCategoryWithStartedPolicyThrows()
 {
     AdmContentBuilder builder = new AdmContentBuilder();
     builder.StartCategory("category");
     builder.StartPolicy("name", "key");
     builder.StartCategory("subcategory");
 }
        public void GetContentWithStartedCategoriesThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.GetContent();
        }
        public void CreationFromFreshBuilderReturnsEmptyContent()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            Assert.IsNotNull(builder.GetContent());
            IEnumerator<AdmCategory> categoriesEnumerator = builder.GetContent().Categories.GetEnumerator();
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             SymmetricStorageEncryptionProviderData configurationObject,
                                                             IConfigurationSource configurationSource,
                                                             String elementPolicyKeyName)
 {
     // parts for encryption providers are part of their cache manager's policies
     AddElementAdministrativeTemplateParts(contentBuilder, configurationObject, configurationSource, elementPolicyKeyName);
 }
예제 #20
0
 /// <summary>
 /// Adds the ADM parts that represent the properties of
 /// a specific instance of the configuration element type managed by the receiver.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationObject">The configuration object instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
 /// <remarks>
 /// Subclasses managing objects that must not create a policy will likely need to include the elements' keys when creating the parts.
 /// </remarks>
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               CacheStorageData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               String elementPolicyKeyName)
 {
     // nothing to set for this part
     contentBuilder.AddTextPart(Resources.NullBackingStoreNoSettingsPartName);
 }
 /// <summary>
 /// <para>This method supports the Enterprise Library Manageability Extensions infrastructure and is not intended to
 /// be used directly from your code.</para>
 /// Adds the ADM instructions that describe the policies that can be used to override the configuration
 /// information for the Caching Application Block.
 /// </summary>
 /// <seealso cref="ConfigurationSectionManageabilityProvider.AddAdministrativeTemplateDirectives(AdmContentBuilder, ConfigurationSection, IConfigurationSource, String)"/>
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             CacheManagerSettings configurationSection,
                                                             IConfigurationSource configurationSource,
                                                             String sectionKey)
 {
     AddAdministrativeTemplateDirectivesForSection(contentBuilder, configurationSection, sectionKey);
     AddAdministrativeTemplateDirectivesForCacheManagers(contentBuilder, configurationSection, configurationSource, sectionKey);
 }
 /// <summary>
 /// Adds the ADM parts that represent the properties of
 /// a specific instance of the configuration element type managed by the receiver.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationObject">The configuration object instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
 /// <remarks>
 /// Subclasses managing objects that must not create a policy will likely need to include the elements' keys when creating the parts.
 /// </remarks>
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               LogEnabledFilterData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               String elementPolicyKeyName)
 {
     contentBuilder.AddCheckboxPart(Resources.LogEnabledFilterEnabledPartName,
                                    EnabledPropertyName,
                                    configurationObject.Enabled);
 }
예제 #23
0
 /// <summary>
 /// Adds the ADM parts that represent the properties of
 /// a specific instance of the configuration element type managed by the receiver.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationObject">The configuration object instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
 /// <remarks>
 /// Subclasses managing objects that must not create a policy will likely need to include the elements' keys when creating the parts.
 /// </remarks>
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               HashAlgorithmProviderData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               string elementPolicyKeyName)
 {
     contentBuilder.AddCheckboxPart(Resources.HashAlgorithmProviderSaltEnabledPartName,
                                    SaltEnabledPropertyName,
                                    configurationObject.SaltEnabled);
 }
예제 #24
0
 /// <summary>
 /// Adds the ADM parts that represent the properties of
 /// a specific instance of the configuration element type managed by the receiver.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationObject">The configuration object instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
 /// <remarks>
 /// Subclasses managing objects that must not create a policy will likely need to include the elements' keys when creating the parts.
 /// </remarks>
 protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                               DpapiSymmetricCryptoProviderData configurationObject,
                                                               IConfigurationSource configurationSource,
                                                               String elementPolicyKeyName)
 {
     contentBuilder.AddDropDownListPartForEnumeration(Resources.DpapiSymmetricProviderScopePartName,
                                                      ScopePropertyName,
                                                      configurationObject.Scope);
 }
 internal new void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                       ConfigurationElement configurationObject,
                                                       IConfigurationSource configurationSource,
                                                       string parentKey)
 {
     base.AddAdministrativeTemplateDirectives(contentBuilder,
                                              configurationObject,
                                              configurationSource,
                                              parentKey);
 }
예제 #26
0
        /// <summary>
        /// Adds the ADM instructions that describe the policies that can be used to override the properties of
        /// a specific instance of the configuration element type managed by the receiver.
        /// </summary>
        /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
        /// <param name="configurationObject">The configuration object instance.</param>
        /// <param name="configurationSource">The configuration source from where to get additional configuration
        /// information, if necessary.</param>
        /// <param name="parentKey">The key path for which the generated instructions' keys must be subKeys of.</param>
        /// <remarks>
        /// Class <see cref="ConfigurationElementManageabilityProviderBase{T}"/> provides a default implementation for this method that
        /// calls the strongly-typed
        /// <see cref="ConfigurationElementManageabilityProviderBase{T}.AddAdministrativeTemplateDirectives(AdmContentBuilder, T, IConfigurationSource, String)"/>
        /// method.
        /// </remarks>
        public sealed override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                                        ConfigurationElement configurationObject,
                                                                        IConfigurationSource configurationSource,
                                                                        string parentKey)
        {
            T      data = (T)configurationObject;
            String elementPolicyKeyName = parentKey + @"\" + data.Name;

            AddAdministrativeTemplateDirectives(contentBuilder, data, configurationSource, elementPolicyKeyName);
        }
        /// <summary>
        /// Adds the part to edit the policy overrides for the trace options of a trace listener to the content
        /// built by the <paramref name="contentBuilder"/>.
        /// </summary>
        /// <param name="contentBuilder">The builder for the content where the part will be added.</param>
        /// <param name="parentKey"></param>
        /// <param name="traceOutputOptions">The default value for the part.</param>
        protected internal static void AddTraceOptionsPart(AdmContentBuilder contentBuilder,
                                                           string parentKey,
                                                           TraceOptions traceOutputOptions)
        {
            contentBuilder.AddTextPart(Resources.TraceListenerTraceOptionsPartName);

            var traceOptionsKey = parentKey + @"\" + TraceOutputOptionsPropertyName;

            AddCheckboxPartsForFlagsEnumeration <TraceOptions>(contentBuilder, traceOptionsKey, traceOutputOptions);
        }
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             IsolatedStorageCacheStorageData configurationObject,
                                                             IConfigurationSource configurationSource,
                                                             String elementPolicyKeyName)
 {
     AddElementAdministrativeTemplateParts(contentBuilder,
                                           configurationObject,
                                           configurationSource,
                                           elementPolicyKeyName);
 }
예제 #29
0
 public void InvokeAddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                       ConfigurationElement configurationObject,
                                                       IConfigurationSource configurationSource,
                                                       String parentKey)
 {
     this.AddAdministrativeTemplateDirectives(contentBuilder,
                                              configurationObject,
                                              configurationSource,
                                              parentKey);
 }
예제 #30
0
 protected internal override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                                      ConfigurationElement configurationObject,
                                                                      IConfigurationSource configurationSource,
                                                                      String parentKey)
 {
     this.wrappedProvider.AddAdministrativeTemplateDirectives(contentBuilder,
                                                              configurationObject,
                                                              configurationSource,
                                                              parentKey);
 }
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             LoggingExceptionHandlerData configurationObject,
                                                             IConfigurationSource configurationSource,
                                                             String elementPolicyKeyName)
 {
     AddElementAdministrativeTemplateParts(contentBuilder,
                                           configurationObject,
                                           configurationSource,
                                           elementPolicyKeyName);
 }
예제 #32
0
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             CustomCacheStorageData configurationObject,
                                                             IConfigurationSource configurationSource,
                                                             String elementPolicyKeyName)
 {
     // parts for stores are part of their cache manager's policies
     AddElementAdministrativeTemplateParts(contentBuilder,
                                           configurationObject,
                                           configurationSource,
                                           elementPolicyKeyName);
 }
 /// <summary>
 /// Adds the ADM instructions that describe the policies that can be used to override the properties of
 /// a specific instance of the configuration element type managed by the receiver.
 /// </summary>
 /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param>
 /// <param name="configurationObject">The configuration object instance.</param>
 /// <param name="configurationSource">The configuration source from where to get additional configuration
 /// information, if necessary.</param>
 /// <param name="elementPolicyKeyName">The key for the element's policies.</param>
 /// <remarks>
 /// The default implementation for this method creates a policy, using
 /// <see cref="ConfigurationElementManageabilityProviderBase{T}.ElementPolicyNameTemplate"/> to create the policy name and invoking
 /// <see cref="ConfigurationElementManageabilityProviderBase{T}.AddElementAdministrativeTemplateParts(AdmContentBuilder, T, IConfigurationSource, String)"/>
 /// to add the policy parts.
 /// Subclasses managing objects that must not create a policy must override this method to just add the parts.
 /// </remarks>
 protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                             FaultContractExceptionHandlerData configurationObject,
                                                             IConfigurationSource configurationSource,
                                                             String elementPolicyKeyName)
 {
     // directives are parts of the exception type policy
     AddElementAdministrativeTemplateParts(contentBuilder,
                                           configurationObject,
                                           configurationSource,
                                           elementPolicyKeyName);
 }
        public void CanCreateCategory()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            Assert.IsNotNull(content);
            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            Assert.IsTrue(categoriesEnumerator.MoveNext());
            Assert.AreEqual("category", categoriesEnumerator.Current.Name);
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
 public static AdmContent GenerateAdministrativeTemplateContent(IConfigurationSource configurationSource, string applicationName, IDictionary<string, ConfigurationSectionManageabilityProvider> manageabilityProviders)
 {
     AdmContentBuilder contentBuilder = new AdmContentBuilder();
     contentBuilder.StartCategory(applicationName);
     foreach (KeyValuePair<string, ConfigurationSectionManageabilityProvider> pair in manageabilityProviders)
     {
         ConfigurationSection configurationObject = configurationSource.GetSection(pair.Key);
         if (configurationObject != null)
         {
             pair.Value.AddAdministrativeTemplateDirectives(contentBuilder, configurationObject, configurationSource, applicationName);
         }
     }
     contentBuilder.EndCategory();
     return contentBuilder.GetContent();
 }
        public override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder,
                                                                             ConfigurationElement configurationObject,
                                                                             IConfigurationSource configurationSource,
                                                                             String parentKey)
        {
            called = true;
            configurationObjects.Add(configurationObject);

            if (addPolicy)
                contentBuilder.StartPolicy(Policy, "policy");

            if (addPart)
                contentBuilder.AddTextPart(Part);

            if (addPolicy)
                contentBuilder.EndPolicy();
        }
        public void AddEditTextWithInvalidMaxLengthThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddEditTextPart("part", "key", "value", "default", 1100, true);
        }
        public void StartPolicyFailsIfThereAreNoCategories()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartPolicy("name", "key");
        }
        public void CanAddEditTextPartWithKeyName()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddEditTextPart("part", "key", "value", "default", 10, true);
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmEditTextPart)partsEnumerator.Current).PartName);
            Assert.AreEqual("key", ((AdmEditTextPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmEditTextPart)partsEnumerator.Current).ValueName);
            Assert.AreEqual("default", ((AdmEditTextPart)partsEnumerator.Current).DefaultValue);
            Assert.AreEqual(10, ((AdmEditTextPart)partsEnumerator.Current).Maxlen);
            Assert.AreEqual(true, ((AdmEditTextPart)partsEnumerator.Current).Required);
        }
        public void AddComboBoxPartWithInvalidMaxLengthThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddComboBoxPart("part", "key", "value", "default", 1100, true, "sug1", "sug2", "suggestion");
        }
        public void StartPolicyWithInvalidPolicyKeyThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "rkjerlejkre\\fe\"lkfelk*(*\\teflkj");
        }
        public void CanAddDropDownListPartForConfigurationElementsCollectionAllowingNoneAndEmptyDefault()
        {
            NamedElementCollection<NamedConfigurationElement> collection = new NamedElementCollection<NamedConfigurationElement>();
            collection.Add(new NamedConfigurationElement("name1"));
            collection.Add(new NamedConfigurationElement("name2"));
            collection.Add(new NamedConfigurationElement("name3"));

            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddDropDownListPartForNamedElementCollection<NamedConfigurationElement>("part", "value", collection, "", true);
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmDropDownListPart)partsEnumerator.Current).PartName);
            Assert.AreEqual(null, ((AdmDropDownListPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmDropDownListPart)partsEnumerator.Current).ValueName);
            IEnumerator<AdmDropDownListItem> itemsEnumerator = ((AdmDropDownListPart)partsEnumerator.Current).Items.GetEnumerator();
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual(AdmContentBuilder.NoneListItem, itemsEnumerator.Current.Value);
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("name1", itemsEnumerator.Current.Name);
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("name2", itemsEnumerator.Current.Name);
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("name3", itemsEnumerator.Current.Name);
            Assert.IsFalse(itemsEnumerator.MoveNext());
        }
        public void CanAddDropDownListPartWithKeyName()
        {
            List<AdmDropDownListItem> items = new List<AdmDropDownListItem>();
            items.Add(new AdmDropDownListItem("1", "1"));
            items.Add(new AdmDropDownListItem("2", "2"));
            items.Add(new AdmDropDownListItem("3", "3"));

            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddDropDownListPart("part", "key", "value", items, "1");
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmDropDownListPart)partsEnumerator.Current).PartName);
            Assert.AreEqual("key", ((AdmDropDownListPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmDropDownListPart)partsEnumerator.Current).ValueName);
            Assert.AreEqual("1", ((AdmDropDownListPart)partsEnumerator.Current).DefaultValue);
            IEnumerator<AdmDropDownListItem> itemsEnumerator = ((AdmDropDownListPart)partsEnumerator.Current).Items.GetEnumerator();
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("1", itemsEnumerator.Current.Name);
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("2", itemsEnumerator.Current.Name);
            Assert.IsTrue(itemsEnumerator.MoveNext());
            Assert.AreEqual("3", itemsEnumerator.Current.Name);
            Assert.IsFalse(itemsEnumerator.MoveNext());
        }
        public void CanAddCheckboxPartWithValueOnAndOff()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            ;
            builder.AddCheckboxPart("part", "value", true, true, false);
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmCheckboxPart)partsEnumerator.Current).PartName);
            Assert.AreEqual(null, ((AdmCheckboxPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmCheckboxPart)partsEnumerator.Current).ValueName);
            Assert.AreEqual(true, ((AdmCheckboxPart)partsEnumerator.Current).CheckedByDefault);
            Assert.AreEqual(true, ((AdmCheckboxPart)partsEnumerator.Current).ValueForOn);
            Assert.AreEqual(false, ((AdmCheckboxPart)partsEnumerator.Current).ValueForOff);
        }
        public void StartPolicyWithInvalidNameThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("dfhfdas\"fdjd", "key");
        }
        public void AddPartWithoutStartedPolicyThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.AddPart(new AdmTextPart("text"));
        }
        public void EndCategoryWithoutStartThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.EndCategory();
        }
        public void StartPolicyWithLongPolicyKeyThrows()
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

            String keyName = stringBuilder.ToString();
            Assert.IsTrue(keyName.Length > 255);

            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "parent\\" + keyName + "\\child");
        }
        public void AddEditTextWithDefaultValueLongerThanMaxLengthThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddEditTextPart("part", "key", "value", "123456789012345678901", 20, true);
        }
        public void StartPolicyWithEmptyNameThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("", "key");
        }
        public void CanAddTextPart()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddTextPart("part");
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmTextPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmTextPart)partsEnumerator.Current).PartName);
        }
        public void StartPolicyFailsIfThereIsACurrentStartedPolicy()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("name", "key");
            builder.StartPolicy("name", "key");
        }
        public void CanAddDropDownListPartForEnumerationWithKeyName()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddDropDownListPartForEnumeration<UriFormat>("part", "key", "value", UriFormat.UriEscaped);
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmDropDownListPart)partsEnumerator.Current).PartName);
            Assert.AreEqual("key", ((AdmDropDownListPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmDropDownListPart)partsEnumerator.Current).ValueName);
            Assert.AreEqual(UriFormat.UriEscaped.ToString(), ((AdmDropDownListPart)partsEnumerator.Current).DefaultValue);
            Dictionary<String, String> items = new Dictionary<String, String>();
            foreach (AdmDropDownListItem item in ((AdmDropDownListPart)partsEnumerator.Current).Items)
            {
                items.Add(item.Name, item.Value);
            }
            foreach (String name in Enum.GetNames(typeof(UriFormat)))
            {
                Assert.IsTrue(items.ContainsKey(name));
            }
        }
        public void CanCreatePolicyInNestedCategory()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartCategory("subcategory");
            builder.StartPolicy("policy", "key");
            builder.EndPolicy();
            builder.EndCategory();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            Assert.IsNotNull(content);
            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            Assert.IsTrue(categoriesEnumerator.MoveNext());
            Assert.AreEqual("category", categoriesEnumerator.Current.Name);
            IEnumerator<AdmCategory> subCategoriesEnumerator = categoriesEnumerator.Current.Categories.GetEnumerator();
            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            Assert.AreEqual("subcategory", subCategoriesEnumerator.Current.Name);
            IEnumerator<AdmPolicy> policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual("policy", policiesEnumerator.Current.Name);
            Assert.IsFalse(policiesEnumerator.MoveNext());
            Assert.IsFalse(subCategoriesEnumerator.MoveNext());
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
        public void AddCheckBoxWithInvalidValueNameThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            ;
            builder.AddCheckboxPart("policy", "invalid\"value", true, true, false);
        }
        public void StartPolicyWithEmptyPolicyKeyThrows()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "");
        }
        public void AddCheckBoxWithLongValueNameThrows()
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            stringBuilder.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

            String valueName = stringBuilder.ToString();
            Assert.IsTrue(valueName.Length > 255);

            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            ;
            builder.AddCheckboxPart("policy", valueName, true, true, false);
        }
        public void CanAddComboBoxPartWithKeyName()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.AddComboBoxPart("part", "key", "value", "default", 10, true, "sug1", "sug2");
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            categoriesEnumerator.MoveNext();
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            policiesEnumerator.MoveNext();
            IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmComboBoxPart), partsEnumerator.Current.GetType());
            Assert.AreEqual("part", ((AdmComboBoxPart)partsEnumerator.Current).PartName);
            Assert.AreEqual("key", ((AdmComboBoxPart)partsEnumerator.Current).KeyName);
            Assert.AreEqual("value", ((AdmComboBoxPart)partsEnumerator.Current).ValueName);
            Assert.AreEqual("default", ((AdmComboBoxPart)partsEnumerator.Current).DefaultValue);
            //Assert.AreEqual(10, ((AdmComboBoxPart)partsEnumerator.Current).Maxlen);	// because of workaround for GPMC bug
            Assert.AreEqual(true, ((AdmComboBoxPart)partsEnumerator.Current).Required);
            IEnumerator<String> suggestionsEnumerator = ((AdmComboBoxPart)partsEnumerator.Current).Suggestions.GetEnumerator();
            Assert.IsTrue(suggestionsEnumerator.MoveNext());
            Assert.AreEqual("sug1", suggestionsEnumerator.Current);
            Assert.IsTrue(suggestionsEnumerator.MoveNext());
            Assert.AreEqual("sug2", suggestionsEnumerator.Current);
            Assert.IsFalse(suggestionsEnumerator.MoveNext());
        }
        public void CanCreatePolicyInTopLevelCategory()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.StartCategory("category");
            builder.StartPolicy("policy", "key");
            builder.EndPolicy();
            builder.EndCategory();
            AdmContent content = builder.GetContent();

            Assert.IsNotNull(content);
            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            Assert.IsTrue(categoriesEnumerator.MoveNext());
            Assert.AreEqual("category", categoriesEnumerator.Current.Name);
            IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual("policy", policiesEnumerator.Current.Name);
            Assert.AreEqual("key", policiesEnumerator.Current.KeyName);
            Assert.AreEqual(AdmContentBuilder.AvailableValueName, policiesEnumerator.Current.ValueName);
            Assert.IsFalse(policiesEnumerator.MoveNext());
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
        public void EndPolicyFailsIfThereIsNoCurrentStartedPolicy()
        {
            AdmContentBuilder builder = new AdmContentBuilder();

            builder.EndPolicy();
        }