protected override void EstablishContext()
            {
                XmlConfigurator.Configure();
                RegisterDependencies();

                ClaimsPrincipal.ClaimsPrincipalSelector =
                    () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(_container.Resolve <IClaimsIdentityProvider>());

                _studentRepo = _container.Resolve <IUpsertEntity <Student> >();
                _programRepo = _container.Resolve <IUpsertEntity <Program> >();
                _studentProgramAssociationRepo = _container.Resolve <IUpsertEntity <StudentProgramAssociation> >();

                _studentTitleIPartAProgramAssociationRepo =
                    _container.Resolve <IUpsertEntity <StudentTitleIPartAProgramAssociation> >();

                _upsertService = _container.Resolve <IUpsertEntity <ServiceDescriptor> >();

                InitializeEducationOrganizationIdsForTest();

                _studentUniqueId = Guid.NewGuid()
                                   .ToString("N");

                _serviceDescriptor = GetTestServiceDescriptor();
                _program1          = GetProgram1();
                _program2          = GetProgram2();
                _student           = GetStudent();

                InitializeTestData();
            }
        private void FinalizeContainer(IWindsorContainer container)
        {
            _logger.Debug("Finalizing container");

            container.Kernel.GetFacilities()
            .OfType <ChainOfResponsibilityFacility>()
            .SingleOrDefault()
            ?.FinalizeChains();

            // Make this dependency available to generated artifacts
            GeneratedArtifactStaticDependencies.Resolvers.Set(() => container.Resolve <IResourceModelProvider>());
            GeneratedArtifactStaticDependencies.Resolvers.Set(() => container.Resolve <IAuthorizationContextProvider>());

            ClaimsPrincipal.ClaimsPrincipalSelector =
                () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(container.Resolve <IClaimsIdentityProvider>());

            // Provide cache using a closure rather than repeated invocations to the container
            IPersonUniqueIdToUsiCache personUniqueIdToUsiCache = null;

            PersonUniqueIdToUsiCache.GetCache = () => personUniqueIdToUsiCache ?? (personUniqueIdToUsiCache = container.Resolve <IPersonUniqueIdToUsiCache>());

            // Provide cache using a closure rather than repeated invocations to the container
            IDescriptorsCache cache = null;

            DescriptorsCache.GetCache = () => cache ?? (cache = container.Resolve <IDescriptorsCache>());

            ResourceModelHelper.ResourceModel =
                new Lazy <ResourceModel>(() => container.Resolve <IResourceModelProvider>().GetResourceModel());
        }
            protected override void Arrange()
            {
                RegisterDependencies();
                IDescriptorsCache cache = null;

                DescriptorsCache.GetCache = () => cache ??= _container.Resolve <IDescriptorsCache>();

                IPersonUniqueIdToUsiCache personUniqueIdToUsiCache = null;

                PersonUniqueIdToUsiCache.GetCache = ()
                                                    => personUniqueIdToUsiCache ??= _container.Resolve <IPersonUniqueIdToUsiCache>();

                var assembly = typeof(Program).GetTypeInfo().Assembly;

                XmlConfigurator.Configure(LogManager.GetRepository(assembly));

                ClaimsPrincipal.ClaimsPrincipalSelector =
                    () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(_container.Resolve <IClaimsIdentityProvider>());

                _studentRepo = _container.Resolve <IUpsertEntity <Student> >();
                _programRepo = _container.Resolve <IUpsertEntity <Program> >();
                _studentProgramAssociationRepo = _container.Resolve <IUpsertEntity <StudentProgramAssociation> >();

                _studentTitleIPartAProgramAssociationRepo =
                    _container.Resolve <IUpsertEntity <StudentTitleIPartAProgramAssociation> >();

                _upsertService = _container.Resolve <IUpsertEntity <ServiceDescriptor> >();

                InitializeEducationOrganizationIdsForTest();

                _studentUniqueId = Guid.NewGuid()
                                   .ToString("N");

                _serviceDescriptor = GetTestServiceDescriptor();
                _program1          = GetProgram1();
                _program2          = GetProgram2();
                _student           = GetStudent();

                InitializeTestData();
            }
Exemplo n.º 4
0
        private void RegisterComponents(IWindsorContainer container)
        {
            if (_isAsync)
            {
                container.Register(
                    Component.For <IDependencyResolver>()
                    .Instance(new WindsorDependencyResolver(container)),
                    Component.For <IIdentityService, IIdentityServiceAsync>()
                    .ImplementedBy <TestIdentitiesService>(),
                    Classes.From(typeof(IdentitiesController))
                    .BasedOn <ApiController>()
                    .LifestyleScoped()
                    );
            }
            else
            {
                container.Register(
                    Component.For <IDependencyResolver>()
                    .Instance(new WindsorDependencyResolver(container)),
                    Component.For <IIdentityService>()
                    .ImplementedBy <TestIdentitiesService>(),
                    Component.For <IIdentityServiceAsync>()
                    .ImplementedBy <UnimplementedIdentityService>(),
                    Classes.From(typeof(IdentitiesController))
                    .BasedOn <ApiController>()
                    .LifestyleScoped()
                    );
            }

            container.Register(
                Component.For <IDatabaseConnectionStringProvider>()
                .Named("IDatabaseConnectionStringProvider.Admin")
                .ImplementedBy <NamedDatabaseConnectionStringProvider>()
                .DependsOn(Dependency.OnValue("connectionStringName", "EdFi_Admin")));

            container.Register(
                Component
                .For <SecurityContextFactory>()
                .ImplementedBy <SecurityContextFactory>());

            container.Register(
                Component.For <IOAuthTokenValidator>()
                .Instance(CreateOAuthTokenValidator())
                .IsDefault());

            container.Register(
                Component.For <ISecurityRepository>()
                .Instance(new StubSecurityRepository()));

            var suppliedApiKeyContextProvider = MockRepository.GenerateStub <IApiKeyContextProvider>();

            container.Register(
                Component.For <IApiKeyContextProvider>()
                .Instance(suppliedApiKeyContextProvider)
                .IsDefault());

            container.Register(
                Component.For <IConfigValueProvider>()
                .ImplementedBy <AppConfigValueProvider>());

            container.Register(
                Component.For <IClaimsIdentityProvider>()
                .ImplementedBy <ClaimsIdentityProvider>());

            ClaimsPrincipal.ClaimsPrincipalSelector =
                () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(container.Resolve <IClaimsIdentityProvider>());

            container.Register(
                Component.For <IAuthenticationProvider>()
                .ImplementedBy <OAuthAuthenticationProvider>());
        }
Exemplo n.º 5
0
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(
                Component
                .For <IApiKeyContextProvider, IHttpContextStorageTransferKeys>()
                .ImplementedBy <ApiKeyContextProvider>());

            container.Register(
                Component
                .For <ISchoolYearContextProvider, IHttpContextStorageTransferKeys>()
                .ImplementedBy <SchoolYearContextProvider>());

            container.Register(
                Component
                .For(typeof(ICompositeDefinitionProcessor <,>))
                .ImplementedBy(typeof(CompositeDefinitionProcessor <,>)));

            container.Register(
                Component
                .For <IResourceJoinPathExpressionProcessor>()
                .ImplementedBy <ResourceJoinPathExpressionProcessor>());

            container.Register(
                Component
                .For <IFileSystem>()
                .ImplementedBy <FileSystemWrapper>());

            container.Register(Component
                               .For <IResourceLoadGraphFactory>()
                               .ImplementedBy <ResourceLoadGraphFactory>());

            container.Register(
                Component.For <IRESTErrorProvider>().ImplementedBy <RESTErrorProvider>(),
                Classes.FromAssemblyContaining <Marker_EdFi_Ods_Api>().BasedOn <IExceptionTranslator>()
                .WithService.Base());

            // TODO: GKM - Profiles - temporary workaround for lack of composability
            RegisterNHibernateComponents(container);

            container.Install(new LegacyEdFiOdsApiInstaller());

            RegisterEduIdDependencies(container);
            RegisterOAuthTokenValidator(container);

            // Register specific implementations
            // -----------------------------------

            // Controllers
            // These are api controllers so they need to be scoped to fit the Windsor integration for resolving dependencies
            container.Register(
                Classes.FromAssemblyContaining <Marker_EdFi_Ods_Standard>()
                .BasedOn <ApiController>()
                .LifestyleScoped());

            container.Register(
                Classes.FromAssemblyContaining <Marker_EdFi_Ods_Profiles_Test>()
                .BasedOn <ApiController>()
                .LifestyleScoped());

            // Register main API assembly's controllers
            container.Register(
                Classes.FromAssemblyContaining <Marker_EdFi_Ods_Api>()
                .BasedOn <ApiController>()
                .LifestyleScoped());

            // TODO: GKM - IMPORTANT: Review these registrations from Muhammad's pull request
            container.Register(
                Component.For <ISandboxProvisioner>()
                .ImplementedBy <SqlServerSandboxProvisioner>());

            container.Register(
                Component.For <IClaimsIdentityProvider>()
                .ImplementedBy <ClaimsIdentityProvider>());

            ClaimsPrincipal.ClaimsPrincipalSelector =
                () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(container.Resolve <IClaimsIdentityProvider>());

            // TODO: Remove with ODS-2973, deprecated by ProfilesFeatureInstaller
            container.Register(
                Component.For <IProfileResourceNamesProvider, IProfileMetadataProvider>()
                .ImplementedBy <ProfileResourceNamesProvider>());

            // TODO: Remove with ODS-2973, deprecated by CompositesFeatureInstaller
            container.Register(
                Component.For <ICompositesMetadataProvider>()
                .ImplementedBy <CompositesMetadataProvider>());

            container.Register(
                Component.For <IDefaultPageSizeLimitProvider>()
                .ImplementedBy <DefaultPageSizeLimitProvider>());
        }