aspnetcore/test/Microsoft.AspNetCore.Owin.T.../OwinExtensionTests.cs

88 lines
3.0 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
namespace Microsoft.AspNetCore.Owin
{
using AppFunc = Func<IDictionary<string, object>, Task>;
using CreateMiddleware = Func<
Func<IDictionary<string, object>, Task>,
Func<IDictionary<string, object>, Task>
>;
using AddMiddleware = Action<Func<
Func<IDictionary<string, object>, Task>,
Func<IDictionary<string, object>, Task>
>>;
public class OwinExtensionTests
{
static AppFunc notFound = env => new Task(() => { env["owin.ResponseStatusCode"] = 404; });
[Fact]
public void OwinConfigureServiceProviderAddsServices()
{
var list = new List<CreateMiddleware>();
AddMiddleware build = list.Add;
IServiceProvider serviceProvider = null;
FakeService fakeService = null;
var builder = build.UseBuilder(applicationBuilder =>
{
serviceProvider = applicationBuilder.ApplicationServices;
applicationBuilder.Run(async context =>
{
fakeService = context.RequestServices.GetService<FakeService>();
});
}, new ServiceCollection().AddSingleton(new FakeService()).BuildServiceProvider());
list.Reverse();
list.Aggregate(notFound, (next, middleware) => middleware(next)).Invoke(new Dictionary<string, object>());
Assert.NotNull(fakeService);
Assert.NotNull(serviceProvider.GetService<FakeService>());
}
[Fact]
public void OwinDefaultNoServices()
{
var list = new List<CreateMiddleware>();
AddMiddleware build = list.Add;
IServiceProvider serviceProvider = null;
FakeService fakeService = null;
bool builderExecuted = false;
bool applicationExecuted = false;
var builder = build.UseBuilder(applicationBuilder =>
{
builderExecuted = true;
serviceProvider = applicationBuilder.ApplicationServices;
applicationBuilder.Run(async context =>
{
applicationExecuted = true;
fakeService = context.RequestServices.GetService<FakeService>();
});
});
list.Reverse();
list.Aggregate(notFound, (next, middleware) => middleware(next)).Invoke(new Dictionary<string, object>());
Assert.True(builderExecuted);
Assert.Null(fakeService);
Assert.True(applicationExecuted);
Assert.Null(serviceProvider);
}
private class FakeService
{
}
}
}