private static void CreateHttpControllerTypeResolverTracer(HttpConfiguration configuration, ITraceWriter traceWriter) { DefaultHttpControllerTypeResolver resolver = configuration.Services.GetHttpControllerTypeResolver() as DefaultHttpControllerTypeResolver; if (resolver != null) { IHttpControllerTypeResolver tracer = new DefaultHttpControllerTypeResolverTracer(resolver, traceWriter); configuration.Services.Replace(typeof(IHttpControllerTypeResolver), tracer); } }
public void IsControllerTypePredicateProperty_SameAsInInner() { // Arrange TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act Predicate<Type> innerPredicate = HttpControllerTypeResolver.Object.IsControllerTypePredicate; Predicate<Type> tracerPredicate = tracer.IsControllerTypePredicate; // Assert Assert.NotNull(tracerPredicate); Assert.Same(innerPredicate, tracerPredicate); }
public void IsControllerTypePredicateProperty_RoundTrips() { // Arrange Predicate<Type> expectedPredicate = type => type != null; DefaultHttpControllerTypeResolver resolver = new DefaultHttpControllerTypeResolver(expectedPredicate); TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(resolver, traceWriter); // Act Predicate<Type> predicate = tracer.IsControllerTypePredicate; // Assert Assert.NotNull(predicate); Assert.Same(expectedPredicate, predicate); }
public void Decorator_GetInner_ReturnsOriginal() { // Arrange DefaultHttpControllerTypeResolver expectedResolver = HttpControllerTypeResolver.Object; TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act DefaultHttpControllerTypeResolver resolver = Decorator.GetInner(tracer as DefaultHttpControllerTypeResolver); // Assert Assert.NotNull(resolver); Assert.Same(expectedResolver, resolver); }
public void InnerProperty_ReturnsOriginal() { // Arrange DefaultHttpControllerTypeResolver expectedResolver = HttpControllerTypeResolver.Object; TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act DefaultHttpControllerTypeResolver resolver = tracer.Inner; // Assert Assert.NotNull(resolver); Assert.Same(expectedResolver, resolver); }
public void GetControllerTypes_TracesAsExpected() { // Arrange TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act ICollection<Type> types = tracer.GetControllerTypes(AssembliesResolver.Object); // Assert Assert.NotNull(traceWriter.Traces); Assert.Equal(ExpectedTraces, traceWriter.Traces, new TraceRecordComparer()); }
public void GetControllerTypes_ReturnsExpectedTypes() { // Arrange TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act ICollection<Type> types = tracer.GetControllerTypes(AssembliesResolver.Object); // Assert Assert.NotNull(types); Assert.NotEmpty(types); Assert.Equal(ExpectedTypes, types); }
public void GetControllerTypes_CallsMocks() { // Arrange TestTraceWriter traceWriter = new TestTraceWriter(); DefaultHttpControllerTypeResolverTracer tracer = new DefaultHttpControllerTypeResolverTracer(HttpControllerTypeResolver.Object, traceWriter); // Act tracer.GetControllerTypes(AssembliesResolver.Object); // Assert (particularly important tracer delegates to original DefaultHttpControllerTypeResolver) HttpControllerTypeResolver.Verify( controller => controller.GetControllerTypes(AssembliesResolver.Object), Times.Once()); // Predicate is not called on null entries or internal types in the Type arrays (see TypeIsVisible) HttpControllerTypeResolver.VerifyGet(controller => controller.IsControllerTypePredicate, Times.Exactly(7)); AssembliesResolver.Verify(resolver => resolver.GetAssemblies(), Times.Once()); foreach (Mock<MockableAssembly> mock in Assemblies) { mock.VerifyGet(assembly => assembly.IsDynamic, Times.Once()); mock.Verify(assembly => assembly.GetTypes(), mock.Object.IsDynamic ? Times.Never() : Times.Once()); } }