Ejemplo n.º 1
0
        public static TestRunModel GetTestRun(string connectionString, int id)
        {
            var list = new List <TestRunModel>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                var query = string.Format("SELECT * FROM dbo.TestRun WHERE RunId = {0};", id);

                using (SqlCommand command = new SqlCommand(query, connection))
                {
                    connection.Open();
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var dict  = new Dictionary <string, object>();
                            var model = new TestRunModel(reader.GetString(0), reader.GetString(1), reader.GetInt32(2), reader.GetInt32(3), reader.GetInt32(4), reader.GetInt32(5), reader.GetDateTime(6));
                            list.Add(model);
                        }
                        if (list.Count > 1)
                        {
                            throw new Exception("Error: should return max 1 record");
                        }
                    }
                }
            }

            return(list[0]);
        }
Ejemplo n.º 2
0
        public async Task <TestRunDto> AddTestRun(TestRunModel model)
        {
            var content  = new StringContent(Json.Serialize(model), Encoding.UTF8, "application/json");
            var response = await _httpClient.PostAsync("http://localhost:5000/api/TestRun", content);

            var result = await response.Content.ReadAsStringAsync();

            return(Json.Deserialize <TestRunDto>(result));
        }
Ejemplo n.º 3
0
        public TestRunModel NextStatus(TestRunModel testRun, RunStatus.Status status)
        {
            testRun.TestRunStatus = status.ToString();

            Api api = new Api("api/CreateTestRun");

            api.PostApi(JsonConvert.SerializeObject(testRun));

            return(testRun);
        }
Ejemplo n.º 4
0
        public Teardown(TestRunModel testRun)
        {
            Debug.WriteLine("Starting Teardown.");
            testRun.TestRunStatus = RunStatus.Status.Pass.ToString();

            testRun.EndDateTime = DateTime.Now;
            foreach (var item in TestRunModel.Results)
            {
                if (item.ResultStatus == RunStatus.Status.Fail.ToString() || item.ResultStatus == RunStatus.Status.Fatal.ToString())
                {
                    // TODO: This will only set the result status to fail, but will never show fatals/warnings ect.
                    // TODO: Consider making a prioritized list of which failure is highest pri (Pass - 1, Info - 2, Warning - 3, Fatal - 4, Critical - 5, ect).

                    testRun.TestRunStatus = RunStatus.Status.Fail.ToString();
                    break;
                }
            }

            if (TestRunModel.IsApiTest == false)
            {
                if (testRun.Browser.ToUpper() == "CHROME")
                {
                    Debug.WriteLine("Writing Chrome driver logs to end of test run.");
                    if (TestRunModel.Driver.Manage().Logs.GetLog(LogType.Browser) != null)
                    {
                        var logs = TestRunModel.Driver.Manage().Logs.GetLog(LogType.Browser);

                        for (int i = 0; i < logs.Count; i++)
                        {
                            if (logs.Count - 1 == i)
                            {
                                break;
                            }

                            TestResultModel result = new TestResultModel
                            {
                                ValidationKey   = logs[i].Message,
                                ValidationValue = logs[i].Level.ToString(),
                                ResultStatus    = RunStatus.Status.Warning.ToString()
                            };
                            WriteResult(result);
                        }
                    }
                }

                TestRunModel.Driver?.Quit();
                Debug.WriteLine($"{TestRunModel.Driver} closed.");
            }

            Api api = new Api("api/CreateTestRun");

            _TeardownData = api.UpdateTestRun(testRun);
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <TestRunDto> > Post([FromBody] TestRunModel model)
        {
            if (ModelState.IsValid)
            {
                var testRunDto = await _runService.AddTestRunAsync(model.ProjectId,
                                                                   model.Name, model.Description,
                                                                   model.TestCasesIds);

                return(Created("", testRunDto));
            }

            return(BadRequest());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Get Test Result from for a release
        /// </summary>
        public static TestRunModel GetReleaseTestRunDataModel(string vso, string project, string releaseEnvId, int releaseId, DateTime creationTime, string token)
        {
            var url         = string.Format(RELEASE_TEST_RUN_QUERY_TEMPLATE, vso, project, releaseEnvId, releaseId);
            var rawResponse = VSOApiUtil.GetResponse(url, token);
            var response    = JsonConvert.DeserializeObject <ResultSummaryResponse>(rawResponse);

            TestRunModel result = null;

            if (response != null && response.aggregatedResultsAnalysis != null && response.aggregatedResultsAnalysis.resultsByOutcome != null)
            {
                var outcome = response.aggregatedResultsAnalysis.resultsByOutcome;
                var failed  = (outcome.Failed != null) ? outcome.Failed.count : 0;
                var passed  = (outcome.Passed != null) ? outcome.Passed.count : 0;
                result = new TestRunModel(vso, project, releaseId, releaseId, passed, failed + passed, creationTime);
            }
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Get Test Result from for a build
        /// </summary>
        public static List <TestRunModel> GetBuildTestRunDataModel(string vso, string project, int buildId, string token)
        {
            var url         = string.Format(BUILD_TEST_RUN_QUERY_TEMPLATE, vso, project, buildId);
            var result      = new List <TestRunModel>();
            var rawResponse = VSOApiUtil.GetResponse(url, token);
            var response    = JsonConvert.DeserializeObject <TestRunListResponse>(rawResponse);

            if (response.value.Count > 0)
            {
                foreach (var item in response.value)
                {
                    var model = new TestRunModel(vso, project, buildId, item.id, item.passedTests, item.totalTests, item.startedDate);
                    result.Add(model);
                }
            }
            return(result);
        }
Ejemplo n.º 8
0
        public ActionResult TestRun(TestRunModel testRunModel)
        {
            try
            {
                testRunModel.TestResult.SavedTime = DateTime.Now;
                int id = testResultFacade.CreateTestResult(testRunModel.TestResult, testRunModel.MarkedAnswers);

                var testResultViewModel = new TestResultViewModel()
                {
                    TestResult = testResultFacade.getTestResultByID(id)
                };
                return(RedirectToAction("TestResultView", testResultViewModel));
                //return View("TestRunView",testRunModel);
            }
            catch
            {
                return(View());
            }
        }
Ejemplo n.º 9
0
        /*
         * // POST: Test/Delete/5
         * [HttpPost]
         * public ActionResult Delete(int id, FormCollection collection)
         * {
         *  try
         *  {
         *      // TODO: Add delete logic here
         *
         *      return RedirectToAction("Index");
         *  }
         *  catch
         *  {
         *      return View();
         *  }
         * }
         */

        public ActionResult TestRun(int id)
        {
            TestDTO test = testFacade.GetTestByID(id);

            if (test.TimeFrom <= DateTime.Now && test.TimeTo >= DateTime.Now)
            {
                var testRunModel = new TestRunModel()
                {
                    Test = testFacade.GetTestByID(id)
                };
                foreach (var item in testRunModel.Test.Questions)
                {
                    foreach (var answer in item.Answers)
                    {
                        testRunModel.MarkedAnswers.Add(answer.AnswerID, false);
                    }
                }
                testRunModel.TestResult.OpenedTime = DateTime.Now;
                testRunModel.TestResult.Test       = testRunModel.Test;

                return(View(testRunModel));
            }
            return(View("TestCannotRun"));
        }
Ejemplo n.º 10
0
 public RestResponse UpdateTestRun(TestRunModel testRun)
 {
     return(PostApi(JsonConvert.SerializeObject(testRun)));
 }
Ejemplo n.º 11
0
        public Initialize(string appName, out TestRunModel testRun)
        {
            try
            {
                Api         prefs;
                Preferences preferences;

                if (Dns.GetHostName() == "VDI-Automation0")
                {
                    // Get Queued User Prefs
                    prefs = new Api($"api/GetPreferences/{appName}/{Environment.UserName}/{true}");
                    JsonReader reader = new JsonTextReader(new StringReader(prefs.GetApi().Content));
                    preferences = new NewtonSoftSerializer().Deserialize <Preferences>(reader);
                }
                else
                {
                    // Get Normal User Prefs
                    prefs = new Api($"api/GetPreferences/{appName}/{Environment.UserName}/{false}");
                    JsonReader reader = new JsonTextReader(new StringReader(prefs.GetApi().Content));
                    preferences            = new NewtonSoftSerializer().Deserialize <Preferences>(reader);
                    preferences.TesterName = Environment.UserName;
                }
                //preferences.RemoteDriver = false;

                var appKeyRequest = new Api($"api/GetAppKey/{appName}");
                var appKey        = int.Parse(appKeyRequest.GetApi().Content);
                Debug.WriteLine($"Initializing Application: {appName} - Key: {appKey}");

                var testName = "";
                Debug.WriteLine("Initializing Test: " + GetTestName());
                var testKey        = new Api($"api/GetTestKey/{appName}/{GetTestName()}");
                var testKeyContent = testKey.GetApi().Content;
                if (testKeyContent.Contains("Test name not found"))
                {
                    Test newTest = new Test
                    {
                        ApplicationKey = appKey,
                        Active         = true,
                        TestName       = GetTestName()
                    };
                    testName = newTest.TestName;

                    Debug.WriteLine($"{GetTestName()} not found.. Creating new test.");
                    // Do some logic to create a new test for this test name.
                    var createTestRequest = new Api("api/CreateTest");
                    testKeyContent = createTestRequest.PostApi(JsonConvert.SerializeObject(newTest)).Content;;  // Set key to newly created test key

                    Debug.WriteLine($"Initializing Test: {GetTestName()} - Key: {testKeyContent}");
                }

                testRun = new TestRunModel
                {
                    ApplicationKey = appKey,
                    TestRunStatus  = RunStatus.Status.Initializing.ToString(),
                    Environment    = preferences.Environment,
                    EnvironmentUrl = preferences.EnvironmentUrl,
                    TestKey        = int.Parse(testKeyContent),
                    TesterKey      = preferences.TesterKey,
                    Browser        = preferences.BrowserName,
                };

                var createTestRunKey = new Api("api/CreateTestRun");
                testRun.TestRunKey = int.Parse(createTestRunKey.PostApi(JsonConvert.SerializeObject(testRun)).Content);
                TestRunKey         = testRun.TestRunKey;

                if (testName != string.Empty && !testName.ToUpper().Contains("API"))
                {
                    WebDriver driverData = new WebDriver();
                    TestRunModel.Driver = driverData.GetWebDriver(preferences);
                    Debug.WriteLine("Started Driver type: " + TestRunModel.Driver.GetType());

                    TestRunModel.Driver.Manage().Window.Maximize();

                    TestRunModel.Driver.Navigate().GoToUrl(testRun.EnvironmentUrl);
                    Debug.WriteLine($"Went to URL: {TestRunModel.Driver.Url}");
                }
                else
                {
                    TestRunModel.IsApiTest = true;
                    Debug.WriteLine("Started API Test.");
                }
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception.Message);
                throw;
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Runs tests in all assemblies in the temporary directory
        /// </summary>
        public IActionResult Test()
        {
            try
            {
                var reports  = TestRunner.RunTests($"{environment.WebRootPath}/Temp");
                var dateTime = DateTime.Now;
                var results  = new List <AssemblyReportModel>();
                foreach (var testClassReport in reports)
                {
                    var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName);
                    var assemblyReport  = assemblyReports.FirstOrDefault();
                    if (assemblyReports.Count() == 0)
                    {
                        assemblyReport = new AssemblyReportModel {
                            Name = testClassReport.AssemblyName, Id = dateTime.ToString() + testClassReport.AssemblyName
                        };
                        currentState.AssemblyReports.Add(assemblyReport);
                        results.Add(assemblyReport);
                    }
                    foreach (var test in testClassReport.Reports)
                    {
                        var newTestReportModel = new TestReportModel
                        {
                            ClassName = testClassReport.ClassName,
                            Valid     = true,
                            Name      = test.Name,
                            Passed    = test.Ignored ? null : test.Passed,
                            Time      = test.Ignored ? null : test.Time,
                            Message   = test.Message,
                            Id        = dateTime.ToString() + test.Name + testClassReport.ClassName
                        };
                        if (test.Passed == true)
                        {
                            assemblyReport.Passed++;
                        }
                        else if (test.Passed == false)
                        {
                            assemblyReport.Failed++;
                        }
                        else
                        {
                            assemblyReport.Ignored++;
                        }

                        assemblyReport.TestReports.Add(newTestReportModel);
                    }
                }
                var newRunReport = new TestRunModel
                {
                    DateTime        = DateTime.Now,
                    AssemblyReports = results
                };
                archive.Add(newRunReport);
                archive.SaveChanges();
            }
            catch (InvalidAssemlyException e)
            {
                var reports = e.InvalidClasses;
                foreach (var testClassReport in reports)
                {
                    var assemblyReports = currentState.AssemblyReports.Where(r => r.Name == testClassReport.AssemblyName);
                    var assemblyReport  = assemblyReports.FirstOrDefault();
                    if (assemblyReports.Count() == 0)
                    {
                        assemblyReport = new AssemblyReportModel {
                            Name = testClassReport.AssemblyName
                        };
                        currentState.AssemblyReports.Add(assemblyReport);
                    }
                    foreach (var test in testClassReport.InvalidMethods)
                    {
                        var newTestReportModel = new TestReportModel
                        {
                            ClassName = testClassReport.Name,
                            Valid     = false,
                            Name      = test.Name,
                            Passed    = null,
                            Time      = null,
                            Message   = String.Join("\n", test.Errors)
                        };

                        assemblyReport.TestReports.Add(newTestReportModel);
                    }
                }
            }

            return(View("Index", currentState));
        }