public void Ctor_HandlersAreRegistered() { var handler1 = CreateHandler("/path1/"); var handler2 = CreateHandler("/path2/"); var testSubject = new OwinPipelineProcessor(new[] { handler1, handler2 }, new TestLogger()); testSubject.PathToHandlerMap.Count.Should().Be(2); testSubject.PathToHandlerMap["/path1/"].Should().BeSameAs(handler1); testSubject.PathToHandlerMap["/path2/"].Should().BeSameAs(handler2); }
public async Task ProcessRequest_UnrecognisedPath_Returns404(string requestedPath) { var testLogger = new TestLogger(logToConsole: true); var context = CreateOwinContext(requestedPath); var handler = CreateHandler("/sonarlint/api/handled"); var testSubject = new OwinPipelineProcessor(new[] { handler }, testLogger); await testSubject.ProcessRequest(context.Environment).ConfigureAwait(false); context.Response.StatusCode.Should().Be(404); CheckCorsHeader(context); testLogger.AssertPartialOutputStringExists(requestedPath); }
public async Task ProcessRequest_RecognisedPath_ReturnsStatusSetByHandler() { var testLogger = new TestLogger(logToConsole: true); const int expectedStatusCode = 12345; const string handledRequestPath = "/sonarlint/api/handled"; var context = CreateOwinContext(handledRequestPath); var handler = CreateHandler(handledRequestPath, expectedStatusCode); var testSubject = new OwinPipelineProcessor(new[] { handler }, testLogger); await testSubject.ProcessRequest(context.Environment).ConfigureAwait(false); context.Response.StatusCode.Should().Be(expectedStatusCode); CheckCorsHeader(context); testLogger.AssertPartialOutputStringExists(handledRequestPath); }
public void ProcessRequest_ExceptionInHandler_IsLoggedAndRethrown() { var testLogger = new TestLogger(logToConsole: true); const string handledRequestPath = "/path"; var context = CreateOwinContext(handledRequestPath); const string expectedErrorMessage = "exception thrown by test"; var handler = CreateHandler(handledRequestPath, processOp: () => throw new IndexOutOfRangeException(expectedErrorMessage)); var testSubject = new OwinPipelineProcessor(new[] { handler }, testLogger); Func <Task> act = () => testSubject.ProcessRequest(context.Environment); act.Should().ThrowExactly <IndexOutOfRangeException>().And.Message.Should().Be(expectedErrorMessage); CheckCorsHeader(context); testLogger.AssertPartialOutputStringExists(expectedErrorMessage); }