public async Task StatusNull() { var userClaim = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, "*****@*****.**"), new Claim(ClaimTypes.Email, "*****@*****.**") }, "mock")); var user = new ProProfsUser(); user.Email = "*****@*****.**"; this._mockAdapter.Setup(x => x.AddUserToQuiz(user)).ReturnsAsync(true); this._mockAdapter.Setup(x => x.QuizStatus(user.Email)).ReturnsAsync(user); this._mockUserRepository.Setup(x => x.AddUser(user)).ReturnsAsync(user); this._mockUserRepository.Setup(x => x.GetUser(string.Empty)).ReturnsAsync(user); var controller = new ProProfsController(this._mockAdapter.Object, this._mockUserRepository.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = userClaim } }; var result = await controller.Get(); Assert.NotNull(result); Assert.Equal(user, result); }
public async Task <ProProfsUser> PostQuiz([FromBody] ProProfsUser proProfsUser) { // Need to change this logic . need to add more security here as passing user email is not good . Need to allow this based on Role. var result = await this.proProfsAdapter.AddUserToQuiz(proProfsUser); if (result) { var user = await this.proProfsAdapter.QuizStatus(proProfsUser.Email); return(await this.userRepository.AddUser(user)); } return(null); }
public async Task TestUserStatus() { var adapter = new ProProfsAdapter(this.proProfsProxy); var usermodel = new ProProfsUser(); usermodel.Email = "*****@*****.**"; usermodel.Group = new List <string>() { "Test" }; var result = await adapter.QuizStatus("*****@*****.**"); Assert.NotNull(result); }
public async Task TestUserGroupRegistration() { var adapter = new ProProfsAdapter(this.proProfsProxy); var usermodel = new ProProfsUser(); usermodel.Email = "*****@*****.**"; usermodel.Group = new List <string>() { "Test" }; var result = await adapter.AddUserToGroup(usermodel); Assert.True(result); }
public async Task Register() { var user = new ProProfsUser(); user.Email = "*****@*****.**"; this._mockAdapter.Setup(x => x.AddUserToQuiz(user)).ReturnsAsync(true); this._mockAdapter.Setup(x => x.QuizStatus(user.Email)).ReturnsAsync(user); this._mockUserRepository.Setup(x => x.AddUser(user)).ReturnsAsync(user); var controller = new ProProfsController(this._mockAdapter.Object, this._mockUserRepository.Object); var result = await controller.PostQuiz(user); Assert.NotNull(result); Assert.Equal(user, result); }
public virtual async Task <ProProfsUser> QuizStatus(string userName) { var model = new ProProfsProgressModel(); model.email_or_id = userName; var result = await this.profProfsProxy.GetProgress(model); if (result.StatusCode != System.Net.HttpStatusCode.OK) { return(null); } var response = result.Content.ReadAsStringAsync(); var jsonResponse = JObject.Parse(response.Result); var status = jsonResponse["status"]; if (status.Value <string>() == ProProfsStatus.ERROR.ToString()) { return(null); } var data = (JArray)jsonResponse["result"]; if (data.Count > 0) { var user = new ProProfsUser(); user.Email = data[0]["Email"].Value <string>(); user.UserName = data[0]["Name"].Value <string>(); user.Group = ((JArray)data[0]["Group"]).Select(x => x.Value <string>()).ToList(); user.Quizzes = ((JArray)data[0]["assignment"]).Select(x => new ProProfsUserQuiz() { QuizId = x["ID"]?.Value <string>(), QuizTitle = x["title"]?.Value <string>(), QuizUniqueName = x["quiz_unique_title"]?.Value <string>(), QuizStatus = x["Status"]?.Value <string>(), AttemptDate = x["assignedOnDate"]?.Value <DateTime>(), PercentComplete = x["percentCompleted"]?.Value <double>(), }).ToList(); return(user); } return(null); }
public async Task TestUserQuizRegistration() { var adapter = new ProProfsAdapter(this.proProfsProxy); var usermodel = new ProProfsUser(); usermodel.Email = "*****@*****.**"; var quizzes = new List <ProProfsUserQuiz>(); quizzes.Add(new ProProfsUserQuiz() { QuizLink = "https://www.proprofs.com/quiz-school/story.php?title=agility-security-awareness-quiz" }); usermodel.Quizzes = quizzes; var result = await adapter.AddUserToQuiz(usermodel); Assert.True(result); }
public async Task TestRegistration() { // Arrange var request = new { Url = "/api/Account/Userprofile" }; // Act var response = await Client.GetAsync(request.Url); var json = await response.Content.ReadAsStringAsync(); var singleResponse = JsonConvert.DeserializeObject <UserProfile>(json); UserAccessToken = singleResponse.UserAccessToken; request = new { Url = "/api/ProProfs/UserQuiz" }; Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", UserAccessToken); var model = new ProProfsUser(); model.Email = "*****@*****.**"; model.Quizzes = new List <ProProfsUserQuiz>() { new ProProfsUserQuiz() { QuizLink = "https://www.proprofs.com/quiz-school/story.php?title=hazard-communication-right-to-know" } }; var input = JsonConvert.SerializeObject(model); var httpContent = new StringContent(input, Encoding.UTF8, "application/json"); var response1 = await Client.PostAsync(request.Url, httpContent); // Assert Assert.Equal(System.Net.HttpStatusCode.OK, response1.StatusCode); }
public virtual async Task <ProProfsUser> AddUser(ProProfsUser user) { var users = this.DataContext.Users.Find(x => x.Email.ToLower() == user.Email.ToLower()); var existingUser = await users.FirstOrDefaultAsync(); if (existingUser != null) { user.Password = existingUser.Password; user.ManagerEmail = existingUser.ManagerEmail; FilterDefinition <ProProfsUser> filter = Builders <ProProfsUser> .Filter.Where(q => q.Email == user.Email); await this.DataContext.Users.ReplaceOneAsync(filter, user); return(user); } else { await this.DataContext.Users.InsertOneAsync(user); return(user); } }
public virtual async Task <bool> AddUserToQuiz(ProProfsUser userModel) { var reegistermodel = new ProProfsRegistrationModel(); reegistermodel.email = userModel.Email; reegistermodel.quiz_assignment = userModel.Quizzes.Select(x => x.EncodedQuizLink).ToArray(); var result = await this.profProfsProxy.Register(reegistermodel); if (result.StatusCode != System.Net.HttpStatusCode.OK) { return(false); } var response = result.Content.ReadAsStringAsync(); var jsonResponse = JObject.Parse(response.Result); var status = jsonResponse["status"]; if (status.Value <string>() == ProProfsStatus.ERROR.ToString()) { return(false); } return(true); }