public async Task ClientIdIsNull_BuildsWorkContext() { string un = "user-name"; var expRoles = new[] { "role1", "role2", "role3" }; var logger = new Mock <ILogger <WorkContextMiddleware> >(); var i = 0; RequestDelegate n = c => { i++; return(Task.CompletedTask); }; var wcm = new WorkContextMiddleware(n, logger.Object); var claims = new[] { new Claim(ClaimTypes.NameIdentifier, un), new Claim(ClaimTypes.Role, expRoles[0]), new Claim(ClaimTypes.Role, expRoles[1]), new Claim(ClaimTypes.Role, expRoles[2]), }; var hc = new Mock <HttpContext>(); hc.Setup(h => h.User).Returns(new ClaimsPrincipal(new ClaimsIdentity(claims))); var wc = new WorkContext(); await wcm.InvokeAsync(hc.Object, wc); wc.CurrentClientId.ShouldBe(un); wc.CurrentRoles.Count().ShouldBe(expRoles.Length); wc.CurrentRoles.ShouldAllBe(e => expRoles.Contains(e)); i.ShouldBe(1); }
public async Task UserIdIsNull_ReturnUnauthroized() { var logger = new Mock <ILogger <WorkContextMiddleware> >(); var ecr = new EntityConfigRecord { EndpointSettings = new EndpointSettings { Route = "/some-resource", GetSettings = new EndpointMethodSettings { Disabled = true }, PutSettings = new EndpointMethodSettings { Disabled = true }, }, Type = typeof(string), }; var entityConfigRecords = new[] { ecr }; var wcm = new WorkContextMiddleware(null, entityConfigRecords, logger.Object); var user = new Mock <ClaimsPrincipal>(); user.Setup(u => u.Claims).Returns(new Claim[] { }); var ctx = new Mock <HttpContext>(); ctx.SetupGet(r => r.Request.Headers).Returns(new HeaderDictionary()); var res = new Mock <HttpResponse>(); ctx.Setup(h => h.User).Returns(user.Object); ctx.Setup(h => h.Response).Returns(res.Object); var wc = new WorkContext(); await wcm.InvokeAsync(ctx.Object, wc); res.VerifySet(r => r.StatusCode = StatusCodes.Status401Unauthorized, Times.Once); }
public async Task ParseRequestInfoAndMoveToNext() { int i = 0, expI = 15; string expUserId = "user-id", route = "/some-resource/part2/", expRequesteeId = "123", expPath = $"{route}/__public/{expRequesteeId}", expMethod = "get"; var ecr = new EntityConfigRecord { Name = "nane", EndpointSettings = new EndpointSettings { Route = route, }, Type = typeof(string), }; var entityConfigRecords = new[] { ecr }; RequestDelegate reqDel = hc => { i = expI; return(Task.CompletedTask); }; var logger = new Mock <ILogger <WorkContextMiddleware> >(); var user = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, expUserId) })); var ctx = new Mock <HttpContext>(); var req = new Mock <HttpRequest>(); req.Setup(r => r.Path).Returns(new PathString(expPath)); req.Setup(r => r.Method).Returns(expMethod); req.SetupGet(r => r.Headers).Returns(new HeaderDictionary()); var response = new Mock <HttpResponse>(); ctx.Setup(h => h.User).Returns(user); ctx.Setup(h => h.Request).Returns(req.Object); ctx.Setup(h => h.Response).Returns(response.Object); var wc = new WorkContext(); var wcm = new WorkContextMiddleware(reqDel, entityConfigRecords, logger.Object); await wcm.InvokeAsync(ctx.Object, wc); i.ShouldBe(expI); wc.CurrentEntityConfigRecord.ShouldBe(ecr); wc.RequestInfo.Path.ShouldBe(expPath); wc.RequestInfo.Method.ShouldBe(expMethod); wc.RequestInfo.RequesteeId.ShouldBe(expRequesteeId); }
public async Task ClientIdIsNull_ReturnUnauthroized() { var logger = new Mock <ILogger <WorkContextMiddleware> >(); var wcm = new WorkContextMiddleware(null, logger.Object); var user = new Mock <ClaimsPrincipal>(); user.Setup(u => u.Claims).Returns(new Claim[] { }); var hc = new Mock <HttpContext>(); var hr = new Mock <HttpResponse>(); hc.Setup(h => h.User).Returns(user.Object); hc.Setup(h => h.Response).Returns(hr.Object); await wcm.InvokeAsync(hc.Object, null); hr.VerifySet(r => r.StatusCode = StatusCodes.Status401Unauthorized, Times.Once); }