public async Task Can_RoleAccess_To_Api() { using (var ctx = await TestDbContext.Create(nameof(Can_RoleAccess_To_Api))) { var mapper = new MapperConfiguration(cfg => cfg.AddProfile(new MappingProfile())); var api = new ApiResource { Address = "some1", HttpMethod = DotNetAccessControl.domain.enums.HttpMethods.GET, Title = "some1" }; ctx.ApiResources.Add(api); await ctx.SaveChangesAsync(); var handler = new RoleAccessToApiHandler(new GenericRoleToResourceHandler(ctx, mapper.CreateMapper())); var model = new AssignRoleToResourceDto("Role1", api.Id, DotNetAccessControl.domain.enums.Permission.Allow); var result = await handler.Handle(new RoleAccessToApi(model), CancellationToken.None); Assert.True(result); var saved = await ctx.AccessControls.OfType <RoleAccessControl>().SingleAsync(x => x.ResourceId == api.Id); Assert.Equal(model.RoleName, saved.RoleName); } }
public async Task <bool> Handle(AssignRoleToResourceDto request, CancellationToken cancellationToken) { var checkIfExist = await _dbContext.AccessControls.OfType <RoleAccessControl>() .SingleOrDefaultAsync(x => x.ResourceId == request.ResourceId && x.RoleName == request.RoleName); RoleAccessControl entity = checkIfExist == null?_mapper.Map <RoleAccessControl>(request) : _mapper.Map(request, checkIfExist); _dbContext.Entry(entity).State = checkIfExist is null ? EntityState.Added : EntityState.Modified; var effected = await _dbContext.SaveChangesAsync(cancellationToken); return(effected > 0); }
public async Task Can_RoleAccess_To_Menu() { using (var ctx = await TestDbContext.Create(nameof(Can_RoleAccess_To_Menu))) { var mapper = new MapperConfiguration(cfg => cfg.AddProfile(new MappingProfile())); var menu = new MenuResource { Title = "someMenu", Icon = "", Name = "Mn1", Order = 1, }; var page = new PageResource { Link = "http://abc", Name = "p1", Title = "Some", }; menu.Page = page; ctx.MenuResources.Add(menu); ctx.PageResources.Add(page); await ctx.SaveChangesAsync(); Application.Access.GenericRoleToResourceHandler genericRoleToResourceHandler = new Application.Access.GenericRoleToResourceHandler(ctx, mapper.CreateMapper()); var mediator = new Mock <IMediator>(); mediator .Setup(m => m.Send(It.IsAny <RoleAccessToPage>(), It.IsAny <CancellationToken>())) .ReturnsAsync(true) .Verifiable(); var model = new AssignRoleToResourceDto("Role1", menu.Id, DotNetAccessControl.domain.enums.Permission.Allow); var handler = new AssignRoleToMenuHandler(genericRoleToResourceHandler, ctx, mediator.Object); var result = await handler.Handle(new RoleAccessToMenu(model, true), CancellationToken.None); var saved = await ctx.AccessControls.OfType <RoleAccessControl>().SingleAsync(x => x.ResourceId == menu.Id); Assert.Equal(model.RoleName, saved.RoleName); mediator.Verify(x => x.Send(It.IsAny <RoleAccessToPage>(), It.IsAny <CancellationToken>()), Times.Once); } }