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 void ClassInit()
        {
            // Installing mock DbSet.
            var data = new List<MockCatalog>
            {
                new MockCatalog(false) { Name = "BBB" },
                new MockCatalog(false) { Name = "ZZZ" },
                new MockCatalog(false) { Name = "AAA" },
            }.AsQueryable();

            var mockDbSet = new Mock<DbSet<MockCatalog>>();
            mockDbSet.As<IQueryable<MockCatalog>>().Setup(m => m.Provider).Returns(data.Provider);
            mockDbSet.As<IQueryable<MockCatalog>>().Setup(m => m.Expression).Returns(data.Expression);
            mockDbSet.As<IQueryable<MockCatalog>>().Setup(m => m.ElementType).Returns(data.ElementType);
            mockDbSet.As<IQueryable<MockCatalog>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            // Installing mock Context.
            var mockContext = new Mock<MetadataEFContext>();
            mockContext.Setup(m => m.Set<MockCatalog>()).Returns(mockDbSet.Object);

            // Installing repository.
            var catalogRepository = new EFCatalogRepository<MockCatalog>(mockContext.Object);

            // Installing shared tests.
            SharedTests = new SharedTests<MockCatalog>(mockDbSet, mockContext, catalogRepository, CreateCatalogItem);
        }
        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);
                }
            }
        }
Esempio n. 5
0
        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 static void ClassInit(TestContext context)
 {
     SharedTests = new SharedTests<CatalogA>(CreateItemMethod, new EFCatalogRepository<CatalogA>(new EFContext()));
 }
 public static void ClassInit(TestContext context)
 {
     SharedTests = new SharedTests<DocumentA>(CreateItemMethod, new EFDocumentRepository<DocumentA>(new EFContext()));
 }
Esempio n. 10
0
        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);
        }