using AspNetCoreSdkTests.Templates; using AspNetCoreSdkTests.Util; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Runtime.InteropServices; namespace AspNetCoreSdkTests { [TestFixture] public class TemplateTests { [Test] [TestCaseSource(nameof(RestoreData))] public void Restore(Template template) { CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterRestore, template.ObjFilesAfterRestore); } [Test] [TestCaseSource(nameof(BuildData))] public void Build(Template template) { CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterBuild, template.ObjFilesAfterBuild); CollectionAssert.AreEquivalent(template.ExpectedBinFilesAfterBuild, template.BinFilesAfterBuild); } [Test] [TestCaseSource(nameof(PublishData))] public void Publish(Template template) { CollectionAssert.AreEquivalent(template.ExpectedFilesAfterPublish, template.FilesAfterPublish); } [Test] [TestCaseSource(nameof(RunData))] public void Run(Template template) { var statusCode = template.HttpResponseAfterRun.StatusCode; Assert.AreEqual(HttpStatusCode.OK, statusCode, GetMessage(statusCode, template.ServerOutputAfterRun, template.ServerErrorAfterRun)); statusCode = template.HttpsResponseAfterRun.StatusCode; Assert.AreEqual(HttpStatusCode.OK, statusCode, GetMessage(statusCode, template.ServerOutputAfterRun, template.ServerErrorAfterRun)); } [NonParallelizable] [Test] [TestCaseSource(nameof(RunNonParallelizableData))] public void RunNonParallelizable(Template template) { Run(template); } [Test] [TestCaseSource(nameof(ExecData))] public void Exec(Template template) { var statusCode = template.HttpResponseAfterExec.StatusCode; Assert.AreEqual(HttpStatusCode.OK, statusCode, GetMessage(statusCode, template.ServerOutputAfterExec, template.ServerErrorAfterExec)); statusCode = template.HttpsResponseAfterExec.StatusCode; Assert.AreEqual(HttpStatusCode.OK, statusCode, GetMessage(statusCode, template.ServerOutputAfterExec, template.ServerErrorAfterExec)); } private static string GetMessage(HttpStatusCode statusCode, string serverOutput, string serverError) { return String.Join(Environment.NewLine, $"StatusCode: {statusCode}", string.Empty, "ServerOutput", "------------", serverOutput, string.Empty, "ServerError", "------------", serverError); } private static IEnumerable