public void Create_Throws_And_Traces_When_Inner_Throws() { // Arrange Mock <ApiController> mockController = new Mock <ApiController>(); Mock <IHttpControllerActivator> mockActivator = new Mock <IHttpControllerActivator>() { CallBase = true }; InvalidOperationException exception = new InvalidOperationException("test"); mockActivator.Setup(b => b.Create(It.IsAny <HttpRequestMessage>(), It.IsAny <HttpControllerDescriptor>(), It.IsAny <Type>())).Throws(exception); HttpRequestMessage request = new HttpRequestMessage(); TestTraceWriter traceWriter = new TestTraceWriter(); HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(mockActivator.Object, traceWriter); TraceRecord[] expectedTraces = new TraceRecord[] { new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.Begin, Operation = "Create" }, new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Error) { Kind = TraceKind.End, Operation = "Create" } }; // Act & Assert Exception thrown = Assert.Throws <InvalidOperationException>(() => ((IHttpControllerActivator)tracer).Create(request, controllerDescriptor: null, controllerType: mockController.Object.GetType())); // Assert Assert.Equal <TraceRecord>(expectedTraces, traceWriter.Traces, new TraceRecordComparer()); Assert.Same(exception, thrown); Assert.Same(exception, traceWriter.Traces[1].Exception); }
public void Create_Throws_And_Traces_When_Inner_Throws() { // Arrange Mock<ApiController> mockController = new Mock<ApiController>(); Mock<IHttpControllerActivator> mockActivator = new Mock<IHttpControllerActivator>() { CallBase = true }; InvalidOperationException exception = new InvalidOperationException("test"); mockActivator.Setup(b => b.Create(It.IsAny<HttpRequestMessage>(), It.IsAny<HttpControllerDescriptor>(), It.IsAny<Type>())).Throws(exception); HttpRequestMessage request = new HttpRequestMessage(); TestTraceWriter traceWriter = new TestTraceWriter(); HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(mockActivator.Object, traceWriter); TraceRecord[] expectedTraces = new TraceRecord[] { new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.Begin, Operation = "Create" }, new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Error) { Kind = TraceKind.End, Operation = "Create" } }; // Act & Assert Exception thrown = Assert.Throws<InvalidOperationException>(() => ((IHttpControllerActivator)tracer).Create(request, controllerDescriptor: null, controllerType: mockController.Object.GetType())); // Assert Assert.Equal<TraceRecord>(expectedTraces, traceWriter.Traces, new TraceRecordComparer()); Assert.Same(exception, thrown); Assert.Same(exception, traceWriter.Traces[1].Exception); }
public void Create_Invokes_Inner_And_Traces() { // Arrange Mock <ApiController> mockController = new Mock <ApiController>(); Mock <IHttpControllerActivator> mockActivator = new Mock <IHttpControllerActivator>() { CallBase = true }; mockActivator.Setup(b => b.Create(It.IsAny <HttpRequestMessage>(), It.IsAny <HttpControllerDescriptor>(), It.IsAny <Type>())).Returns(mockController.Object); HttpRequestMessage request = new HttpRequestMessage(); TestTraceWriter traceWriter = new TestTraceWriter(); HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(mockActivator.Object, traceWriter); TraceRecord[] expectedTraces = new TraceRecord[] { new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.Begin, Operation = "Create" }, new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.End, Operation = "Create" } }; // Act IHttpController createdController = ((IHttpControllerActivator)tracer).Create(request, controllerDescriptor: null, controllerType: mockController.Object.GetType()); // Assert Assert.Equal <TraceRecord>(expectedTraces, traceWriter.Traces, new TraceRecordComparer()); Assert.IsAssignableFrom <HttpControllerTracer>(createdController); }
public void Decorator_GetInner_On_HttpControllerActivatorTracer_Returns_IHttpControllerActivator() { // Arrange IHttpControllerActivator expectedInner = new Mock<IHttpControllerActivator>().Object; HttpControllerActivatorTracer productUnderTest = new HttpControllerActivatorTracer(expectedInner, new TestTraceWriter()); // Act IHttpControllerActivator actualInner = Decorator.GetInner(productUnderTest as IHttpControllerActivator); // Assert Assert.Same(expectedInner, actualInner); }
public void Inner_Property_On_HttpControllerActivatorTracer_Returns_IHttpControllerActivator() { // Arrange IHttpControllerActivator expectedInner = new Mock <IHttpControllerActivator>().Object; HttpControllerActivatorTracer productUnderTest = new HttpControllerActivatorTracer(expectedInner, new TestTraceWriter()); // Act IHttpControllerActivator actualInner = productUnderTest.Inner; // Assert Assert.Same(expectedInner, actualInner); }
public void Create_Invokes_Inner_And_Traces() { // Arrange Mock<ApiController> mockController = new Mock<ApiController>(); Mock<IHttpControllerActivator> mockActivator = new Mock<IHttpControllerActivator>() { CallBase = true }; mockActivator.Setup(b => b.Create(It.IsAny<HttpRequestMessage>(), It.IsAny<HttpControllerDescriptor>(), It.IsAny<Type>())).Returns(mockController.Object); HttpRequestMessage request = new HttpRequestMessage(); TestTraceWriter traceWriter = new TestTraceWriter(); HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(mockActivator.Object, traceWriter); TraceRecord[] expectedTraces = new TraceRecord[] { new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.Begin, Operation = "Create" }, new TraceRecord(request, TraceCategories.ControllersCategory, TraceLevel.Info) { Kind = TraceKind.End, Operation = "Create" } }; // Act IHttpController createdController = ((IHttpControllerActivator)tracer).Create(request, controllerDescriptor: null, controllerType: mockController.Object.GetType()); // Assert Assert.Equal<TraceRecord>(expectedTraces, traceWriter.Traces, new TraceRecordComparer()); Assert.IsAssignableFrom<HttpControllerTracer>(createdController); }
private static void CreateControllerActivatorTracer(HttpConfiguration configuration, ITraceWriter traceWriter) { IHttpControllerActivator activator = configuration.ServiceResolver.GetService(typeof(IHttpControllerActivator)) as IHttpControllerActivator; HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(activator, traceWriter); configuration.ServiceResolver.SetService(typeof(IHttpControllerActivator), tracer); }
private static void CreateControllerActivatorTracer(HttpConfiguration configuration, ITraceWriter traceWriter) { IHttpControllerActivator activator = configuration.Services.GetHttpControllerActivator(); HttpControllerActivatorTracer tracer = new HttpControllerActivatorTracer(activator, traceWriter); configuration.Services.Replace(typeof(IHttpControllerActivator), tracer); }