private bool OverrideWithGroupPoliciesForDbProviderMapping(DbProviderMapping providerMapping,
                                                                   bool readGroupPolicies, IRegistryKey machineKey, IRegistryKey userKey)
        {
            if (readGroupPolicies)
            {
                IRegistryKey policyKey = machineKey ?? userKey;
                if (policyKey != null)
                {
                    if (policyKey.IsPolicyKey && !policyKey.GetBoolValue(PolicyValueName).Value)
                    {
                        return(false);
                    }
                    try
                    {
                        Type databaseTypeOverride = policyKey.GetTypeValue(DatabaseTypePropertyName);

                        providerMapping.DatabaseType = databaseTypeOverride;
                    }
                    catch (RegistryAccessException ex)
                    {
                        LogExceptionWhileOverriding(ex);
                    }
                }
            }

            return(true);
        }
Example #2
0
        private void InitDictionaryConfigurationSource()
        {
            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();

            if (Connections != null)
            {
                ConnectionStringsSection section = new ConnectionStringsSection();
                foreach (Connection conn in Connections)
                {
                    section.ConnectionStrings.Add(new ConnectionStringSettings(conn.Name, conn.ConnectionString, conn.ProviderName));
                }
                configurationSource.Add("connectionStrings", section);
            }

            if (Providers != null)
            {
                DatabaseSettings settings = new DatabaseSettings();
                foreach (Provider provider in Providers)
                {
                    DbProviderMapping providerMapping = new DbProviderMapping(provider.Name, provider.DatabaseType);
                    settings.ProviderMappings.Add(providerMapping);
                }
                configurationSource.Add(DatabaseSettings.SectionName, settings);
            }

            DictionaryConfigurationSource = configurationSource;
        }
        public void ProviderMappingWithDisabledPolicyIsNotRemovedIfGroupPoliciesAreDisabled()
        {
            DbProviderMapping providerMapping1 = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping1);
            DbProviderMapping providerMapping2 = new DbProviderMapping("provider2", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping2);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);

            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMapping1MachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMapping1MachineKey);
            providerMapping1MachineKey.AddBooleanValue(AdmContentBuilder.AvailableValueName, false);
            MockRegistryKey providerMapping2MachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider2",
                                                 providerMapping2MachineKey);
            providerMapping2MachineKey.AddBooleanValue(AdmContentBuilder.AvailableValueName, true);

            provider.OverrideWithGroupPoliciesAndGenerateWmiObjects(section, false, machineKey, userKey, true, wmiSettings);

            Assert.AreEqual(2, section.ProviderMappings.Count);
            Assert.IsNotNull(section.ProviderMappings.Get("provider1"));
            Assert.IsNotNull(section.ProviderMappings.Get("provider2"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMapping1MachineKey, providerMapping2MachineKey, providerMappingsMachineKey));
        }
        protected override void Initialize()
        {
            DatabaseConfigurationView configurationView = new DatabaseConfigurationView(ConfigurationSource);
            string defaultDatabaseName = configurationView.DefaultName;

            foreach (ConnectionStringSettings connectionStringSettings
                     in configurationView.GetConnectionStringSettingsCollection())
            {
                if (IsValidProviderName(connectionStringSettings.ProviderName))
                {
                    DbProviderMapping mapping
                        = configurationView.GetProviderMapping(
                              connectionStringSettings.Name,
                              connectionStringSettings.ProviderName);
                    Type databaseType = mapping.DatabaseType;
                    this.Context.Policies.Set <IBuildKeyMappingPolicy>(
                        new BuildKeyMappingPolicy(new NamedTypeBuildKey(databaseType, connectionStringSettings.Name)),
                        NamedTypeBuildKey.Make <Database>(connectionStringSettings.Name));
                    if (connectionStringSettings.Name == defaultDatabaseName)
                    {
                        this.Context.Policies.Set <IBuildKeyMappingPolicy>(
                            new BuildKeyMappingPolicy(new NamedTypeBuildKey(databaseType, connectionStringSettings.Name)),
                            NamedTypeBuildKey.Make <Database>());
                    }
                    IContainerPolicyCreator policyCreator = GetContainerPolicyCreator(databaseType, null);
                    policyCreator.CreatePolicies(
                        this.Context.Policies,
                        connectionStringSettings.Name,
                        connectionStringSettings,
                        this.ConfigurationSource);
                }
            }
        }
        public void ProviderMappingWithDisabledPolicyIsRemoved()
        {
            DbProviderMapping providerMapping1 = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping1);
            DbProviderMapping providerMapping2 = new DbProviderMapping("provider2", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping2);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);

            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMapping1MachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMapping1MachineKey);
            providerMapping1MachineKey.AddBooleanValue(DatabaseSettingsManageabilityProvider.PolicyValueName, false);
            MockRegistryKey providerMapping2MachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider2",
                                                 providerMapping2MachineKey);
            providerMapping2MachineKey.AddBooleanValue(DatabaseSettingsManageabilityProvider.PolicyValueName, true);
            providerMapping2MachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                      typeof(GenericDatabase).AssemblyQualifiedName);

            provider.OverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, true, wmiSettings);

            Assert.AreEqual(1, section.ProviderMappings.Count);
            Assert.IsNotNull(section.ProviderMappings.Get("provider2"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMapping1MachineKey, providerMapping2MachineKey, providerMappingsMachineKey));
        }
 private bool OverrideWithGroupPoliciesForDbProviderMapping(
     DbProviderMapping providerMapping,
     bool readGroupPolicies,
     IRegistryKey machineKey,
     IRegistryKey userKey)
 {
     if (readGroupPolicies)
     {
         IRegistryKey registryKey = machineKey ?? userKey;
         if (registryKey != null)
         {
             if (registryKey.IsPolicyKey)
             {
                 if (!registryKey.GetBoolValue("Available").Value)
                 {
                     return(false);
                 }
             }
             try
             {
                 Type typeValue = registryKey.GetTypeValue("databaseType");
                 providerMapping.DatabaseType = typeValue;
             }
             catch (RegistryAccessException ex)
             {
                 this.LogExceptionWhileOverriding((Exception)ex);
             }
         }
     }
     return(true);
 }
        public void CanDeserializeSerializedConfiguration()
        {
            DatabaseSettings settings = new DatabaseSettings();

            DbProviderMapping mappingData1 = new DbProviderMapping(providerName1, typeof(OracleDatabase));
            DbProviderMapping mappingData2 = new DbProviderMapping(providerName2, typeof(SqlDatabase));

            settings.DefaultDatabase = databaseName1;
            settings.ProviderMappings.Add(mappingData1);
            settings.ProviderMappings.Add(mappingData2);

            IDictionary<string, ConfigurationSection> sections = new Dictionary<string, ConfigurationSection>();
            sections[DatabaseSettings.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);

            DatabaseSettings roSettigs = (DatabaseSettings)configurationSource.GetSection(DatabaseSettings.SectionName);

            Assert.IsNotNull(roSettigs);
            Assert.AreEqual(2, roSettigs.ProviderMappings.Count);
            Assert.AreEqual(databaseName1, roSettigs.DefaultDatabase);

            Assert.IsNotNull(roSettigs.ProviderMappings.Get(providerName1));
            Assert.AreSame(typeof(OracleDatabase), roSettigs.ProviderMappings.Get(providerName1).DatabaseType);
            Assert.AreEqual(providerName1, roSettigs.ProviderMappings.Get(providerName1).DbProviderName);
        }
        public static bool SaveChanges(ProviderMappingSetting providerMappingSetting, ConfigurationElement sourceElement)
        {
            DbProviderMapping element = (DbProviderMapping)sourceElement;

            element.DatabaseTypeName = providerMappingSetting.DatabaseType;
            return(true);
        }
        public void CanDeserializeSerializedConfiguration()
        {
            DatabaseSettings settings = new DatabaseSettings();

            DbProviderMapping mappingData1 = new DbProviderMapping(providerName1, typeof(OracleDatabase));
            DbProviderMapping mappingData2 = new DbProviderMapping(providerName2, typeof(SqlDatabase));

            settings.DefaultDatabase = databaseName1;
            settings.ProviderMappings.Add(mappingData1);
            settings.ProviderMappings.Add(mappingData2);

            IDictionary <string, ConfigurationSection> sections = new Dictionary <string, ConfigurationSection>();

            sections[DatabaseSettings.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);

            DatabaseSettings roSettigs = (DatabaseSettings)configurationSource.GetSection(DatabaseSettings.SectionName);

            Assert.IsNotNull(roSettigs);
            Assert.AreEqual(2, roSettigs.ProviderMappings.Count);
            Assert.AreEqual(databaseName1, roSettigs.DefaultDatabase);

            Assert.IsNotNull(roSettigs.ProviderMappings.Get(providerName1));
            Assert.AreSame(typeof(OracleDatabase), roSettigs.ProviderMappings.Get(providerName1).DatabaseType);
            Assert.AreEqual(providerName1, roSettigs.ProviderMappings.Get(providerName1).DbProviderName);
        }
        public void MachineOverrideTakesPrecedenceOverUserOverride()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping);

            MockRegistryKey providerMappingUserKey = new MockRegistryKey(false);

            providerMappingUserKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                  typeof(GenericDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsUserKey = new MockRegistryKey(false);

            providerMappingsUserKey.AddSubKey("provider1",
                                              providerMappingUserKey);
            userKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                              providerMappingsUserKey);

            MockRegistryKey providerMappingMachineKey = new MockRegistryKey(false);

            providerMappingMachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                     typeof(OracleDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMappingMachineKey);
            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);

            provider.OverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, false, wmiSettings);

            Assert.AreSame(typeof(OracleDatabase), providerMapping.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingUserKey, providerMappingsUserKey, providerMappingMachineKey, providerMappingsMachineKey));
        }
Example #11
0
 /// <summary>
 /// Creates the <see cref="ProviderMappingSetting"/> instances that describe the configurationObject.
 /// </summary>
 /// <param name="providerMapping">The configuration object for instances that must be managed.</param>
 /// <param name="wmiSettings">A collection to where the generated WMI objects are to be added.</param>
 public static void GenerateDbProviderMappingWmiObjects(DbProviderMapping providerMapping,
                                                        ICollection <ConfigurationSetting> wmiSettings)
 {
     wmiSettings.Add(
         new ProviderMappingSetting(providerMapping,
                                    providerMapping.DbProviderName,
                                    providerMapping.DatabaseType.AssemblyQualifiedName));
 }
Example #12
0
 public ProviderMappingNode(DbProviderMapping dbProviderMapping)
     : base(dbProviderMapping == null ? "System.Data.SqlClient" : dbProviderMapping.Name)
 {
     if (dbProviderMapping == null)
     {
         throw new ArgumentNullException("dbProviderMapping");
     }
     this.databaseTypeName = dbProviderMapping.DatabaseTypeName;
 }
        public void WillGetGenericMappingIfDatabaseSettingsSectionDoesNotExist()
        {
            DictionaryConfigurationSource source  = new DictionaryConfigurationSource();
            DatabaseConfigurationView     view    = new DatabaseConfigurationView(source);
            DbProviderMapping             mapping = view.GetProviderMapping("ignore", OdbcProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(typeof(GenericDatabase), mapping.DatabaseType);
        }
        /// <summary>
		/// Initialize a new instance of the <see cref="ProviderMappingNode"/> class with a <see cref="DbProviderMapping"/> instance.
        /// </summary>
        /// <param name="dbProviderMapping">A <see cref="DbProviderMapping"/> instance.</param>
		public ProviderMappingNode(DbProviderMapping dbProviderMapping)
			: base(dbProviderMapping == null ? "System.Data.SqlClient" : dbProviderMapping.Name)
        {
			if (dbProviderMapping == null)
            {
				throw new ArgumentNullException("dbProviderMapping");
            }
			this.databaseType = dbProviderMapping.DatabaseType;
        }
        public void ProviderMappingWithoutOverridesIsNotModified()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping);

            provider.OverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, false, wmiSettings);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);
        }
Example #16
0
        public object CreateObject(IBuilderContext context, string name, IConfigurationSource configurationSource, ConfigurationReflectionCache reflectionCache)
        {
            DatabaseConfigurationView configurationView        = new DatabaseConfigurationView(configurationSource);
            ConnectionStringSettings  connectionStringSettings = configurationView.GetConnectionStringSettings(name);
            DbProviderMapping         mapping   = configurationView.GetProviderMapping(name, connectionStringSettings.ProviderName);
            IDatabaseAssembler        assembler = GetAssembler(mapping.DatabaseType, name, reflectionCache);
            Database database = assembler.Assemble(name, connectionStringSettings, configurationSource);

            return(database);
        }
        public void WillGetDefaultMappingIfDatabaseSettingsSectionDoesNotExistForSql()
        {
            DictionaryConfigurationSource source  = new DictionaryConfigurationSource();
            DatabaseConfigurationView     view    = new DatabaseConfigurationView(source);
            DbProviderMapping             mapping = view.GetProviderMapping("ignore", DbProviderMapping.DefaultSqlProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(DbProviderMapping.DefaultSqlProviderName, mapping.DbProviderName);
            Assert.AreEqual(typeof(SqlDatabase), mapping.DatabaseType);
        }
Example #18
0
        public void WillGetGenericMappingIfDatabaseSettingsSectionDoesNotExist()
        {
            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            DatabaseSyntheticConfigSettings settings = new DatabaseSyntheticConfigSettings(source);
            DbProviderMapping mapping = settings.GetProviderMapping(OdbcProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(typeof(GenericDatabase), mapping.DatabaseType);
        }
Example #19
0
            /// <summary />
            public IDatabaseProviderConfiguration WithProviderNamed(string providerName)
            {
                Guard.ArgumentNotNullOrEmpty(providerName, "providerName");

                EnsureDatabaseSettings();
                currentProviderMapping              = new DbProviderMapping();
                currentProviderMapping.Name         = providerName;
                currentProviderMapping.DatabaseType = typeof(GenericDatabase);
                currentDatabaseSection.ProviderMappings.Add(currentProviderMapping);
                return(this);
            }
Example #20
0
        public void WillGetDefaultMappingIfDatabaseSettingsSectionDoesNotExistForSql()
        {
            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            DatabaseSyntheticConfigSettings settings = new DatabaseSyntheticConfigSettings(source);
            DbProviderMapping mapping = settings.GetProviderMapping(DbProviderMapping.DefaultSqlProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(DbProviderMapping.DefaultSqlProviderName, mapping.DbProviderName);
            Assert.AreEqual(typeof(SqlDatabase), mapping.DatabaseType);
        }
        public void WillGetGenericMappingIfProviderTypeIsNotMappedAndDefaultDoesNotExist()
        {
            DatabaseSettings databaseSettings    = new DatabaseSettings();
            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            source.Add(DatabaseSettings.SectionName, databaseSettings);
            DatabaseConfigurationView view    = new DatabaseConfigurationView(source);
            DbProviderMapping         mapping = view.GetProviderMapping("ignore", OdbcProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(typeof(GenericDatabase), mapping.DatabaseType);
        }
Example #22
0
 public IDatabaseProviderConfiguration WithProviderNamed(
     string providerName)
 {
     if (string.IsNullOrEmpty(providerName))
     {
         throw new ArgumentException(Microsoft.Practices.EnterpriseLibrary.Common.Properties.Resources.ExceptionStringNullOrEmpty, nameof(providerName));
     }
     this.EnsureDatabaseSettings();
     this.currentProviderMapping              = new DbProviderMapping();
     this.currentProviderMapping.Name         = providerName;
     this.currentProviderMapping.DatabaseType = typeof(GenericDatabase);
     this.currentDatabaseSection.ProviderMappings.Add(this.currentProviderMapping);
     return((IDatabaseProviderConfiguration)this);
 }
Example #23
0
            /// <summary />
            public IDatabaseProviderConfiguration WithProviderNamed(string providerName)
            {
                if (string.IsNullOrEmpty(providerName))
                {
                    throw new ArgumentException(Properties.Resources.ExceptionStringNullOrEmpty, "providerName");
                }

                EnsureDatabaseSettings();
                currentProviderMapping              = new DbProviderMapping();
                currentProviderMapping.Name         = providerName;
                currentProviderMapping.DatabaseType = typeof(GenericDatabase);
                currentDatabaseSection.ProviderMappings.Add(currentProviderMapping);
                return(this);
            }
Example #24
0
        public void SavesChangesToConfigurationObject()
        {
            DbProviderMapping           sourceElement = new DbProviderMapping("name", typeof(bool));
            List <ConfigurationSetting> settings      = new List <ConfigurationSetting>(1);

            DatabaseSettingsWmiMapper.GenerateDbProviderMappingWmiObjects(sourceElement, settings);
            Assert.AreEqual(1, settings.Count);
            ProviderMappingSetting setting = settings[0] as ProviderMappingSetting;

            Assert.IsNotNull(setting);
            setting.DatabaseType = typeof(int).AssemblyQualifiedName;
            setting.Commit();
            Assert.AreEqual(typeof(int).AssemblyQualifiedName, sourceElement.DatabaseTypeName);
        }
Example #25
0
        public void WillGetDefaultMappingIfProviderTypeIsNotMappedAndDefaultExistsForOracle()
        {
            DatabaseSettings databaseSettings = new DatabaseSettings();

            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            source.Add(DatabaseSettings.SectionName, databaseSettings);

            DatabaseSyntheticConfigSettings settings = new DatabaseSyntheticConfigSettings(source);
            DbProviderMapping mapping = settings.GetProviderMapping(DbProviderMapping.DefaultOracleProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(DbProviderMapping.DefaultOracleProviderName, mapping.DbProviderName);
            Assert.AreEqual(typeof(OracleDatabase), mapping.DatabaseType);
        }
        public void CreateNamedDatabaseInstanceWithDictSource()
        {
            DictionaryConfigurationSource source     = new DictionaryConfigurationSource();
            DatabaseSettings         settings        = new DatabaseSettings();
            ConnectionStringsSection connSection     = GetConnectionStringsSection();
            DbProviderMapping        providerMapping = GetProviderMapping();

            settings.ProviderMappings.Add(providerMapping);
            source.Add("dataConfiguration", settings);
            source.Add("connectionStrings", connSection);
            DatabaseProviderFactory factory = new DatabaseProviderFactory(source);
            Database dbIns = factory.Create(instanceName);

            Assert.IsNotNull(dbIns);
        }
        public void WillGetMappedProviderTypeEvenIfDefaultExists()
        {
            DatabaseSettings databaseSettings = new DatabaseSettings();

            databaseSettings.ProviderMappings.Add(new DbProviderMapping(DbProviderMapping.DefaultSqlProviderName, typeof(GenericDatabase)));
            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            source.Add(DatabaseSettings.SectionName, databaseSettings);
            DatabaseConfigurationView view    = new DatabaseConfigurationView(source);
            DbProviderMapping         mapping = view.GetProviderMapping("ignore", DbProviderMapping.DefaultSqlProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(DbProviderMapping.DefaultSqlProviderName, mapping.DbProviderName);
            Assert.AreEqual(typeof(GenericDatabase), mapping.DatabaseType);
        }
Example #28
0
        public void DatabaseCreatedByProviderFactoryIsASqlCeDatabase()
        {
            DictionaryConfigurationSource source     = new DictionaryConfigurationSource();
            DatabaseSettings         settings        = new DatabaseSettings();
            ConnectionStringsSection connSection     = GetConnectionStringsSection();
            DbProviderMapping        providerMapping = GetProviderMapping();

            settings.ProviderMappings.Add(providerMapping);
            source.Add("dataConfiguration", settings);
            source.Add("connectionStrings", connSection);
            DatabaseProviderFactory factory = new DatabaseProviderFactory(source);
            Database db = factory.Create(instanceName);

            Assert.IsNotNull(db);
            Assert.AreSame(typeof(SqlCeDatabase), db.GetType());
        }
Example #29
0
        public void WillGetMappedProviderType()
        {
            DatabaseSettings databaseSettings = new DatabaseSettings();

            databaseSettings.ProviderMappings.Add(new DbProviderMapping(OdbcProviderName, typeof(GenericDatabase)));

            DictionaryConfigurationSource source = new DictionaryConfigurationSource();

            source.Add(DatabaseSettings.SectionName, databaseSettings);

            DatabaseSyntheticConfigSettings settings = new DatabaseSyntheticConfigSettings(source);
            DbProviderMapping mapping = settings.GetProviderMapping(OdbcProviderName);

            Assert.IsNotNull(mapping);
            Assert.AreEqual(OdbcProviderName, mapping.DbProviderName);
            Assert.AreEqual(typeof(GenericDatabase), mapping.DatabaseType);
        }
        public DbProviderMapping GetProviderMapping(string name, string dbProviderName)
        {
            DatabaseSettings settings = this.DatabaseSettings;

            if (settings != null)
            {
                DbProviderMapping existingMapping = settings.ProviderMappings.Get(dbProviderName);
                if (existingMapping != null)
                {
                    return(existingMapping);
                }
            }
            DbProviderMapping defaultMapping = this.GetDefaultMapping(name, dbProviderName);

            if (defaultMapping != null)
            {
                return(defaultMapping);
            }
            return(this.GetGenericMapping());
        }
Example #31
0
        public void OverrideForMissingProviderIsIgnored()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping);

            MockRegistryKey providerMappingKey = new MockRegistryKey(false);

            providerMappingKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                              typeof(OracleDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsKey = new MockRegistryKey(false);

            providerMappingsKey.AddSubKey("provider2",
                                          providerMappingKey);
            userKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                              providerMappingsKey);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingKey, providerMappingsKey));
        }
        public void DatabaseTypeOverrideWithInvalidTypeNameIsIgnored()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));

            section.ProviderMappings.Add(providerMapping);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);

            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMappingMachineKey = new MockRegistryKey(false);

            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMappingMachineKey);
            providerMappingMachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                     "invalid type name");

            provider.OverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, false, wmiSettings);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingMachineKey, providerMappingsMachineKey));
        }
        public void ProviderMappingWithoutOverridesIsNotModified()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);
        }
        public void OverridesForProviderMappingsAreIndependent()
        {
            DbProviderMapping providerMapping1 = new DbProviderMapping("provider1", typeof(OracleDatabase));
            DbProviderMapping providerMapping2 = new DbProviderMapping("provider2", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping1);
            section.ProviderMappings.Add(providerMapping2);

            MockRegistryKey providerMappingUserKey = new MockRegistryKey(false);
            providerMappingUserKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                  typeof(GenericDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsUserKey = new MockRegistryKey(false);
            providerMappingsUserKey.AddSubKey("provider1",
                                              providerMappingUserKey);
            userKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                              providerMappingsUserKey);

            MockRegistryKey providerMappingMachineKey = new MockRegistryKey(false);
            providerMappingMachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                     typeof(OracleDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider2",
                                                 providerMappingMachineKey);
            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreSame(typeof(GenericDatabase), providerMapping1.DatabaseType);
            Assert.AreSame(typeof(OracleDatabase), providerMapping2.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingUserKey, providerMappingsUserKey, providerMappingMachineKey, providerMappingsMachineKey));
        }
        public void DatabaseTypeOverrideWithInvalidTypeNameIsIgnored()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);
            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMappingMachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMappingMachineKey);
            providerMappingMachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                     "invalid type name");

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingMachineKey, providerMappingsMachineKey));
        }
        public void ProviderMappingWithDisabledPolicyIsRemoved()
        {
            DbProviderMapping providerMapping1 = new DbProviderMapping("provider1", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping1);
            DbProviderMapping providerMapping2 = new DbProviderMapping("provider2", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping2);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);
            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMapping1MachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMapping1MachineKey);
            providerMapping1MachineKey.AddBooleanValue(DatabaseSettingsManageabilityProvider.PolicyValueName, false);
            MockRegistryKey providerMapping2MachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider2",
                                                 providerMapping2MachineKey);
            providerMapping2MachineKey.AddBooleanValue(DatabaseSettingsManageabilityProvider.PolicyValueName, true);
            providerMapping2MachineKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                                      typeof(GenericDatabase).AssemblyQualifiedName);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreEqual(1, section.ProviderMappings.Count);
            Assert.IsNotNull(section.ProviderMappings.Get("provider2"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMapping1MachineKey, providerMapping2MachineKey, providerMappingsMachineKey));
        }
        public void ProviderMappingWithDisabledPolicyIsNotRemovedIfGroupPoliciesAreDisabled()
        {
            DbProviderMapping providerMapping1 = new DbProviderMapping("provider1", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping1);
            DbProviderMapping providerMapping2 = new DbProviderMapping("provider2", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping2);

            MockRegistryKey providerMappingsMachineKey = new MockRegistryKey(false);
            machineKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                                 providerMappingsMachineKey);
            MockRegistryKey providerMapping1MachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider1",
                                                 providerMapping1MachineKey);
            providerMapping1MachineKey.AddBooleanValue(AdmContentBuilder.AvailableValueName, false);
            MockRegistryKey providerMapping2MachineKey = new MockRegistryKey(false);
            providerMappingsMachineKey.AddSubKey("provider2",
                                                 providerMapping2MachineKey);
            providerMapping2MachineKey.AddBooleanValue(AdmContentBuilder.AvailableValueName, true);

            provider.OverrideWithGroupPolicies(section, false, machineKey, userKey);

            Assert.AreEqual(2, section.ProviderMappings.Count);
            Assert.IsNotNull(section.ProviderMappings.Get("provider1"));
            Assert.IsNotNull(section.ProviderMappings.Get("provider2"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMapping1MachineKey, providerMapping2MachineKey, providerMappingsMachineKey));
        }
 static DatabaseWrapperFactory()
 {
     defaultSqlMapping = new DbProviderMapping("System.Data.SqlClient", typeof(SqlDatabase));
     defaultMySqlMapping = new DbProviderMapping("MySql.Data.MySqlClient", typeof(MySqlClientFactory));
     defaultGenericMapping = new DbProviderMapping("generic", typeof(GenericDatabase));
 }
        public void OverrideForMissingProviderIsIgnored()
        {
            DbProviderMapping providerMapping = new DbProviderMapping("provider1", typeof(SqlDatabase));
            section.ProviderMappings.Add(providerMapping);

            MockRegistryKey providerMappingKey = new MockRegistryKey(false);
            providerMappingKey.AddStringValue(DatabaseSettingsManageabilityProvider.DatabaseTypePropertyName,
                                              typeof(OracleDatabase).AssemblyQualifiedName);
            MockRegistryKey providerMappingsKey = new MockRegistryKey(false);
            providerMappingsKey.AddSubKey("provider2",
                                          providerMappingKey);
            userKey.AddSubKey(DatabaseSettingsManageabilityProvider.ProviderMappingsKeyName,
                              providerMappingsKey);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.AreSame(typeof(SqlDatabase), providerMapping.DatabaseType);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(providerMappingKey, providerMappingsKey));
        }