bug rename seance

This commit is contained in:
Paul Schneider 2019-01-01 20:14:34 +00:00
commit 2def20d16f
384 changed files with 686 additions and 570 deletions

View file

@ -0,0 +1,35 @@
using Xunit;
using Xunit.Abstractions;
namespace test.Mandatory
{
[Collection("EMaillingTeststCollection")]
[Trait("regres", "no")]
[Trait("dev", "wip")]
public class Database: IClassFixture<ServerSideFixture>
{
ServerSideFixture _serverFixture;
ITestOutputHelper output;
public Database(ServerSideFixture serverFixture, ITestOutputHelper output)
{
this.output = output;
_serverFixture = serverFixture;
output.WriteLine($"Startup.TestDbSettings.Database was {Startup.TestDbSettings.Database}");
}
/// <summary>
/// Assuming we're using an account that may create databases,
/// Install all our migrations in a fresh new database.
/// </summary>
[Fact]
public void InstallFromScratchUsingPoweredNpgsqlUser()
{
if (_serverFixture.DbCreated)
_serverFixture.DropTestDb();
_serverFixture.CreateTestDb();
_serverFixture.UpgradeDb();
}
}
}

View file

@ -0,0 +1,44 @@
using Microsoft.Extensions.Logging;
using Xunit;
using Xunit.Abstractions;
using Yavsc.Abstract.Manage;
namespace test
{
[Collection("EMaillingTeststCollection")]
[Trait("regres", "no")]
public class EMaillingTests : IClassFixture<ServerSideFixture>
{
ServerSideFixture _serverFixture;
ITestOutputHelper output;
ILogger _logger;
public EMaillingTests(ServerSideFixture serverFixture, ITestOutputHelper output)
{
this.output = output;
_serverFixture = serverFixture;
_logger = serverFixture.Logger;
}
[Fact]
public void SendEMailSynchrone()
{
AssertAsync.CompletesIn(2, () =>
{
output.WriteLine("SendEMailSynchrone ...");
EmailSentViewModel mailSentInfo = _serverFixture.MailSender.SendEmailAsync
(_serverFixture.SiteSetup.Owner.Name, _serverFixture.SiteSetup.Owner.EMail, $"monthly email", "test boby monthly email").Result;
if (mailSentInfo==null)
_logger.LogError("No info on sending");
else if (!mailSentInfo.Sent)
_logger.LogError($"{mailSentInfo.ErrorMessage}");
else
_logger.LogInformation($"mailId:{mailSentInfo.MessageId} \nto:{_serverFixture.SiteSetup.Owner.Name}");
Assert.NotNull(mailSentInfo);
output.WriteLine($">>done with {mailSentInfo.EMail} {mailSentInfo.Sent} {mailSentInfo.MessageId} {mailSentInfo.ErrorMessage}");
});
}
}
}

60
src/test/Mandatory/NodeTests.cs Executable file
View file

@ -0,0 +1,60 @@
using System;
using Xunit;
using System.IO;
using System.Diagnostics;
namespace test
{
[Trait("regres", "no")]
public class NodeTests
{
[Fact]
void TestNodeJsForAnsitohtml ()
{
var procStart = new ProcessStartInfo("node", "node_modules/ansi-to-html/bin/ansi-to-html");
procStart.UseShellExecute = false;
procStart.RedirectStandardInput = true;
procStart.RedirectStandardOutput = true;
procStart.RedirectStandardError = true;
var proc = Process.Start(procStart);
proc.StandardInput.WriteLine("\x001b[30mblack\x1b[37mwhite");
proc.StandardInput.Close();
while (!proc.StandardOutput.EndOfStream)
{
Console.Write(proc.StandardOutput.ReadToEnd());
}
}
[Fact]
void AnsiToHtml()
{
var procStart = new ProcessStartInfo("ls", "-l --color=always");
procStart.UseShellExecute = false;
procStart.RedirectStandardInput = false;
procStart.RedirectStandardOutput = true;
var proc = Process.Start(procStart);
var encoded = GetStream(proc.StandardOutput);
var reader = new StreamReader(encoded);
var txt = reader.ReadToEnd();
Console.WriteLine(txt);
}
public static Stream GetStream(StreamReader reader)
{
var procStart = new ProcessStartInfo("node", "node_modules/ansi-to-html/bin/ansi-to-html");
procStart.UseShellExecute = false;
procStart.RedirectStandardInput = true;
procStart.RedirectStandardOutput = true;
procStart.RedirectStandardError = true;
var mem = new MemoryStream();
StreamWriter writer = new StreamWriter(mem);
var proc = Process.Start(procStart);
var text = reader.ReadToEnd();
proc.StandardInput.WriteLine(text);
proc.StandardInput.Close();
return proc.StandardOutput.BaseStream;
}
}
}

View file

@ -0,0 +1,167 @@
using System;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Hosting.Internal;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.OptionsModel;
using Yavsc.Lib;
using Yavsc.Services;
using Yavsc;
using Xunit;
using Npgsql;
namespace test
{
[Trait("regres", "no")]
public class ServerSideFixture : IDisposable {
SiteSettings _siteSetup;
ILogger _logger;
IApplication _app;
EMailer _mailer;
ILoggerFactory _loggerFactory;
IEmailSender _mailSender;
public static string ApiKey => "53f4d5da-93a9-4584-82f9-b8fdf243b002" ;
public SiteSettings SiteSetup
{
get
{
return _siteSetup;
}
set
{
_siteSetup = value;
}
}
public IEmailSender MailSender
{
get
{
return _mailSender;
}
set
{
_mailSender = value;
}
}
public IApplication App
{
get
{
return _app;
}
set
{
_app = value;
}
}
internal void UpgradeDb()
{
Microsoft.Data.Entity.Commands.Program.Main(
new string [] { "database", "update" });
}
public ILogger Logger
{
get
{
return _logger;
}
set
{
_logger = value;
}
}
public bool DbCreated { get; private set; }
//
public ServerSideFixture()
{
InitTestHost();
Logger.LogInformation("ServerSideFixture created.");
}
[Fact]
void InitTestHost()
{
var host = new WebHostBuilder();
var hostengnine = host
.UseEnvironment("Development")
.UseServer("test")
.UseStartup<test.Startup>()
.Build();
App = hostengnine.Start();
_mailer = App.Services.GetService(typeof(EMailer)) as EMailer;
_loggerFactory = App.Services.GetService(typeof(ILoggerFactory)) as ILoggerFactory;
Logger = _loggerFactory.CreateLogger<ServerSideFixture> ();
var siteSetup = App.Services.GetService(typeof(IOptions<SiteSettings>)) as IOptions<SiteSettings>;
SiteSetup = siteSetup.Value;
MailSender = App.Services.GetService(typeof(IEmailSender)) as IEmailSender;
CheckDbExistence();
if (!DbCreated)
CreateTestDb();
}
public void CreateTestDb()
{
if (!DbCreated)
using (
NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString))
{
cx.Open();
var command = cx.CreateCommand();
command.CommandText = $"create database \"{Startup.TestDbSettings.Database}\";";
command.ExecuteNonQuery();
_logger.LogInformation($"database created.");
cx.Close();
}
}
public void CheckDbExistence()
{
using (
NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString))
{
cx.Open();
var command = cx.CreateCommand();
command.CommandText = $"SELECT 1 FROM pg_database WHERE datname='{Startup.TestDbSettings.Database}';";
DbCreated = (command.ExecuteScalar()!=null);
_logger.LogInformation($"DbCreated:{DbCreated}");
cx.Close();
}
}
public void DropTestDb()
{
if (DbCreated)
using (
NpgsqlConnection cx = new NpgsqlConnection(Startup.DevDbSettings.ConnectionString))
{
cx.Open();
var command = cx.CreateCommand();
command.CommandText = $"drop database \"{Startup.TestDbSettings.Database}\";";
command.ExecuteNonQuery();
_logger.LogInformation($"database dropped");
cx.Close();
}
}
public void Dispose()
{
Logger.LogInformation("Disposing");
}
}
}

View file

@ -0,0 +1,220 @@
using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Builder.Internal;
using Microsoft.AspNet.Razor;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.PlatformAbstractions;
using Xunit;
using Yavsc;
using Yavsc.Models;
using Yavsc.Services;
using System.Runtime.Versioning;
using Microsoft.AspNet.Mvc.Razor;
using System.Diagnostics;
using Microsoft.Dnx.Compilation.CSharp;
using Microsoft.Extensions.OptionsModel;
using Yavsc.Helpers;
using Microsoft.Data.Entity;
using Xunit.Abstractions;
using System.IO;
using System.Linq;
using Yavsc.Server.Models.IT.SourceCode;
namespace test
{
[Collection("Yavsc mandatory success story")]
[Trait("regres", "no")]
public class YavscMandatory: BaseTestContext, IClassFixture<ServerSideFixture>
{
public YavscMandatory(ITestOutputHelper output, ServerSideFixture fixture) : base (output, fixture)
{
}
[Fact]
public void GitClone()
{
var dbc = _serverFixture.App.Services.GetService(typeof(ApplicationDbContext)) as ApplicationDbContext;
var firstProject = dbc.Projects.Include(p=>p.Repository).FirstOrDefault();
Assert.NotNull (firstProject);
var clone = new GitClone(_serverFixture.SiteSetup.GitRepository);
clone.Launch(firstProject);
}
[Fact]
void AnsiToHtml()
{
var procStart = new ProcessStartInfo("ls", "-l --color=always");
procStart.UseShellExecute = false;
procStart.RedirectStandardInput = false;
procStart.RedirectStandardOutput = true;
var proc = Process.Start(procStart);
var encoded = AnsiToHtmlEncoder.GetStream(proc.StandardOutput);
using (var reader = new StreamReader(encoded))
{
var txt = reader.ReadToEnd();
_output.WriteLine(txt);
}
}
[Fact]
public void ApplicationDbContextExists()
{
var dbc = new ApplicationDbContext();
Assert.NotNull(dbc.GCMDevices);
}
[Fact]
public void MvcRazorHostAndParser()
{
string cache = System.IO.Directory.GetCurrentDirectory();
MvcRazorHost host = new MvcRazorHost(cache);
var parser = host.CreateMarkupParser();
}
[Fact]
void HaveDependecyInjection()
{
var services = new ServiceCollection();
}
[Fact]
void HaveHost()
{
beforeCompileContext = CreateYavscCompilationContext();
}
[Fact]
public void AConfigurationRoot()
{
var builder = new ConfigurationBuilder();
builder.AddJsonFile( "appsettings.json", false);
builder.AddJsonFile( "appsettings.Development.json", true);
configurationRoot = builder.Build();
}
internal static BeforeCompileContext CreateYavscCompilationContext()
{
var projectContext = new ProjectContext();
projectContext.Name = "Yavsc";
projectContext.ProjectDirectory = "/home/paul/workspace/yavsc/Yavsc";
projectContext.ProjectFilePath = "/home/paul/workspace/yavsc/Yavsc/project.json";
projectContext.TargetFramework = new FrameworkName("DNX", new Version(4, 5, 1));
projectContext.Configuration = "Development";
return new BeforeCompileContext(
null, projectContext, () => null, () => null, () => null);
}
internal static IConfigurationRoot CreateConfiguration(string prjDir)
{
var builder = new ConfigurationBuilder();
builder.AddJsonFile(Path.Combine(prjDir, "appsettings.json"), true);
builder.AddJsonFile(Path.Combine(prjDir, "appsettings.Development.json"), true);
return builder.Build();
}
internal static void ConfigureServices
(ServiceCollection serviceCollection,
string prjDir,
out IConfigurationRoot configuration,
out IServiceProvider provider)
{
configuration = CreateConfiguration(prjDir);
serviceCollection.AddOptions();
var siteSettingsconf = configuration.GetSection("Site");
serviceCollection.Configure<SiteSettings>(siteSettingsconf);
var smtpSettingsconf = configuration.GetSection("Smtp");
serviceCollection.Configure<SmtpSettings>(smtpSettingsconf);
var locOptions = configuration.GetSection("Localization");
serviceCollection.Configure<LocalizationOptions>(locOptions);
serviceCollection.AddSingleton(typeof(ILoggerFactory), typeof(LoggerFactory));
serviceCollection.AddTransient(typeof(IEmailSender), typeof(MailSender));
serviceCollection.AddTransient(typeof(RazorEngineHost));
serviceCollection.AddTransient((s) => new RazorTemplateEngine(s.GetService<RazorEngineHost>()));
serviceCollection.AddLogging();
serviceCollection.AddMvcCore();
serviceCollection.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
var connectionString = configuration["Data:DefaultConnection:ConnectionString"];
AppDomain.CurrentDomain.SetData("YAVSC_DB_CONNECTION", connectionString);
serviceCollection.AddEntityFramework()
.AddNpgsql()
.AddDbContext<ApplicationDbContext>(
db => db.UseNpgsql(connectionString)
);
provider = serviceCollection.BuildServiceProvider();
}
[Fact]
public void ARequestAppDelegate()
{
var services = new ServiceCollection();
services.AddTransient<IRuntimeEnvironment>(
svs => PlatformServices.Default.Runtime
);
HaveHost();
var prjDir = this.beforeCompileContext.ProjectContext.ProjectDirectory;
ConfigureServices(services, prjDir, out configurationRoot, out serviceProvider);
IApplicationBuilder app = new ApplicationBuilder(serviceProvider);
var rtd = app.Build();
}
[Fact]
public void MessageSenderFromLib()
{
ARequestAppDelegate();
ILoggerFactory factory = ActivatorUtilities.GetServiceOrCreateInstance<ILoggerFactory>(serviceProvider);
var dbc = new ApplicationDbContext();
IOptions<SiteSettings> siteOptions =
ActivatorUtilities.GetServiceOrCreateInstance<IOptions<SiteSettings>>(serviceProvider);
;
IOptions<SmtpSettings> smtpOptions = ActivatorUtilities.GetServiceOrCreateInstance<IOptions<SmtpSettings>>(serviceProvider);
;
IOptions<GoogleAuthSettings> googleOptions = ActivatorUtilities.GetServiceOrCreateInstance<IOptions<GoogleAuthSettings>>(serviceProvider);
;
IEmailSender eSender = new MailSender
(factory, siteOptions, smtpOptions, googleOptions);
}
[Fact]
public void InitApplicationBuilder()
{
var services = new ServiceCollection();
services.AddTransient<IRuntimeEnvironment>(
svs => PlatformServices.Default.Runtime
);
beforeCompileContext = YavscMandatory.CreateYavscCompilationContext();
var prjDir = beforeCompileContext.ProjectContext.ProjectDirectory;
YavscMandatory.ConfigureServices(services, prjDir, out configuration, out provider);
IApplicationBuilder app = new ApplicationBuilder(provider);
app.UseMvc();
var rtd = app.Build();
IOptions<LocalizationOptions> localOptions = ActivatorUtilities.GetServiceOrCreateInstance<IOptions<LocalizationOptions>>(provider); ;
}
}
}