aspnetcore/AspNetCoreSdkTests/TemplateTests.cs

95 lines
3.1 KiB
C#

using AspNetCoreSdkTests.Templates;
using AspNetCoreSdkTests.Util;
using NUnit.Framework;
using System;
using System.Net;
using System.Net.Http;
using System.Threading;
namespace AspNetCoreSdkTests
{
[TestFixture]
public class TemplateTests
{
private static readonly TimeSpan _sleepBetweenHttpRequests = TimeSpan.FromMilliseconds(100);
private static readonly HttpClient _httpClient = new HttpClient(new HttpClientHandler()
{
// Allow self-signed certs
ServerCertificateCustomValidationCallback = (m, c, ch, p) => true
});
[Test]
[TestCaseSource(typeof(TemplateData), nameof(TemplateData.Current))]
public void Restore(Template template, NuGetConfig nuGetConfig)
{
using (var context = new DotNetContext())
{
context.New(template);
context.Restore(nuGetConfig);
CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterRestore, context.GetObjFiles());
}
}
[Test]
[TestCaseSource(typeof(TemplateData), nameof(TemplateData.Current))]
public void Build(Template template, NuGetConfig nuGetConfig)
{
using (var context = new DotNetContext())
{
context.New(template);
context.Restore(nuGetConfig);
context.Build();
CollectionAssert.AreEquivalent(template.ExpectedObjFilesAfterBuild, context.GetObjFiles());
CollectionAssert.AreEquivalent(template.ExpectedBinFilesAfterBuild, context.GetBinFiles());
}
}
[Test]
[TestCaseSource(typeof(TemplateData), nameof(TemplateData.CurrentWebApplications))]
public void Run(Template template, NuGetConfig nuGetConfig)
{
using (var context = new DotNetContext())
{
context.New(template);
context.Restore(nuGetConfig);
var (httpUrl, httpsUrl) = context.Run();
Assert.AreEqual(HttpStatusCode.OK, GetAsync(new Uri(new Uri(httpUrl), template.RelativeUrl)).StatusCode);
Assert.AreEqual(HttpStatusCode.OK, GetAsync(new Uri(new Uri(httpsUrl), template.RelativeUrl)).StatusCode);
}
}
[Test]
[TestCaseSource(typeof(TemplateData), nameof(TemplateData.Current))]
public void Publish(Template template, NuGetConfig nuGetConfig)
{
using (var context = new DotNetContext())
{
context.New(template);
context.Restore(nuGetConfig);
context.Publish();
CollectionAssert.AreEquivalent(template.ExpectedFilesAfterPublish, context.GetPublishFiles());
}
}
private HttpResponseMessage GetAsync(Uri requestUri)
{
while (true)
{
try
{
return _httpClient.GetAsync(requestUri).Result;
}
catch
{
Thread.Sleep(_sleepBetweenHttpRequests);
}
}
}
}
}