public void Update_creates_new_config_file_if_missing() { var configurationFile = Path.GetTempFileName(); File.Delete(configurationFile); var updatedConfigurationFile = new ConfigurationFileUpdater().Update(configurationFile); Assert.True(File.Exists(updatedConfigurationFile)); try { var updatedConfiguration = File.ReadAllText(updatedConfigurationFile); var entityFrameworkAssemblyName = typeof(DbContext).Assembly.GetName(); Assert.Equal( @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""EntityFramework"" culture=""neutral"" publicKeyToken=""b77a5c561934e089"" /> <codeBase version=""" + entityFrameworkAssemblyName.Version + @""" href=""" + entityFrameworkAssemblyName.CodeBase + @""" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", updatedConfiguration); } finally { File.Delete(updatedConfigurationFile); } }
public void Update_creates_new_config_file_if_missing() { var configurationFile = Path.GetTempFileName(); File.Delete(configurationFile); var updatedConfigurationFile = new ConfigurationFileUpdater().Update(configurationFile); Assert.True(File.Exists(updatedConfigurationFile)); try { var updatedConfiguration = File.ReadAllText(updatedConfigurationFile); var entityFrameworkAssemblyName = typeof(DbContext).Assembly().GetName(); Assert.Equal( @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""Z.EntityFramework.Classic"" culture=""neutral"" publicKeyToken=""afc61983f100d280"" /> <codeBase version=""" + entityFrameworkAssemblyName.Version + @""" href=""" + entityFrameworkAssemblyName.CodeBase + @""" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", updatedConfiguration); } finally { File.Delete(updatedConfigurationFile); } }
public void Updated_file_can_resolve_sourceConfigs() { var directory = Path.GetTempFileName(); File.Delete(directory); Directory.CreateDirectory(directory); try { var configPath = Path.Combine(directory, "App.config"); File.WriteAllText( configPath, @"<?xml version='1.0' encoding='utf-8' ?> <configuration> <connectionStrings configSource='connectionStrings.config' /> </configuration>"); File.WriteAllText( Path.Combine(directory, "connectionStrings.config"), @"<?xml version='1.0' encoding='utf-8' ?> <connectionStrings> <add name='MyConnectionString' connectionString='Data Source=.\SQLEXPRESS; Data Source=MyDatabase; Integrated Security=True' providerName='System.Data.SqlClient'/> </connectionStrings>"); var updatedConfigPath = new ConfigurationFileUpdater().Update(configPath); try { var config = ConfigurationManager.OpenMappedExeConfiguration( new ExeConfigurationFileMap { ExeConfigFilename = updatedConfigPath }, ConfigurationUserLevel.None); Assert.True( config.ConnectionStrings.ConnectionStrings.Cast <ConnectionStringSettings>().Any( css => css.Name == "MyConnectionString")); } finally { File.Delete(updatedConfigPath); } } finally { Directory.Delete(directory, true); } }
public void Update_adds_entity_framework_codebase_to_config() { var configurationFile = Path.GetTempFileName(); try { File.WriteAllText( configurationFile, @"<?xml version=""1.0"" encoding=""utf-8"" ?> <configuration> </configuration>"); var updatedConfigurationFile = new ConfigurationFileUpdater().Update(configurationFile); Assert.True(File.Exists(updatedConfigurationFile)); try { var updatedConfiguration = File.ReadAllText(updatedConfigurationFile); var entityFrameworkAssemblyName = typeof(DbContext).Assembly().GetName(); Assert.Equal( @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <runtime> <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1""> <dependentAssembly> <assemblyIdentity name=""EntityFramework"" culture=""neutral"" publicKeyToken=""b77a5c561934e089"" /> <codeBase version=""" + entityFrameworkAssemblyName.Version + @""" href=""" + entityFrameworkAssemblyName.CodeBase + @""" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>", updatedConfiguration); } finally { File.Delete(updatedConfigurationFile); } } finally { File.Delete(configurationFile); } }
public ToolingFacade( string migrationsAssemblyName, string contextAssemblyName, string configurationTypeName, string workingDirectory, string configurationFilePath, string dataDirectory, DbConnectionInfo connectionStringInfo) { Check.NotEmpty(migrationsAssemblyName, "migrationsAssemblyName"); _migrationsAssemblyName = migrationsAssemblyName; _contextAssemblyName = contextAssemblyName; _configurationTypeName = configurationTypeName; _connectionStringInfo = connectionStringInfo; var info = new AppDomainSetup { ShadowCopyFiles = "true" }; if (!string.IsNullOrWhiteSpace(workingDirectory)) { info.ApplicationBase = workingDirectory; } _configurationFile = new ConfigurationFileUpdater().Update(configurationFilePath); info.ConfigurationFile = _configurationFile; var friendlyName = "MigrationsToolingFacade" + Convert.ToBase64String(Guid.NewGuid().ToByteArray()); _appDomain = AppDomain.CreateDomain(friendlyName, null, info); if (!string.IsNullOrWhiteSpace(dataDirectory)) { _appDomain.SetData("DataDirectory", dataDirectory); } }
public void Updated_file_can_resolve_sourceConfigs() { var directory = Path.GetTempFileName(); File.Delete(directory); Directory.CreateDirectory(directory); try { var configPath = Path.Combine(directory, "App.config"); File.WriteAllText( configPath, @"<?xml version='1.0' encoding='utf-8' ?> <configuration> <connectionStrings configSource='connectionStrings.config' /> </configuration>"); File.WriteAllText( Path.Combine(directory, "connectionStrings.config"), @"<?xml version='1.0' encoding='utf-8' ?> <connectionStrings> <add name='MyConnectionString' connectionString='Data Source=.\SQLEXPRESS; Data Source=MyDatabase; Integrated Security=True' providerName='System.Data.SqlClient'/> </connectionStrings>"); var updatedConfigPath = new ConfigurationFileUpdater().Update(configPath); try { var config = ConfigurationManager.OpenMappedExeConfiguration( new ExeConfigurationFileMap { ExeConfigFilename = updatedConfigPath }, ConfigurationUserLevel.None); Assert.True(config.ConnectionStrings.ConnectionStrings.Cast<ConnectionStringSettings>().Any(css => css.Name == "MyConnectionString")); } finally { File.Delete(updatedConfigPath); } } finally { Directory.Delete(directory, true); } }