public void OnAuthorization_ShouldFail_When_CommandPublisherIsNull() { // Arrange var serviceProviderMock = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ICommandPublisher)))).Returns(null); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ILoggerFactory)))).Returns(new LoggerFactory()); var httpContextMock = new Mock <HttpContext>(); httpContextMock.Setup(x => x.RequestServices).Returns(serviceProviderMock.Object); // HttpContext isn't virtual; Can't mock AuthrizationFilterContex... var filterContext = new AuthorizationFilterContext( new ActionContext( httpContextMock.Object, new Microsoft.AspNetCore.Routing.RouteData(), new ActionDescriptor() ), new List <IFilterMetadata>() ); var jwtInRole = new JwtInRole("Gebruikert", "Klantje"); // Act jwtInRole.OnAuthorization(filterContext); // Assert serviceProviderMock.VerifyAll(); Assert.IsNotNull(filterContext.Result); Assert.IsInstanceOfType(filterContext.Result, typeof(StatusCodeResult)); Assert.AreEqual((int)HttpStatusCode.Unauthorized, ((StatusCodeResult)filterContext.Result).StatusCode); }
public void OnAuthorization_ShouldSucceed() { // Arrange ValidateCommand resultCommand = null; var commandPublisherMock = new Mock <ICommandPublisher>(MockBehavior.Strict); commandPublisherMock.Setup(x => x.Publish <bool>(It.IsAny <ValidateCommand>())).Returns(Task.FromResult(true)) .Callback <ValidateCommand>(cmd => { resultCommand = cmd; }); var serviceProviderMock = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ICommandPublisher)))).Returns(commandPublisherMock.Object); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ILoggerFactory)))).Returns(new LoggerFactory()); StringValues headerDictionaryResult; var headerDictionaryMock = new Mock <IHeaderDictionary>(MockBehavior.Strict); headerDictionaryMock.Setup(x => x.TryGetValue("Authorization", out headerDictionaryResult)).Returns(true) .Callback(new TryGetValueCallback((string s, out StringValues sv) => sv = new StringValues("Bearer " + jwtStringWithRolesGebruikertAndKlantje))); var httpRequestMock = new Mock <HttpRequest>(); httpRequestMock.Setup(x => x.Headers).Returns(headerDictionaryMock.Object); var httpContextMock = new Mock <HttpContext>(); httpContextMock.Setup(x => x.RequestServices).Returns(serviceProviderMock.Object); httpContextMock.Setup(x => x.Request).Returns(httpRequestMock.Object); // HttpContext isn't virtual; Can't mock AuthrizationFilterContex... var filterContext = new AuthorizationFilterContext( new ActionContext( httpContextMock.Object, new Microsoft.AspNetCore.Routing.RouteData(), new ActionDescriptor() ), new List <IFilterMetadata>() ); var jwtInRole = new JwtInRole("Gebruikert", "Klantje"); // Act jwtInRole.OnAuthorization(filterContext); // Assert commandPublisherMock.VerifyAll(); serviceProviderMock.VerifyAll(); headerDictionaryMock.VerifyAll(); Assert.IsNotNull(resultCommand); Assert.AreEqual(jwtStringWithRolesGebruikertAndKlantje, resultCommand.JwtToken); Assert.AreEqual(NameConstants.AuthenticationServiceValidateCommand, resultCommand.RoutingKey); }
public void OnAuthorization_ShouldFail_When_MultipleAuthorizationHeaders() { // Arrange var commandPublisherMock = new Mock <ICommandPublisher>(MockBehavior.Strict); var serviceProviderMock = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ICommandPublisher)))).Returns(commandPublisherMock.Object); serviceProviderMock.Setup(x => x.GetService(It.Is <Type>(y => y == typeof(ILoggerFactory)))).Returns(new LoggerFactory()); var strings = new string[2]; strings[0] = "Val1"; strings[1] = "Val1"; StringValues headerDictionaryResult; var headerDictionaryMock = new Mock <IHeaderDictionary>(MockBehavior.Strict); headerDictionaryMock.Setup(x => x.TryGetValue("Authorization", out headerDictionaryResult)).Returns(true) .Callback(new TryGetValueCallback((string s, out StringValues sv) => sv = new StringValues(strings))); var httpRequestMock = new Mock <HttpRequest>(); httpRequestMock.Setup(x => x.Headers).Returns(headerDictionaryMock.Object); var httpContextMock = new Mock <HttpContext>(); httpContextMock.Setup(x => x.RequestServices).Returns(serviceProviderMock.Object); httpContextMock.Setup(x => x.Request).Returns(httpRequestMock.Object); // HttpContext isn't virtual; Can't mock AuthrizationFilterContex... var filterContext = new AuthorizationFilterContext( new ActionContext( httpContextMock.Object, new Microsoft.AspNetCore.Routing.RouteData(), new ActionDescriptor() ), new List <IFilterMetadata>() ); var jwtInRole = new JwtInRole("Gebruikert", "Klantje"); // Act jwtInRole.OnAuthorization(filterContext); // Assert commandPublisherMock.VerifyAll(); serviceProviderMock.VerifyAll(); headerDictionaryMock.VerifyAll(); Assert.IsNotNull(filterContext.Result); Assert.IsInstanceOfType(filterContext.Result, typeof(StatusCodeResult)); Assert.AreEqual((int)HttpStatusCode.Unauthorized, ((StatusCodeResult)filterContext.Result).StatusCode); }