Startup.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using Abp.AspNetCore;
  3. using Abp.AspNetCore.TestBase;
  4. using Abp.Dependency;
  5. using VberAdmin.Authentication.JwtBearer;
  6. using VberAdmin.Configuration;
  7. using VberAdmin.EntityFrameworkCore;
  8. using VberAdmin.Identity;
  9. using VberAdmin.Web.Startup;
  10. using Castle.MicroKernel.Registration;
  11. using Microsoft.AspNetCore.Builder;
  12. using Microsoft.AspNetCore.Hosting;
  13. using Microsoft.EntityFrameworkCore;
  14. using Microsoft.Extensions.Configuration;
  15. using Microsoft.Extensions.DependencyInjection;
  16. using Microsoft.Extensions.Logging;
  17. using VberAdmin.Resources;
  18. namespace VberAdmin.Web.Tests;
  19. public class Startup
  20. {
  21. private readonly IConfigurationRoot _appConfiguration;
  22. public Startup(IWebHostEnvironment env)
  23. {
  24. _appConfiguration = env.GetAppConfiguration();
  25. }
  26. public IServiceProvider ConfigureServices(IServiceCollection services)
  27. {
  28. services.AddEntityFrameworkInMemoryDatabase();
  29. services.AddMvc();
  30. IdentityRegistrar.Register(services);
  31. AuthConfigurer.Configure(services, _appConfiguration);
  32. services.AddScoped<IWebResourceManager, WebResourceManager>();
  33. //Configure Abp and Dependency Injection
  34. return services.AddAbp<VberAdminWebTestModule>(options =>
  35. {
  36. options.SetupTest();
  37. });
  38. }
  39. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
  40. {
  41. UseInMemoryDb(app.ApplicationServices);
  42. app.UseAbp(); //Initializes ABP framework.
  43. app.UseExceptionHandler("/Error");
  44. app.UseStaticFiles();
  45. app.UseRouting();
  46. app.UseAuthentication();
  47. app.UseJwtTokenMiddleware();
  48. app.UseAuthorization();
  49. app.UseEndpoints(endpoints =>
  50. {
  51. endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
  52. });
  53. }
  54. private void UseInMemoryDb(IServiceProvider serviceProvider)
  55. {
  56. var builder = new DbContextOptionsBuilder<VberAdminDbContext>();
  57. builder.UseInMemoryDatabase(Guid.NewGuid().ToString()).UseInternalServiceProvider(serviceProvider);
  58. var options = builder.Options;
  59. var iocManager = serviceProvider.GetRequiredService<IIocManager>();
  60. iocManager.IocContainer
  61. .Register(
  62. Component.For<DbContextOptions<VberAdminDbContext>>()
  63. .Instance(options)
  64. .LifestyleSingleton()
  65. );
  66. }
  67. }