public async Task ServiceHappyPathTestWithEfRepo() { const string connectionString = "Server=(localdb)\\mssqllocaldb; Database = PropertiesTest1; Trusted_Connection = True; MultipleActiveResultSets = true"; var services = new ServiceCollection(); services.AddDbContext <PropertiesContext>(options => options.UseSqlServer(connectionString)); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddScoped <IUserAuthorizationService, UserAuthorizationMockService>(); //services.AddSingleton<IUserAuthorizationService, UserAuthorizationService>(); services.AddSingleton <IPropertyRepository, PropertyRepositoryEf>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddTransient <INotifyPartiesService, NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); using (var context = serviceProvider.GetService <PropertiesContext>()) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); await SharedTests.TestHappyPath(repo, propertyService, authService); } }
public async Task ServiceHappyPathTestWithInMemoryRepoAndQueuedNotifications() { var services = new ServiceCollection(); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddScoped <IUserAuthorizationService, UserAuthorizationMockService>(); services.AddSingleton <IUserAuthorizationService, UserAuthorizationService>(); services.AddSingleton <IPropertyRepository, PropertyRepositoryInMemory>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddSingleton <IQueueClient, QueueClientMock>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddTransient <INotifyPartiesService, NotifyPartiesQueueClient>(); services.AddTransient <NotifyPartiesService> (); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); await SharedTests.TestHappyPath(repo, propertyService, authService); var queueClient = serviceProvider.GetService <IQueueClient>(); var messages = ((QueueClientMock)queueClient).Messages; Assert.AreEqual(13, messages.Count); var builder = serviceProvider.GetService <IEmailBuilderService>(); var handler = new NotifyPartiesQueueHandler(builder); int count = 0; foreach (var m in messages) { var email = await handler.Handle(m); if (email != null) { count++; Assert.IsNotNull(email.Body); Assert.IsNotNull(email.RecipientEmail); Assert.IsNotNull(email.SenderEmail); Assert.IsNotNull(email.Subject); } } Assert.AreEqual(10, count); }
public async Task ServiceHappyPathTestWithEfRepoAndAspNetIdentity() { const string connectionString = "Server=(localdb)\\mssqllocaldb; Database = PropertiesTest1; Trusted_Connection = True; MultipleActiveResultSets = true"; const string conString = "Server=(localdb)\\mssqllocaldb;Database=aspnet-WebAuthApp-61133D25-72F3-4C13-AC8F-791FA643AA77;Trusted_Connection=True;MultipleActiveResultSets=true"; var services = new ServiceCollection(); services.AddDbContext <ApplicationDbContext>(options => options.UseSqlServer(conString)); services.AddDefaultIdentity <ApplicationUser>() .AddRoles <IdentityRole>() //.AddDefaultUI(UIFramework.Bootstrap4) .AddEntityFrameworkStores <ApplicationDbContext>(); services.AddDbContext <PropertiesContext>(options => options.UseSqlServer(connectionString)); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddSingleton <IUserAuthorizationService, AspNetIdentityService>(); //services.AddSingleton<IUserAuthorizationService, UserAuthorizationService>(); services.AddSingleton <IPropertyRepository, PropertyRepositoryEf>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddTransient <INotifyPartiesService, NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); using (var context1 = serviceProvider.GetService <ApplicationDbContext>()) { context1.Database.EnsureDeleted(); context1.Database.EnsureCreated(); using (var context = serviceProvider.GetService <PropertiesContext>()) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); await SharedTests.TestHappyPath(repo, propertyService, authService); } } }
public async Task ServiceHappyPathTestWithAzureTableApiRepo() { const string connectionString = "DefaultEndpointsProtocol=https;AccountName=demorrstorageaccount;AccountKey=NXluNSsP4tm+NViZ65rN6eM4V6Eniko9b7NON3M5xZGaDmGMV0LSIsM9CUVdFe+2n5L8vyl4DtdaVZz+JMJ3iA==;EndpointSuffix=core.windows.net"; //"UseDevelopmentStorage=true;"; var services = new ServiceCollection(); services.AddSingleton(new AzureTableApiDbContext(new RentalRepairsAzureTableApiDbSettings() { StorageConnectionString = connectionString })); //services.AddDbContext<PropertiesContext>(options => // options.UseSqlServer(connectionString)); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddScoped <IUserAuthorizationService, UserAuthorizationMockService>(); services.AddSingleton <IPropertyRepository, AzureTableApiRepository>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddTransient <INotifyPartiesService, NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); var context = serviceProvider.GetService <AzureTableApiDbContext>(); //{ // context.Database.EnsureDeleted(); // context.Database.EnsureCreated(); //} context.DropTables(); await SharedTests.TestHappyPath(repo, propertyService, authService); }
public async Task ServiceHappyPathTestWithCosmosDbRepo() { var services = new ServiceCollection(); services.AddSingleton <IMongoDbSettings>(new RentalRepairsMongoDbSettings() { DatabaseName = "RentalRepairs", ConnectionString = "" }); services.AddSingleton <IMongoDbContext, RentalRepairsCosmosDbContext>(); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddSingleton <IUserAuthorizationService, UserAuthorizationMockService>(); services.AddSingleton <IPropertyRepository, RentalRepairsMongoDbRepository>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddTransient <INotifyPartiesService, NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var repo = serviceProvider.GetService <IPropertyRepository>(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var dbContext = serviceProvider.GetService <IMongoDbContext>(); dbContext.DropDb(); await SharedTests.TestHappyPath(repo, propertyService, authService); }
public async Task ServiceHappyPathTestWithInMemoryRepoAndServices() { var services = new ServiceCollection(); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddScoped <IUserAuthorizationService, UserAuthorizationMockService>(); services.AddSingleton <IPropertyRepository, PropertyRepositoryInMemory>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); //services.AddSingleton<IEmailService, MailSlurperEmailService >(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddTransient <INotifyPartiesService, NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); //new PropertyRepositoryInMemory(); await SharedTests.TestHappyPath(repo, propertyService, authService); var emailService = (EmailServiceMock)serviceProvider.GetService <IEmailService>(); Assert.IsNotNull(emailService.Emails); Assert.AreEqual(10, emailService.Emails.Count); foreach (var e in emailService.Emails) { Assert.AreEqual("*****@*****.**", e.SenderEmail); Assert.IsNotNull(e.RecipientEmail); Assert.IsNotNull(e.Body); Assert.IsNotNull(e.Subject); } }
public async Task AzureFunctionsHappyPathTestWithInMemoryRepoAndServices() { var services = new ServiceCollection(); services.Configure <NotificationQueueSettings> (options => options.ConnectionString = "UseDevelopmentStorage=true"); services.AddTransient <ISecuritySignInService, SecuritySignInMockService>(); services.AddScoped <IUserAuthorizationService, UserAuthorizationMockService>(); services.AddSingleton <IUserAuthorizationService, UserAuthorizationService>(); services.AddSingleton <IPropertyRepository, PropertyRepositoryInMemory>(); services.AddTransient <ITemplateDataService, TemplateDataService>(); services.AddSingleton <IEmailService, EmailServiceMock>(); services.AddSingleton <IQueueClient, AzureStorageQueueClient>(); services.AddTransient <IEmailBuilderService, EmailBuilderService>(); services.AddTransient <INotifyPartiesService, NotifyPartiesQueueClient>(); services.AddTransient <NotifyPartiesService>(); services.AddSingleton <IPropertyService, PropertyService>(); var serviceProvider = services.BuildServiceProvider(); var propertyService = serviceProvider.GetService <IPropertyService>(); var authService = serviceProvider.GetService <IUserAuthorizationService>(); var repo = serviceProvider.GetService <IPropertyRepository>(); var superInbox = CreateInbox(); var tenantInbox = CreateInbox(); var workerInbox = CreateInbox(); var worker1Inbox = CreateInbox(); await SharedTests.TestHappyPath(repo, propertyService, authService, superInbox.EmailAddress, tenantInbox.EmailAddress, workerInbox.EmailAddress, worker1Inbox.EmailAddress); await Task.Delay(25000); var table = _fixture.TableClient.ListTables().FirstOrDefault(x => x.Name == AzureStorageNames.SentEmailsTable); Assert.IsNotNull(table); TableQuery <EmailRecordHeader> query = new TableQuery <EmailRecordHeader>(); int count = 0; foreach (EmailRecordHeader entity in table.ExecuteQuery(query)) { Assert.IsNotNull(entity.Properties); Assert.AreEqual(4, entity.Properties.Count()); count++; } Assert.AreEqual(10, count); // super -3, tenant - 4, worker - 2, worker1- 1 var timeout = 30000L; // max milliseconds to wait AssertInboxEmails(superInbox, 3, timeout); AssertInboxEmails(tenantInbox, 4, timeout); AssertInboxEmails(workerInbox, 2, timeout); AssertInboxEmails(worker1Inbox, 1, timeout); }