protected override void EstablishContext()
        {
            suppliedContextData = new RelationshipsAuthorizationContextData
            {
                StudentUSI = 11111
            };

            _suppliedEdFiResourceClaimValue = new EdFiResourceClaimValue(
                "manage",
                new List <int>
            {
                1, 2, 3
            });

            suppliedClaims = new List <Claim>
            {
                JsonClaimHelper.CreateClaim(
                    "http://ed-fi.org/ods/identity/claims/domains/generalData",
                    _suppliedEdFiResourceClaimValue)
            };

            _educationOrganizationCache = Stub <IEducationOrganizationCache>();

            _educationOrganizationCache.Stub(
                x =>
                x.GetEducationOrganizationIdentifiers(Arg <int> .Is.Anything))
            .Return(new EducationOrganizationIdentifiers(0, "LocalEducationAgency"));
        }
            public void Should_have_no_errors_when_supplying_only_the_action()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue("action");
                var result = JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue);

                result.ShouldNotBeNull();
            }
            public void Should_have_no_errors_when_suppling_only_the_action()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue("action");
                var thrown = TestForException <Exception>(() => JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue));

                thrown.ShouldBeNull();
            }
            public void Should_have_no_errors()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(ExpectedAction);
                var claim  = JsonClaimHelper.CreateClaim(ExpectedClaimType, suppliedEdFiClaimValue);
                var actual = claim.ToEdFiResourceClaimValue();

                Assert.IsTrue(actual.EducationOrganizationIds.Count == 0);
            }
            public void Should_have_no_errors()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(ExpectedAction);
                var claim  = JsonClaimHelper.CreateClaim(ExpectedClaimType, suppliedEdFiClaimValue);
                var thrown = TestForException <Exception>(() => claim.ToEdFiResourceClaimValue());

                thrown.ShouldBeNull();
            }
 private static IEnumerable <Claim> Given_a_claimset_with_a_claim_that_has_no_educationOrganizations()
 {
     return(new[]
     {
         JsonClaimHelper.CreateClaim(
             "someResource",
             new EdFiResourceClaimValue("something", null as List <int>))
     });
 }
 private static IEnumerable <Claim> Given_a_claimset_with_a_claim_for_LocalEducationAgencies(params int[] localEducationAgencyIds)
 {
     return(new[]
     {
         JsonClaimHelper.CreateClaim(
             "someResource",
             new EdFiResourceClaimValue("something", new List <int>(localEducationAgencyIds)))
     });
 }
            public void Should_create_claim_when_supplying_only_the_action()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue("action");
                var actualClaim            = JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue);

                var expectedClaim = new Claim(SuppliedClaimType, "{\"Actions\":[{\"Name\":\"action\"}]}", "application/json");

                actualClaim.Type.ShouldBe(expectedClaim.Type);
                actualClaim.ValueType.ShouldBe(expectedClaim.ValueType);
                actualClaim.Value.ShouldBe(expectedClaim.Value);
            }
            public void Should_have_no_errors()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(
                    "action",
                    new List <int>
                {
                    1, 2
                });
                var result = JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue);

                result.ShouldNotBeNull();
            }
Esempio n. 10
0
            public void Should_create_a_EdFiClaimValue_when_only_action_is_supplied()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(ExpectedAction);
                var claim  = JsonClaimHelper.CreateClaim(ExpectedClaimType, suppliedEdFiClaimValue);
                var actual = claim.ToEdFiResourceClaimValue();

                actual.Actions.Select(x => x.Name)
                .Single()
                .ShouldBe(ExpectedAction);

                actual.EducationOrganizationIds.ShouldBeEmpty();
            }
Esempio n. 11
0
            public void Should_create_a_EdFiClaimValue()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(ExpectedAction, expectedLocalEducationAgencyIds);
                var claim  = JsonClaimHelper.CreateClaim(ExpectedClaimType, suppliedEdFiClaimValue);
                var actual = claim.ToEdFiResourceClaimValue();

                actual.Actions.Select(x => x.Name)
                .Single()
                .ShouldBe(ExpectedAction);

                actual.EducationOrganizationIds.ShouldBe(expectedLocalEducationAgencyIds);
            }
        public ClaimsIdentity GetClaimsIdentity(
            IEnumerable <int> educationOrganizationIds,
            string claimSetName,
            IEnumerable <string> namespacePrefixes,
            IReadOnlyList <string> assignedProfileNames,
            IReadOnlyList <short?> ownershipTokenIds)
        {
            var nonEmptyNamespacePrefixes = namespacePrefixes.Where(np => !string.IsNullOrWhiteSpace(np)).ToList();

            var resourceClaims = _securityRepository.GetClaimsForClaimSet(claimSetName);

            // Group the resource claims by name to combine actions (and by claim set name if multiple claim sets are supported in the future)
            var resourceClaimsByClaimName = resourceClaims.GroupBy(c => c.ResourceClaim.ClaimName);

            // Create a list of resource claims to be issued.
            var claims = resourceClaimsByClaimName.Select(
                g => new
            {
                ClaimName  = g.Key,
                ClaimValue = new EdFiResourceClaimValue
                {
                    Actions = g.Select(
                        x => new ResourceAction(
                            x.Action.ActionUri,
                            x.ClaimSetResourceClaimActionAuthorizationStrategyOverrides
                            ?.Select(y => y.AuthorizationStrategy.AuthorizationStrategyName)
                            .ToArray(),
                            x.ValidationRuleSetNameOverride))
                              .ToArray(),
                    EducationOrganizationIds = educationOrganizationIds.ToList()
                }
            })
                         .Select(x => JsonClaimHelper.CreateClaim(x.ClaimName, x.ClaimValue))
                         .ToList();

            // NamespacePrefixes
            nonEmptyNamespacePrefixes.ForEach(
                namespacePrefix => claims.Add(new Claim(EdFiOdsApiClaimTypes.NamespacePrefix, namespacePrefix)));

            // Add Assigned Profile names
            assignedProfileNames.ForEach(profileName => claims.Add(new Claim(EdFiOdsApiClaimTypes.Profile, profileName)));

            // Add the claim set name
            claims.Add(new Claim(EdFiOdsApiClaimTypes.ClaimSetName, claimSetName));

            // Add list of OwnershipTokenIds
            ownershipTokenIds.ForEach(
                ownershipToken =>
                claims.Add(new Claim(EdFiOdsApiClaimTypes.OwnershipTokenId, ownershipToken.ToString())));

            return(new ClaimsIdentity(claims, EdFiAuthenticationTypes.OAuth));
        }
Esempio n. 13
0
        Given_an_authorization_builder_with_claim_assigned_education_organization_ids(
            IEducationOrganizationCache cache,
            params int[] identifiers)
        {
            var builder = new AuthorizationBuilder <RelationshipsAuthorizationContextData>(
                new[]
            {
                JsonClaimHelper.CreateClaim("someResource", new EdFiResourceClaimValue("action", new List <int>(identifiers)))
            },
                cache);

            return(builder);
        }
            public void Should_have_no_errors()
            {
                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(
                    "action",
                    new List <int>
                {
                    1, 2
                });

                var thrown = TestForException <Exception>(() => JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue));

                thrown.ShouldBeNull();
            }
 private static IEnumerable <Claim> Given_a_claimset_with_a_claim_for_some_LocalEducationAgency()
 {
     return(new[]
     {
         JsonClaimHelper.CreateClaim(
             "someResource",
             new EdFiResourceClaimValue(
                 "something",
                 new List <int> {
             999
         }))
     });
 }
        protected override void Arrange()
        {
            #region Commented out code for integration testing against SQL Server

            //private IDatabaseConnectionStringProvider connectionStringProvider;

            //connectionStringProvider = mocks.Stub<IDatabaseConnectionStringProvider>();
            //connectionStringProvider.Stub(x => x.GetConnectionString())
            //    .Return(@"Server=(local);Database=database;User Id=user;Password=xxxxx");

            //var executor = new EdFiOdsAuthorizationRulesExecutor(connectionStringProvider);
            //executor.Execute(actualAuthorizationRules);

            #endregion

            _suppliedContextData = new RelationshipsAuthorizationContextData
            {
                SchoolId = 880001,
                StaffUSI = 738953 //340DFAFA-D39B-4A38-BEA4-AD705CC7EB7C
            };

            _suppliedEdFiResourceClaimValue = new EdFiResourceClaimValue(
                "manage",
                new List <int>
            {
                780,
                880,
                980
            });

            _suppliedClaims = new List <Claim>
            {
                JsonClaimHelper.CreateClaim(
                    "http://ed-fi.org/ods/identity/claims/domains/generalData",
                    _suppliedEdFiResourceClaimValue)
            };

            _educationOrganizationCache = Stub <IEducationOrganizationCache>();

            A.CallTo(
                () =>
                _educationOrganizationCache.GetEducationOrganizationIdentifiers(A <int> ._))
            .Returns(new EducationOrganizationIdentifiers(0, "LocalEducationAgency"));
        }
Esempio n. 17
0
            public void Should_create_claim_when_supplying_all_parameters()
            {
                var expected = new Claim(
                    SuppliedClaimType,
                    "{\"Actions\":[{\"Name\":\"action\"}],\"EducationOrganizationIds\":[1,2]}",
                    "application/json");

                var suppliedEdFiClaimValue = new EdFiResourceClaimValue(
                    "action",
                    new List <int>
                {
                    1, 2
                });

                var actual = JsonClaimHelper.CreateClaim(SuppliedClaimType, suppliedEdFiClaimValue);

                actual.Type.ShouldBe(expected.Type);
                actual.ValueType.ShouldBe(expected.ValueType);
                actual.Value.ShouldBe(expected.Value);
            }
        private static IReadOnlyList <ClaimsAuthorizationSegment> GetRelationshipAuthorizationSegments(
            List <int> claimEducationOrganizationIds,
            Action <AuthorizationBuilder <RelationshipsAuthorizationContextData> > buildAuthorizations)
        {
            _suppliedAuthorizationContext = new RelationshipsAuthorizationContextData
            {
                SchoolId = 880001,
                StaffUSI = 738953
            };

            _suppliedClaim = new EdFiResourceClaimValue(
                "manage",
                claimEducationOrganizationIds);

            var suppliedClaims = new List <Claim>
            {
                JsonClaimHelper.CreateClaim(
                    "http://ed-fi.org/ods/identity/claims/domains/generalData",
                    _suppliedClaim)
            };

            var educationOrganizationCache = A.Fake <IEducationOrganizationCache>();

            A.CallTo(() => educationOrganizationCache.GetEducationOrganizationIdentifiers(
                         A <int> .That.Matches(x => x == SuppliedLea1 || x == SuppliedLea2 || x == SuppliedLea3)))
            .Returns(new EducationOrganizationIdentifiers(0, "LocalEducationAgency"));

            A.CallTo(() => educationOrganizationCache.GetEducationOrganizationIdentifiers(SuppliedPostSecondaryInstitutionId))
            .Returns(new EducationOrganizationIdentifiers(0, "PostSecondaryInstitution"));

            var builder = new AuthorizationBuilder <RelationshipsAuthorizationContextData>(
                suppliedClaims,
                educationOrganizationCache,
                _suppliedAuthorizationContext);

            buildAuthorizations(builder);

            return(builder.GetSegments());
        }
 private static Claim Given_a_claim_for_an_arbitrary_resource_for_EducationOrganization_identifiers(params int[] educationOrganizationIds)
 {
     return(JsonClaimHelper.CreateClaim("xyz", new EdFiResourceClaimValue("read", new List <int>(educationOrganizationIds))));
 }