From 0f56ece955c9cdc93f1a193fb61bdca46ed64254 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sat, 5 Jan 2019 13:28:17 +0000 Subject: [PATCH] fixes nonreg --- src/test/Mandatory/Database.cs | 2 +- src/test/Mandatory/ServerSideFixture.cs | 42 +++++++++++++------- src/test/Mandatory/YavscMandatory.cs | 48 +++++------------------ src/test/Settings/DbConnectionSettings.cs | 26 ++++-------- src/test/Startup.cs | 23 +++++------ 5 files changed, 54 insertions(+), 87 deletions(-) diff --git a/src/test/Mandatory/Database.cs b/src/test/Mandatory/Database.cs index 85b99611..c05a55d2 100644 --- a/src/test/Mandatory/Database.cs +++ b/src/test/Mandatory/Database.cs @@ -15,7 +15,7 @@ namespace test.Mandatory this.output = output; _serverFixture = serverFixture; - output.WriteLine($"Startup.TestDbSettings.Database was {Startup.TestDbSettings.Database}"); + output.WriteLine($"Startup.DbSettings.Testing is {Startup.DbSettings.Testing}"); } /// diff --git a/src/test/Mandatory/ServerSideFixture.cs b/src/test/Mandatory/ServerSideFixture.cs index f6cbf85c..0ca3417a 100644 --- a/src/test/Mandatory/ServerSideFixture.cs +++ b/src/test/Mandatory/ServerSideFixture.cs @@ -1,4 +1,5 @@ using System; +using System.Data.Common; using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Hosting.Internal; using Microsoft.Extensions.Logging; @@ -6,6 +7,7 @@ using Microsoft.Extensions.OptionsModel; using Yavsc.Lib; using Yavsc.Services; using Yavsc; +using Yavsc.Models; using Xunit; using Npgsql; @@ -22,6 +24,7 @@ namespace test public static string ApiKey => "53f4d5da-93a9-4584-82f9-b8fdf243b002" ; + public ApplicationDbContext DbContext { get; private set; } public SiteSettings SiteSetup { get @@ -109,38 +112,49 @@ namespace test var siteSetup = App.Services.GetService(typeof(IOptions)) as IOptions; SiteSetup = siteSetup.Value; MailSender = App.Services.GetService(typeof(IEmailSender)) as IEmailSender; + + var builder = new DbConnectionStringBuilder(); + builder.ConnectionString = Startup.DbSettings.Testing; + Logger.LogInformation("testing database:" +builder["Database"]); + TestingDatabase = (string) builder["Database"]; + CheckDbExistence(); if (!DbCreated) CreateTestDb(); + DbContext = App.Services.GetService(typeof(ApplicationDbContext)) as ApplicationDbContext; + } - public void CreateTestDb() + public string TestingDatabase { get; private set; } + + public void CheckDbExistence() { - if (!DbCreated) using ( - NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString)) + NpgsqlConnection cx = new NpgsqlConnection(Startup.DbSettings.DatabaseCtor)) { cx.Open(); var command = cx.CreateCommand(); - command.CommandText = $"create database \"{Startup.TestDbSettings.Database}\";"; - command.ExecuteNonQuery(); + command.CommandText = $"SELECT 1 FROM pg_database WHERE datname='{TestingDatabase}';"; + DbCreated = (command.ExecuteScalar()!=null); - _logger.LogInformation($"database created."); + _logger.LogInformation($"DbCreated:{DbCreated}"); cx.Close(); } } + /* Needs a connection string parsing */ - public void CheckDbExistence() + public void CreateTestDb() { + if (!DbCreated) using ( - NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString)) + NpgsqlConnection cx = new NpgsqlConnection(Startup.DbSettings.DatabaseCtor)) { cx.Open(); var command = cx.CreateCommand(); - command.CommandText = $"SELECT 1 FROM pg_database WHERE datname='{Startup.TestDbSettings.Database}';"; - DbCreated = (command.ExecuteScalar()!=null); + command.CommandText = $"create database \"{TestingDatabase}\";"; + command.ExecuteNonQuery(); - _logger.LogInformation($"DbCreated:{DbCreated}"); + _logger.LogInformation($"database created."); cx.Close(); } } @@ -148,16 +162,16 @@ namespace test { if (DbCreated) using ( - NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString)) + NpgsqlConnection cx = new NpgsqlConnection(Startup.DbSettings.DatabaseCtor)) { cx.Open(); var command = cx.CreateCommand(); - command.CommandText = $"drop database \"{Startup.TestDbSettings.Database}\";"; + command.CommandText = $"drop database \"{TestingDatabase}\""; command.ExecuteNonQuery(); _logger.LogInformation($"database dropped"); cx.Close(); } - } + } public void Dispose() { Logger.LogInformation("Disposing"); diff --git a/src/test/Mandatory/YavscMandatory.cs b/src/test/Mandatory/YavscMandatory.cs index 4dfebb2a..a02b60d1 100755 --- a/src/test/Mandatory/YavscMandatory.cs +++ b/src/test/Mandatory/YavscMandatory.cs @@ -31,19 +31,21 @@ namespace test [Trait("regres", "no")] public class YavscMandatory: BaseTestContext, IClassFixture { - + + ApplicationDbContext _dbContext; + public YavscMandatory(ITestOutputHelper output, ServerSideFixture fixture) : base (output, fixture) { - + _dbContext = fixture.DbContext; } + [Fact] public void GitClone() { - - var dbc = _serverFixture.App.Services.GetService(typeof(ApplicationDbContext)) as ApplicationDbContext; - - var firstProject = dbc.Projects.Include(p=>p.Repository).FirstOrDefault(); + var firstProject = _dbContext.Projects.Include(p=>p.Repository).FirstOrDefault(); Assert.NotNull (firstProject); + var di = new DirectoryInfo(_serverFixture.SiteSetup.GitRepository); + if (!di.Exists) di.Create(); var clone = new GitClone(_serverFixture.SiteSetup.GitRepository); clone.Launch(firstProject); @@ -65,12 +67,6 @@ namespace test } } - [Fact] - public void ApplicationDbContextExists() - { - var dbc = new ApplicationDbContext(); - Assert.NotNull(dbc.GCMDevices); - } [Fact] public void MvcRazorHostAndParser() @@ -80,12 +76,6 @@ namespace test var parser = host.CreateMarkupParser(); } - [Fact] - void HaveDependecyInjection() - { - var services = new ServiceCollection(); - } - [Fact] void HaveHost() { @@ -149,7 +139,7 @@ namespace test { options.ResourcesPath = "Resources"; }); - var connectionString = configuration["Data:DefaultConnection:ConnectionString"]; + var connectionString = configuration["ConnectionStrings:Default"]; AppDomain.CurrentDomain.SetData("YAVSC_DB_CONNECTION", connectionString); serviceCollection.AddEntityFramework() .AddNpgsql() @@ -178,29 +168,9 @@ namespace test } - - [Fact] - public void MessageSenderFromLib() - { - ARequestAppDelegate(); - ILoggerFactory factory = ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider); - var dbc = new ApplicationDbContext(); - - IOptions siteOptions = - ActivatorUtilities.GetServiceOrCreateInstance>(serviceProvider); - ; - IOptions smtpOptions = ActivatorUtilities.GetServiceOrCreateInstance>(serviceProvider); - ; - IOptions googleOptions = ActivatorUtilities.GetServiceOrCreateInstance>(serviceProvider); - ; - IEmailSender eSender = new MailSender - (factory, siteOptions, smtpOptions, googleOptions); - } - [Fact] public void InitApplicationBuilder() { - var services = new ServiceCollection(); services.AddTransient( diff --git a/src/test/Settings/DbConnectionSettings.cs b/src/test/Settings/DbConnectionSettings.cs index ff09ff4d..b81a7cf0 100644 --- a/src/test/Settings/DbConnectionSettings.cs +++ b/src/test/Settings/DbConnectionSettings.cs @@ -1,23 +1,11 @@ +using System; + namespace test.Settings { - public abstract class DbConnectionSettings - { - public string Database { get; set; } - public string Server { get; set; } - public int Port { get; set; } - public string Username { get; set; } - - public string ConnectionString => $"Database={Database};Server={Server};Port={Port};Username={Username};Password={Password};"; - - public string Password { get; set; } - } - - public class DevConnectionSettings : DbConnectionSettings - { - - } - public class TestConnectionSettings : DbConnectionSettings + public class DbConnectionSettings { - + public string DatabaseCtor { get; set; } + public string Default { get; set; } + public string Testing { get; set; } } -} \ No newline at end of file +} diff --git a/src/test/Startup.cs b/src/test/Startup.cs index c6a28061..96f2b7f9 100644 --- a/src/test/Startup.cs +++ b/src/test/Startup.cs @@ -23,8 +23,7 @@ namespace test public static IConfiguration Configuration { get; set; } public static string HostingFullName { get; private set; } - public static DbConnectionSettings DevDbSettings { get; private set; } - public static DbConnectionSettings TestDbSettings { get; private set; } + public static DbConnectionSettings DbSettings { get; private set; } ILogger logger; public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) @@ -50,11 +49,8 @@ namespace test services.Configure(siteSettingsconf); var smtpSettingsconf = Configuration.GetSection("Smtp"); services.Configure(smtpSettingsconf); - var devCx = Configuration.GetSection("Data:DevConnection"); - services.Configure(devCx); - var testCx = Configuration.GetSection("Data:TestConnection"); - services.Configure(testCx); - + var dbSettingsconf = Configuration.GetSection("ConnectionStrings"); + services.Configure(dbSettingsconf); services.AddInstance(typeof(ILoggerFactory), new LoggerFactory()); services.AddTransient(typeof(IEmailSender), typeof(MailSender)); @@ -70,7 +66,7 @@ namespace test services.AddEntityFramework() .AddNpgsql() .AddDbContext( - db => db.UseNpgsql(Startup.TestDbSettings.ConnectionString) + db => db.UseNpgsql(Startup.DbSettings.Default) ); services.AddTransient(); @@ -79,8 +75,7 @@ namespace test public void Configure (IApplicationBuilder app, IHostingEnvironment env, IOptions siteSettings, - IOptions testCxOptions, - IOptions devCxOptions, + IOptions cxOptions, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); @@ -88,10 +83,10 @@ namespace test logger = loggerFactory.CreateLogger(); logger.LogInformation(env.EnvironmentName); - TestDbSettings = testCxOptions.Value; - DevDbSettings = devCxOptions.Value; - logger.LogInformation($"test db : {TestDbSettings.ConnectionString}"); - AppDomain.CurrentDomain.SetData("YAVSC_DB_CONNECTION", TestDbSettings.ConnectionString); + DbSettings = cxOptions.Value; + logger.LogInformation($"default db : {DbSettings.Default}"); + logger.LogInformation($"test db : {DbSettings.Testing}"); + AppDomain.CurrentDomain.SetData("YAVSC_DB_CONNECTION", DbSettings.Default); var authConf = Configuration.GetSection("Authentication").GetSection("Yavsc"); var clientId = authConf.GetSection("ClientId").Value;