public async void UserExamResultCreateTests() { var client = httpClientFactory.CreateClient(); var httpCallHelper = new HttpCallHelper(client); var testHelper = new UserExamResultTestHelper(client, dbContextFactory); var dbContextHelper = new DbContextHelper(dbContextFactory); var random = Utils.NewRandom(); var userExam1 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); var userExam2 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); var userExam3 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); var userExam4 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); //unautorized client.Unauthorize(); await client.PostUnauthorized($"/userexamresults/{userExam1.Item3.Id}"); //not existing client.Authorize(userExam1.Item1.Token); await client.PostNotFound($"/userexamresults/{int.MaxValue}"); //not published var userExamNotPublished = await httpCallHelper.CreateUserExam(); await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, false); client.Authorize(userExamNotPublished.Item1.Token); await client.PostNotFound($"/userexamresults/{userExamNotPublished.Item3.Id}"); //not ended exam var userExamNotEnded = await httpCallHelper.CreateUserExam(); client.Authorize(userExamNotEnded.Item1.Token); await client.PostNotFound($"/userexamresults/{userExamNotEnded.Item3.Id}"); await dbContextHelper.UpdateUserExamStartDate(userExamNotEnded.Item3.Id, userExamNotEnded.Item2.TimeInMinutes * -2); await client.PostUserExamResultSucessfully($"/userexamresults/{userExamNotEnded.Item3.Id}"); //get existing one await client.PostUserExamResultSucessfully($"/userexamresults/{userExamNotEnded.Item3.Id}"); client.Authorize(userExam1.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam1.Item3.Id, false, false); //other users client.Authorize(userExam2.Item1.Token); await client.PostNotFound($"/userexamresults/{userExam2.Item3.Id}"); client.Authorize(userExam2.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam2.Item3.Id, false, true); client.Authorize(userExam3.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam3.Item3.Id, true, false); client.Authorize(userExam4.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam4.Item3.Id, true, true); }
public async void UserExamResultDetailsTests() { var client = httpClientFactory.CreateClient(); var httpCallHelper = new HttpCallHelper(client); var testHelper = new UserExamResultTestHelper(client, dbContextFactory); var dbContextHelper = new DbContextHelper(dbContextFactory); var random = Utils.NewRandom(); var userExam1 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); var userExam2 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); var userExamNotPublished = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100)); //creatng exam results client.Authorize(userExam1.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam1.Item3.Id, false, true); client.Authorize(userExam2.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam2.Item3.Id, true, true); client.Authorize(userExamNotPublished.Item1.Token); await testHelper.TakeExamAndAssertResult(httpCallHelper, userExamNotPublished.Item3.Id, false, true); //unautorized client.Unauthorize(); await client.GetUnauthorized($"/userexamresults/{userExam1.Item3.Id}"); client.Authorize(userExam1.Item1.Token); //not existing client.Authorize(userExam1.Item1.Token); await client.GetNotFound($"/userexamresults/{int.MaxValue}"); //other users await client.GetNotFound($"/userexamresults/{userExam2.Item3.Id}"); //not published client.Authorize(userExamNotPublished.Item1.Token); await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, false); await client.GetNotFound($"/userexamresults/{userExamNotPublished.Item3.Id}"); await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, true); await client.GetUserExamResultSuccesfully($"/userexamresults/{userExamNotPublished.Item3.Id}"); //normal cases client.Authorize(userExam1.Item1.Token); await client.GetUserExamResultSuccesfully($"/userexamresults/{userExam1.Item3.Id}"); client.Authorize(userExam2.Item1.Token); await client.GetUserExamResultSuccesfully($"/userexamresults/{userExam2.Item3.Id}"); }