public void UpdateOrderFeeValidationTests() { _webContainerFixture.ExecuteScope(serviceProvider => { var actionStepService = new TestActionstepService(); var mediator = serviceProvider.GetService <IMediator>(); var dbContext = serviceProvider.GetService <WCADbContext>(); var telemetryLogger = serviceProvider.GetService <ITelemetryLogger>(); var mapper = serviceProvider.GetService <IMapper>(); var infoTrackCredentialRepository = new TestInfoTrackCredentialRepository(); var loggerFactory = serviceProvider.GetService <ILoggerFactory>(); var appSettings = serviceProvider.GetService <IOptions <WCACoreSettings> >(); var tokenSetRepository = serviceProvider.GetService <ITokenSetRepository>(); var handler = new UpdateOrder.Handler( actionStepService, mediator, dbContext, mapper, telemetryLogger, infoTrackCredentialRepository, loggerFactory, appSettings, tokenSetRepository); var updateMessage = new InfoTrackOrderUpdateMessage { InfoTrackRetailerFee = 1.0m, InfoTrackRetailerFeeGST = 1.0m, InfoTrackRetailerFeeTotal = 2.0m, InfoTrackSupplierFee = 1.5m, InfoTrackSupplierFeeGST = 1.0m, InfoTrackSupplierFeeTotal = 2.5m, InfoTrackTotalFee = 2.5m, InfoTrackTotalFeeGST = 2.0m, InfoTrackTotalFeeTotal = 4.5m }; var handleMethod = handler.GetType().GetMethod("ValidateFees", BindingFlags.NonPublic | BindingFlags.Instance); // Initial data valid Assert.True(InvokeFeeValidation(handleMethod, handler, updateMessage)); updateMessage.InfoTrackRetailerFeeTotal = 2.1m; Assert.False(InvokeFeeValidation(handleMethod, handler, updateMessage)); updateMessage.InfoTrackRetailerFeeTotal = 2.0m; updateMessage.InfoTrackSupplierFeeTotal = 2.4m; Assert.False(InvokeFeeValidation(handleMethod, handler, updateMessage)); updateMessage.InfoTrackSupplierFeeTotal = 2.5m; updateMessage.InfoTrackTotalFeeTotal = 4.6m; Assert.False(InvokeFeeValidation(handleMethod, handler, updateMessage)); // Reverted all values, should be valid again updateMessage.InfoTrackTotalFeeTotal = 4.5m; Assert.True(InvokeFeeValidation(handleMethod, handler, updateMessage)); }); }
public async void CredentialsCanBeStored() { await _containerFixture.ExecuteScopeAsync(async serviceProvider => { var mockEmailSender = new Mock <IEmailSender>(); var db = serviceProvider.GetService <WCADbContext>(); // Prepare test data var testUser = db.GetTestUser(); var testOrg = db.ActionstepOrgs.Add(new ActionstepOrg() { Key = "CredentialsCanBeStored", Title = "CredentialsCanBeStored", CreatedBy = testUser, UpdatedBy = testUser, DateCreatedUtc = DateTime.Parse("2018-10-06", CultureInfo.InvariantCulture), LastUpdatedUtc = DateTime.Parse("2018-10-06", CultureInfo.InvariantCulture), }).Entity; await db.SaveChangesAsync(); var startTime = DateTime.UtcNow; // Store test data var testCredential = db.ActionstepCredentials.Add(new ActionstepCredential() { AccessToken = "CredentialsCanBeStored-AccessToken", AccessTokenExpiryUtc = startTime.AddHours(1), Owner = testUser, ActionstepOrg = testOrg, RefreshToken = "CredentialsCanBeStored-RefreshToken", RefreshTokenExpiryUtc = startTime.AddMinutes(5), TokenType = "CredentialsCanBeStored-TokenType", ApiEndpoint = new Uri("https://api.endpoint/api/"), ExpiresIn = 3600, ReceivedAtUtc = startTime, CreatedBy = testUser, UpdatedBy = testUser, DateCreatedUtc = DateTime.Parse("2018-10-06", CultureInfo.InvariantCulture), LastUpdatedUtc = DateTime.Parse("2018-10-06", CultureInfo.InvariantCulture) }).Entity; await db.SaveChangesAsync(); var coreOptions = Options.Create(new WCACoreSettings() { ActionstepSettings = new ActionstepSettings() { ApiClientId = "ApiClientId", ApiClientSecret = "ApiClientSecret" }, InfoTrackSettings = new InfoTrackSettings() { NewInfoTrackEmailNotifications = "infotrackemail@test" }, WCANotificationEmail = "wcanotifications@test" }); var testInfoTrackCredentialService = new TestInfoTrackCredentialRepository(); var handler = (IRequestHandler <StoreInfoTrackCredentialsForOrgCommand>) new StoreInfoTrackCredentialsForOrg.Handler( db, new Validator(), coreOptions, testInfoTrackCredentialService, mockEmailSender.Object); // Act var expectedUsername = "******"; var expectedPassword = "******"; await handler.Handle(new StoreInfoTrackCredentialsForOrgCommand() { ActionstepOrgKey = testOrg.Key, AuthenticatedUser = testUser, InfoTrackUsername = expectedUsername, InfoTrackPassword = expectedPassword }, new CancellationToken()); // Assert mockEmailSender.Verify(s => s.SendEmailAsync(It.IsAny <EmailSenderRequest>()), Times.Once); var result = await testInfoTrackCredentialService.FindCredential(testOrg.Key); Assert.Equal(expectedUsername, result.Username); Assert.Equal(expectedPassword, result.Password); }); }