예제 #1
0
        public void Should_return_true_if_app_folder_is_valid()
        {
            var folder = "MyApp";

            var appRepositoryMock = new Mock <IAppRepository>();
            var sut = new AppRules(appRepositoryMock.Object);

            var actual = sut.IsAppFolderValid(folder);

            Assert.AreEqual(true, actual);
        }
예제 #2
0
        public void Should_return_true_if_app_name_is_unique()
        {
            var name = "My App";

            var appRepositoryMock = new Mock <IAppRepository>();

            appRepositoryMock.Setup(x => x.GetByName(name)).Returns((App)null);

            var sut = new AppRules(appRepositoryMock.Object);

            var actual = sut.IsAppNameUnique(name);

            Assert.AreEqual(true, actual);
        }
예제 #3
0
        public void Should_return_true_if_app_id_is_unique()
        {
            var id = Guid.NewGuid();

            var appRepositoryMock = new Mock <IAppRepository>();

            appRepositoryMock.Setup(x => x.GetById(id)).Returns((App)null);

            var sut = new AppRules(appRepositoryMock.Object);

            var actual = sut.IsAppIdUnique(id);

            Assert.AreEqual(true, actual);
        }
예제 #4
0
        public void Should_return_true_if_app_exists()
        {
            var id = Guid.NewGuid();

            var appRepositoryMock = new Mock <IAppRepository>();

            appRepositoryMock.Setup(x => x.GetById(id)).Returns(new App());

            var sut = new AppRules(appRepositoryMock.Object);

            var actual = sut.DoesAppExist(id);

            Assert.AreEqual(true, actual);
        }
예제 #5
0
        public void Should_return_true_if_app_folder_is_unique()
        {
            var folder = "MyApp";

            var appRepositoryMock = new Mock <IAppRepository>();

            appRepositoryMock.Setup(x => x.GetByFolder(folder)).Returns((App)null);

            var sut = new AppRules(appRepositoryMock.Object);

            var actual = sut.IsAppFolderUnique(folder);

            Assert.AreEqual(true, actual);
        }
예제 #6
0
        private async Task <ClaimsIdentity> AddClaims(ClaimsIdentity userIdentity)
        {
            userIdentity.AddClaim(new Claim(AppClaimTypes.FullName, FirstName + " " + LastName));
            userIdentity.AddClaim(new Claim(AppClaimTypes.FirstName, FirstName));
            userIdentity.AddClaim(new Claim(AppClaimTypes.LastName, LastName));
            if (!String.IsNullOrEmpty(AdvertiserId))
            {
                userIdentity.AddClaim(new Claim(AppClaimTypes.AdvertiserId, AdvertiserId));
            }
            if (!String.IsNullOrEmpty(ContentSourceId))
            {
                userIdentity.AddClaim(new Claim(AppClaimTypes.ContentSourceId, ContentSourceId));
            }

            //get roles from database
            var ctx         = new ApplicationDbContext();
            var roleManager = new ApplicationRoleManager(ctx);
            var roleIds     = Roles.Select(i => i.RoleId).ToList();
            var dbRoleNames = await roleManager.Roles.Include(m => m.ApplicationRules).Where(m => roleIds.Contains(m.Id)).ToListAsync();


            //add roles as claims
            foreach (var role in dbRoleNames)
            {
                userIdentity.AddClaim(new Claim(AppClaimTypes.Role, role.Name));
            }

            //get associated rules
            var rules = dbRoleNames.SelectMany(m => m.ApplicationRules).ToList();

            if (dbRoleNames.Any(i => i.Name == AppRoles.SystemAdmin))
            {
                rules = await ctx.ApplicationRules.ToListAsync();
            }

            foreach (var rule in rules)
            {
                userIdentity.AddClaim(new Claim(AppClaimTypes.Rule, AppRules.Join(rule.Qualifier, rule.Name)));
            }

            return(userIdentity);
        }