public IHttpActionResult GetTests(string appName) { ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel(); var tests = (IEnumerable <ApplicationNameTestList>)appTestListModel.ApplicationNameTestLists; tests = tests.Where(x => x.ApplicationName == appName).ToList(); return(Ok(tests)); }
public IHttpActionResult GetApps() { ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel(); var applications = (IEnumerable <ApplicationNameTestList>)appTestListModel.ApplicationNameTestLists; applications = applications.DistinctBy(x => x.ApplicationName).ToList(); return(Ok(applications)); }
public IHttpActionResult GetTestKey(string appName, string testName) { try { ApplicationNameTestListModel appTestListModel = new ApplicationNameTestListModel(); var test = appTestListModel.ApplicationNameTestLists; return(Ok(test.FirstOrDefault(x => x.ApplicationName == appName && x.TestName == testName).TestListKey)); } catch { return(BadRequest("Test name not found")); } }
public HttpStatusCode AddToQueue([FromBody] string data) { try { JsonSerializer serializer = new JsonSerializer(); JsonReader reader = new JsonTextReader(new StringReader(data)); QueuedTestExtra myQueueWithExtra = serializer.Deserialize <QueuedTestExtra>(reader); ApplicationNameTestListModel applicationNameTestListModel = new ApplicationNameTestListModel(); var allTestsForApp = applicationNameTestListModel.ApplicationNameTestLists.Where( x => x.ApplicationName == myQueueWithExtra.ApplicationName).ToList(); QueuedTestsModel myModel = new QueuedTestsModel(); QueuedTest myQyQueuedTest; if (myQueueWithExtra.RunAllApi) { var allApiTests = allTestsForApp.Where(x => x.TestName.Contains("API")).ToList(); foreach (var item in allApiTests) { myQyQueuedTest = new QueuedTest { Id = myQueueWithExtra.Id, QueuedDateTime = myQueueWithExtra.QueuedDateTime, ApplicationName = myQueueWithExtra.ApplicationName, ConsoleLog = myQueueWithExtra.ConsoleLog, Environment = myQueueWithExtra.Environment, StackTrace = myQueueWithExtra.StackTrace, TestName = item.TestName, UserName = myQueueWithExtra.UserName, Utilization = myQueueWithExtra.Utilization }; myModel.QueuedTests.Add(myQyQueuedTest); } } if (myQueueWithExtra.RunAllGui) { var allGuiTests = allTestsForApp.Where(x => !x.TestName.Contains("API")).ToList(); foreach (var item in allGuiTests) { myQyQueuedTest = new QueuedTest { Id = myQueueWithExtra.Id, QueuedDateTime = myQueueWithExtra.QueuedDateTime, ApplicationName = myQueueWithExtra.ApplicationName, ConsoleLog = myQueueWithExtra.ConsoleLog, Environment = myQueueWithExtra.Environment, StackTrace = myQueueWithExtra.StackTrace, TestName = item.TestName, UserName = myQueueWithExtra.UserName, Utilization = myQueueWithExtra.Utilization }; myModel.QueuedTests.Add(myQyQueuedTest); } } if (myQueueWithExtra.RunAllApi == false && myQueueWithExtra.RunAllGui == false) { myQyQueuedTest = new QueuedTest { Id = myQueueWithExtra.Id, QueuedDateTime = myQueueWithExtra.QueuedDateTime, ApplicationName = myQueueWithExtra.ApplicationName, ConsoleLog = myQueueWithExtra.ConsoleLog, Environment = myQueueWithExtra.Environment, StackTrace = myQueueWithExtra.StackTrace, TestName = myQueueWithExtra.TestName, UserName = myQueueWithExtra.UserName, Utilization = myQueueWithExtra.Utilization }; myModel.QueuedTests.Add(myQyQueuedTest); } myModel.SaveChanges(); return(HttpStatusCode.OK); } catch (Exception ex) { return(HttpStatusCode.BadRequest); } }
public HttpStatusCode GenerateEmail(string appName, int daysBack, string environment) { try { DateTime today = DateTime.Today; ApplicationNameTestListModel applicationNameTestList = new ApplicationNameTestListModel(); var testList = applicationNameTestList.ApplicationNameTestLists.Where(x => x.ApplicationName == appName); vUniqueExecutedTestsModel uniqueExecutedTestsModel = new vUniqueExecutedTestsModel(); var executedTests = uniqueExecutedTestsModel.vUniqueExecutedTests.Where(x => x.ApplicationName == appName && x.Environment.ToUpper() == environment); if (daysBack > 0) { today = today.AddDays(0 - daysBack); executedTests = executedTests.Where(x => x.StartDateTime >= today); } #region Set the Email From, To Section and SMTP MailMessage mail = new MailMessage(); MailAddress fromMail = new MailAddress("*****@*****.**"); mail.From = fromMail; // TODO: Update to get selected user groups from email distribution. mail.To.Add("*****@*****.**"); mail.To.Add("*****@*****.**"); SmtpClient client = new SmtpClient(); client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = "Exchcasprd01v.us.nelnet.biz"; #endregion Set the Email From, To Section and SMTP #region Format the Email Body mail.IsBodyHtml = true; mail.Body = "<div style='font-family:Calibri;'>"; #region Style mail.Body += "<style>" + "table, th, td {" + "border: 1px solid black;" + "border-collapse: collapse;" + "}" + "th, td {" + "padding: 2px;" + "text-align: left;" + "}" + "table#t01 tr:nth-child(even) {" + "background-color: #eee;" + "}" + "table#t01 tr:nth-child(odd) {" + "background-color: #fff;" + "}" + "table#t01 th {" + "background-color: #4d6fa5;" + "color: white;" + "}" + "</style>"; #endregion Style mail.Body += $"<h2>{appName} - {environment}</h2>"; mail.Body += "<table id=\"t01\">" + "<tr>" + "<th>Type</th>" + "<th># of passes </th> " + "<th># of failures</th>" + "<th># of not run</th>" + "<th># of total tests</th>" + "</tr>" + "<tr>" + "<td>Number of UI tests</td>" + $"<td>{executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "PASS")}</td>" + $"<td>{executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "FAIL")}</td>" + $"<td>{testList.Except(testList.Where(x => x.TestName.Contains("API"))).Count() - (executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "PASS") + executedTests.Except(executedTests.Where(x => x.TestName.Contains("API"))).Count(x => x.TestRunStatus.ToUpper() == "FAIL"))}</td>" + $"<td>{testList.Except(testList.Where(x => x.TestName.Contains("API"))).Count()}</td> " + "</tr> " + "<tr> " + "<td>Number of API tests</td> " + $"<td>{executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "PASS")}</td> " + $"<td>{executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "FAIL")}</td> " + $"<td>{testList.Count(x => x.TestName.Contains("API")) - (executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "PASS") + executedTests.Where(x => x.TestName.Contains("API")).Count(x => x.TestRunStatus.ToUpper() == "FAIL"))}</td> " + $"<td>{testList.Count(x => x.TestName.Contains("API"))}</td> " + "</tr> " + "</table>"; mail.Body += "------</br>"; mail.Body += "<p>To see the full results please <a href=\"http://autodash.nelnet.net\">click here.</a>"; mail.Body += "</div>"; #endregion Format the Email Body mail.Subject = $"Automated Report for {appName} against {environment}"; client.Send(mail); return(HttpStatusCode.OK); } catch { return(HttpStatusCode.BadRequest); } }