public Tests() { Startup.Initialize(); IConfiguration configuration = Startup.GetIConfiguration(TestContext.CurrentContext.TestDirectory); JwtTokenConfigurations.Load(configuration); Utility authUtility = new Utility(configuration.GetValue <string>("ConnectionStrings:DefaultConnection"), "Auth"); Utility userTokenUtility = new Utility(configuration.GetValue <string>("ConnectionStrings:DefaultConnection"), "UserTokens"); AzureTableUserStore <AzureTableUser> azureTableUserStore = new AzureTableUserStore <AzureTableUser>(authUtility.Table, userTokenUtility); var loggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); }); AzureTableUserManager userManager = new AzureTableUserManager( store: new AzureTableUserStore <AzureTableUser>(authUtility.Table, userTokenUtility), optionsAccessor: new OptionsAccessor <IdentityOptions>(), passwordHasher: new PasswordHasher <AzureTableUser>(), userValidators: new List <IUserValidator <AzureTableUser> >() { new UserValidator <AzureTableUser>() }, passwordValidators: new List <IPasswordValidator <AzureTableUser> >() { new PasswordValidator <AzureTableUser>() }, keyNormalizer: new LookupNormalizer(), errors: new IdentityErrorDescriber(), services: null, logger: loggerFactory.CreateLogger <UserManager <AzureTableUser> >(), textResourceManager: new Nivra.Localization.TextResourceManager(), emailSender: new EmailSender(new AuthMessageSenderOptions() { SendGridKey = "", SendGridUser = "" }), userTokenUtility: userTokenUtility ); accountController = new Controllers.AccountController(Startup.AzureTableRepo, Startup.AuthUtility, Startup.UserTokenUtility, userManager); // _email = Startup.Dict["Email"]; _password = Startup.Dict["Password"]; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddIdentityCore <AzureTableUser>(options => options.SignIn.RequireConfirmedAccount = true ) //.AddTokenProvider<EmailConfirmationTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider) .AddTokenProvider <PasswordResetTokenProvider <AzureTableUser> >(TokenOptions.DefaultProvider) //.AddTokenProvider<ChangePhoneNumberTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider) //.AddTokenProvider<EmailTokenProvider<AzureTableUser>>("ChangePhoneNumber") .AddTokenProvider <UserTwoFactorTokenProvider>(TokenOptions.DefaultProvider) //.AddTokenProvider<DataProtectorTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider) .AddTokenProvider <AppEmailConfirmationTokenProvider <AzureTableUser> >("EmailConfirmationTokenProvider") //.AddTokenProvider<PasswordResetTokenProvider<AzureTableUser>>("PasswordReset") //.AddTokenProvider<ChangePhoneNumberTokenProvider<AzureTableUser>>("ChangePhoneNumber") ////.AddTokenProvider<EmailTokenProvider<AzureTableUser>>("ChangePhoneNumber") //.AddTokenProvider<UserTwoFactorTokenProvider>("TwoFactorTokenProvider") // .AddTokenProvider<DataProtectorTokenProvider<AzureTableUser>>(TokenOptions.DefaultProvider) .AddDefaultTokenProviders() ; AzureTableRepo azureTableRepo = new AzureTableRepo(); Nivra.AzureOperations.Utility utility = new Nivra.AzureOperations.Utility(Configuration["ConnectionStrings:DefaultConnection"], "Auth"); //Configuring CORS services.AddCors(config => { config.AddPolicy("AllowAll", builder => { builder.WithOrigins(Configuration["AllowedHosts"]) .AllowAnyMethod() .AllowAnyHeader(); }); }); // // Configuring PasswordHasher //services.Configure<PasswordHasherOptions>(options => //{ // options.HashAlgorithm = PasswordHasherAlgorithms.SHA1; // options.SaltSize = 16; // options.IterationCount = 8192; //}); //// Registering PasswordHasher //services.AddPasswordHasher(); //services.AddIdentity<AzureTableUser, AzureTableRole>(); JwtTokenConfigurations.Load(Configuration); services.AddGenericJwtAuthService(); var tables = AzureTables.InitializeAzureTables(Configuration["ConnectionStrings:DefaultConnection"], "Auth"); foreach (var table in tables) { azureTableRepo.Collection.Add(table.Name, table); } services.AddSingleton <IAzureTableRepo>(azureTableRepo); services.AddSingleton <Nivra.AzureOperations.Utility>(utility); // Register the Swagger generator, defining 1 or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); }); services.AddControllersWithViews() .AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore ); // In production, the Angular files will be served from this directory services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/dist"; }); services.AddTransient <IEmailSender, EmailSender>(); services.Configure <AuthMessageSenderOptions>(Configuration); services.AddTransient(typeof(IUserTwoFactorTokenProvider <AzureTableUser>), typeof(UserTwoFactorTokenProvider)); services.AddSingleton(typeof(TextResourceManager)); }