// Copyright © WireMock.Net using Microsoft.AspNetCore.Http; using Moq; using WireMock.Logging; using WireMock.Owin; using WireMock.Owin.Mappers; namespace WireMock.Net.Tests.Owin; public class GlobalExceptionMiddlewareTests { private readonly Mock _optionsMock; private readonly Mock _responseMapperMock; private readonly GlobalExceptionMiddleware _sut; public GlobalExceptionMiddlewareTests() { _optionsMock = new Mock(); _optionsMock.SetupGet(o => o.Logger).Returns(Mock.Of()); _responseMapperMock = new Mock(); _responseMapperMock.Setup(m => m.MapAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); _sut = new GlobalExceptionMiddleware(_ => Task.CompletedTask, _optionsMock.Object, _responseMapperMock.Object); } [Fact] public void GlobalExceptionMiddleware_Invoke_ValidNext_ShouldNotThrow() { // Act _sut.Invoke(Mock.Of()); } [Fact] public void GlobalExceptionMiddleware_Invoke_InvalidNext_ShouldCallResponseMapperWith500() { // Arrange var sut = new GlobalExceptionMiddleware(_ => throw new ArgumentException(), _optionsMock.Object, _responseMapperMock.Object); // Act sut.Invoke(Mock.Of()); // Verify _responseMapperMock.Verify(m => m.MapAsync(It.IsAny(), It.IsAny()), Times.Once); _responseMapperMock.VerifyNoOtherCalls(); } }