public EncryptionServiceTests()
        {
            optionsObj = new EncryptionServiceOptions
            {
                EncryptionKeyFilePath = "file.txt"
            };

            fileTextProvider = new Mock <IFileTextProvider>();
            fileTextProvider.Setup(x => x.GetText(optionsObj.EncryptionKeyFilePath))
            .Returns(EncryptionKey);

            options = new Mock <IOptions <EncryptionServiceOptions> >();
            options.Setup(x => x.Value).Returns(optionsObj);
        }
예제 #2
0
        public static IAppBuilder UseCredentialRepository(this IAppBuilder app, string controllerPrefix, ICredentialRepositoryOptions options)
        {
            return(app.Map(
                       controllerPrefix,
                       builder =>
            {
                var config = new HttpConfiguration();

                // Set up DI
                var containerBuilder = new ContainerBuilder();

                containerBuilder.RegisterInstance(options).AsImplementedInterfaces();

                Database.SetInitializer(options.DatabaseInitializer);
                var encryptionOptions = new EncryptionServiceOptions(options.CertificateThumbprint, options.StoreName, options.StoreLocation);
                containerBuilder.Register(c => new CredentialRepositoryContext(options.NameOrConnectionString, new EncryptionService(encryptionOptions)))
                .As <DbContext>()
                .As <CredentialRepositoryContext>();

                var container = ConfigureDependencyInjection(config, containerBuilder);
                builder.UseAutofacMiddleware(container);
                builder.UseAutofacWebApi(config);

                // Set up filters
                config.Filters.Add(new AuthorizeAttribute());
                config.MessageHandlers.Add(new AuthenticationHandler(container));

                // Map routes and formatting
                config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
                config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

                config.IncludeErrorDetailPolicy = options.IncludeErrorDetailPolicy;

                config.MapHttpAttributeRoutes();
                builder.UseWebApi(config);
            }));
        }