Exemple #1
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #9
0
        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);
        }