public void ShouldNotErrorIfClaimSetAlreadyExists()
        {
            var application = SetupContext.Applications.Single(a => a.ApplicationName == "IntegrationTests");

            var claimSet = new ClaimSet
            {
                Application  = application,
                ClaimSetName = "Other ODS AdminApp"
            };

            SetupContext.ClaimSets.Add(claimSet);
            SetupContext.SaveChanges();

            var testClaimSet = new CloudOdsClaimSet
            {
                ApplicationName = "IntegrationTests",
                ClaimSetName    = "Other ODS AdminApp",
                Claims          = new[]
                {
                    new CloudOdsEntityClaim
                    {
                        EntityName            = "educationOrganizations",
                        Actions               = new[] { Create, Read, Update, CloudOdsClaimAction.Delete },
                        AuthorizationStrategy = NoFurtherAuthorizationRequired
                    }
                }
            };

            var configurator = new CloudOdsClaimSetConfigurator(SetupContext);

            configurator.ApplyConfiguration(testClaimSet);
        }
Beispiel #2
0
        public void ShouldPersistClaimSet()
        {
            LoadSeedData();

            var testClaimSet = new CloudOdsClaimSet
            {
                ApplicationName = "IntegrationTests",
                ClaimSetName    = "ODS AdminApp",
                Claims          = new[]
                {
                    new CloudOdsEntityClaim
                    {
                        EntityName            = "educationOrganizations",
                        Actions               = new[] { Create, Read, Update, CloudOdsClaimAction.Delete },
                        AuthorizationStrategy = NoFurtherAuthorizationRequired
                    },
                    new CloudOdsEntityClaim
                    {
                        EntityName            = "systemDescriptors",
                        Actions               = new[] { Create, Read, Update, CloudOdsClaimAction.Delete },
                        AuthorizationStrategy = NoFurtherAuthorizationRequired
                    },
                    new CloudOdsEntityClaim
                    {
                        EntityName            = "managedDescriptors",
                        Actions               = new[] { Create, Read, Update, CloudOdsClaimAction.Delete },
                        AuthorizationStrategy = NoFurtherAuthorizationRequired
                    },
                    new CloudOdsEntityClaim
                    {
                        EntityName            = "types",
                        Actions               = new[] { Read },
                        AuthorizationStrategy = NoFurtherAuthorizationRequired
                    }
                }
            };

            var configurator = new CloudOdsClaimSetConfigurator(SetupContext);

            configurator.ApplyConfiguration(testClaimSet);

            var claimSet = Transaction(securityContext => securityContext.ClaimSets.Single(cs => cs.ClaimSetName == testClaimSet.ClaimSetName));

            Transaction(securityContext =>
            {
                var claimSetResourceClaims = securityContext.ClaimSetResourceClaims
                                             .Include(c => c.Action)
                                             .Include(c => c.ResourceClaim)
                                             .Include(c => c.AuthorizationStrategyOverride)
                                             .Where(c => c.ClaimSet.ClaimSetId == claimSet.ClaimSetId).ToList();

                foreach (var claim in testClaimSet.Claims)
                {
                    foreach (var resourceClaim in claim.Actions.Select(action => claimSetResourceClaims.Single(rc => rc.ResourceClaim.ResourceName == claim.EntityName && rc.Action.ActionName == action.ActionName)))
                    {
                        resourceClaim.AuthorizationStrategyOverride.AuthorizationStrategyName.ShouldBe(claim.AuthorizationStrategy.StrategyName);
                    }
                }
            });
        }