private async Task AuditHashApplication(Application application, bool sendAuditEmail = true) { var activeDeployments = await deploymentRepository.GetActiveDeploymentsAsync(application.Name); var failedAudits = new Dictionary<Deployment, DeploymentAudit>(); foreach (var deployment in activeDeployments) { var audit = await hashingService.HashDeployment(deployment, application.GetRegularExpressions(), application.HashHiddenFiles, false); await auditRepository.CreateAuditAsync(audit); if (!audit.ValidHash) failedAudits.Add(deployment, audit); } if (failedAudits.Count > 0) { var sb = new StringBuilder(); sb.AppendFormat("The application {0} has a failed audit on the following servers: \r\n", application.Name); foreach (var failedAudit in failedAudits) { sb.AppendFormat("Audit UTC:{0}, Server {1}:\r\n", failedAudit.Value.AuditDateTime.ToLongTimeString(), failedAudit.Key.ServerName); foreach (var fileHashMismatch in failedAudit.Value.FileHashMismatches) { sb.AppendFormat("Deployment Hash:{0}, Audit Hash:{1} \r\n", fileHashMismatch.OriginalHash, fileHashMismatch.AuditHash); } } Log.Error(sb.ToString()); await mailService.SendAuditEmail("Audit failure for " + application.Name, sb.ToString()); } else { Log.InfoFormat("All audits passed for application {0}.", application.Name); } }
public void Setup() { existingApplication = new Application { Name = "app", Enabled = true }; applicationRepository = new Mock<IApplicationRepository>(); applicationController = new ApplicationController(applicationRepository.Object); }
public async Task InsertApplicationAsync(Application application) { var existingRecord = await GetApplicationAsync(application.Name); if (existingRecord == null) { await collection.InsertOneAsync(application); } else { throw new ArgumentException("The application named `" + application.Name + "` already exists."); } }
public async Task<IHttpActionResult> Post(string name) { try { var application = await applicationRepository.GetApplicationAsync(name); if (application != null) { return BadRequest("The application already exists. Use PUT to modify the application."); } application = new Application { Name = name, Enabled = true }; await applicationRepository.InsertApplicationAsync(application); return Ok(); } catch (Exception ex) { Log.Error("Error in application controller:", ex); return InternalServerError(); } }
public async Task ReplaceApplication(Application application) { await collection.ReplaceOneAsync(a => a.Name == application.Name, application); }