コード例 #1
0
        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"));
        }
コード例 #2
0
 /// <summary>
 /// Provides shared constructor logic for lazy initialization.
 /// </summary>
 /// <param name="educationOrganizationCache">The education organization cache that enables the fast lookup of education organization types from Ids.</param>
 private AuthorizationBuilder(IEducationOrganizationCache educationOrganizationCache)
 {
     // Lazy initialization
     _claimAuthorizationValues = new Lazy <List <Tuple <string, object> > >(
         () =>
         GetClaimAuthorizationNameValuePairs(educationOrganizationCache));
 }
コード例 #3
0
        public static IEducationOrganizationCache that_returns_everything_as_an_education_organization_type_of(
            this IEducationOrganizationCache dependency,
            string educationOrganizationType)
        {
            A.CallTo(() => dependency.GetEducationOrganizationIdentifiers(999))
            .Returns(new EducationOrganizationIdentifiers(999, educationOrganizationType));

            return(dependency);
        }
コード例 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AuthorizationBuilder{TContextData}"/> class using the
 /// specified <see cref="RelationshipsAuthorizationContextData"/> and collection of <see cref="Claim"/>s.
 /// </summary>
 /// <param name="relevantClaims">The claims that are applicable to the authorization decision.</param>
 /// <param name="educationOrganizationCache">The education organization cache that enables the fast lookup of education organization types from Ids.</param>
 /// <param name="contextData">The Ed-Fi specific data to be used for authorization.</param>
 public AuthorizationBuilder(
     IEnumerable <Claim> relevantClaims,
     IEducationOrganizationCache educationOrganizationCache,
     TContextData contextData)
     : this(educationOrganizationCache)
 {
     _contextData    = contextData;
     _relevantClaims = relevantClaims;
 }
            protected override void Act()
            {
                // Execute code under test
                var transformer = new ConcreteEducationOrganizationIdAuthorizationContextDataTransformer<RelationshipsAuthorizationContextData>(
                    _educationOrganizationCache = Given_a_cache_that_returns_no_identifiers());

                _suppliedContextData = new RelationshipsAuthorizationContextData();

                _actualContextData = transformer.GetConcreteAuthorizationContextData(_suppliedContextData);
            }
コード例 #6
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 static IEducationOrganizationCache that_always_returns_a_Local_Education_Agency_for(
            this IEducationOrganizationCache dependency,
            int educationOrganizationId)
        {
            A.CallTo(() =>
                     dependency
                     .GetEducationOrganizationIdentifiers(educationOrganizationId))
            .Returns(
                new EducationOrganizationIdentifiers(
                    educationOrganizationId,
                    "LocalEducationAgency",
                    localEducationAgencyId: educationOrganizationId));

            return(dependency);
        }
コード例 #8
0
        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"));
        }
コード例 #9
0
        private List <Tuple <string, object> > GetClaimAuthorizationNameValuePairs(
            IEducationOrganizationCache educationOrganizationCache)
        {
            var claimAuthorizationValues = new List <Tuple <string, object> >();

            foreach (Claim claim in _relevantClaims)
            {
                var value = claim.ToEdFiResourceClaimValue();

                if (!value.EducationOrganizationIds.Any())
                {
                    continue;
                }

                foreach (int educationOrganizationId in value.EducationOrganizationIds)
                {
                    var identifiers = educationOrganizationCache.GetEducationOrganizationIdentifiers(
                        educationOrganizationId);

                    // Make sure EdOrg exists on the current ODS connection (where the cache gets its data)
                    if (identifiers == null || identifiers.IsDefault)
                    {
                        _logger.InfoFormat(
                            "Unable to find EducationOrganizationId '{0}' in the education organization cache for the current ODS.",
                            educationOrganizationId);

                        continue;
                    }

                    // NOTE: Embedded convention (Concrete EducationOrganization identifiers use format of "TypeName+Id")
                    var claimNameValueTuple = Tuple.Create(
                        identifiers.EducationOrganizationType + "Id",
                        (object)educationOrganizationId);

                    claimAuthorizationValues.Add(claimNameValueTuple);
                }
            }

            return(claimAuthorizationValues);
        }
コード例 #10
0
 that_given_education_organization_id(
     this IEducationOrganizationCache dependency,
     int identifier)
 {
     return(A.CallTo(() => dependency.GetEducationOrganizationIdentifiers(identifier)));
 }
コード例 #11
0
 public static IMethodOptions <EducationOrganizationIdentifiers> that_given_education_organization_id(
     this IEducationOrganizationCache dependency,
     int identifier)
 {
     return(dependency.Stub(x => x.GetEducationOrganizationIdentifiers(identifier)));
 }
コード例 #12
0
 public ConcreteEducationOrganizationIdAuthorizationContextDataTransformer(IEducationOrganizationCache educationOrganizationCache)
 {
     _educationOrganizationCache = educationOrganizationCache;
 }
コード例 #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AuthorizationBuilder{TContextData}"/> class using the
 /// specified <see cref="RelationshipsAuthorizationContextData"/> and collection of <see cref="Claim"/>s.
 /// </summary>
 /// <param name="relevantClaims">The claims that are applicable to the authorization decision.</param>
 /// <param name="educationOrganizationCache">The education organization cache that enables the fast lookup of education organization types from Ids.</param>
 public AuthorizationBuilder(IEnumerable <Claim> relevantClaims, IEducationOrganizationCache educationOrganizationCache)
     : this(educationOrganizationCache)
 {
     _relevantClaims = relevantClaims;
 }
 public static IReturnValueArgumentValidationConfiguration <EducationOrganizationIdentifiers> that_given_education_organization_id(
     this IEducationOrganizationCache dependency,
     int identifier)
 {
     return(A.CallTo(() => dependency.GetEducationOrganizationIdentifiers(identifier)));
 }