Exemple #1
0
        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);
        }
Exemple #3
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);
            }
        }