public void ShouldRegisterUserIfNonExistingEmailAddress()
        {
            #region Setup
            user newUser = new user();
            newUser.Email    = "*****@*****.**";
            newUser.Password = "******";
            newUser.Name     = "name";

            EmailAddress = newUser.Email;
            Password     = newUser.Password;
            Name         = newUser.Name;

            user existingUser = new user();
            existingUser.Name     = "myFakeName";
            existingUser.Password = "******";
            existingUser.Email    = "*****@*****.**";

            List <user> listOfUsers = new List <user>();
            listOfUsers.Add(existingUser);

            List <companydetail> listOfCompanies = new List <companydetail>();

            companydetail fakeCompany = new companydetail();
            fakeCompany.CompanyName     = "Fake company";
            fakeCompany.CompanyPassword = "******";
            fakeCompany.UserId          = 1;
            fakeCompany.CompanyId       = 1;

            listOfCompanies.Add(fakeCompany);

            CompanyName     = "Company Name";
            CompanyPassword = fakeCompany.CompanyPassword;

            securityquestion question = new securityquestion();
            question.SecurityQuestionId = 1;
            CurrentSecurityQuestion     = question;
            SecurityAnswer = "answer";

            long id = 1;
            #endregion

            serviceClient.Setup(s => s.GetExistingUsersAsync()).Returns(Task.FromResult(listOfUsers.ToArray()));
            serviceClient.Setup(s => s.SaveUserAsync(It.IsAny <user>())).Returns(Task.FromResult(id));
            serviceClient.Setup(s => s.saveCompanyAsync(It.IsAny <companydetail>())).Returns(Task.FromResult(""));
            serviceClient.Setup(s => s.SaveUserRoleAsync(It.IsAny <userrole>())).Returns(Task.FromResult(""));
            serviceClient.Setup(s => s.getExistingCompaniesAsync()).Returns(Task.FromResult(listOfCompanies.ToArray()));
            serviceClient.Setup(s => s.SaveUserSecurityQuestionAsync(It.IsAny <usersecurityquestion>())).Returns(Task.FromResult(""));

            viewModel.ExecuteRegisterUserCommand();

            serviceClient.Verify(s => s.GetExistingUsersAsync(), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserRoleAsync(It.IsAny <userrole>()), Times.Exactly(1));
            serviceClient.Verify(s => s.getExistingCompaniesAsync(), Times.Exactly(1));
            serviceClient.Verify(s => s.saveCompanyAsync(It.IsAny <companydetail>()), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserSecurityQuestionAsync(It.IsAny <usersecurityquestion>()), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserAsync(It.IsAny <user>()), Times.Exactly(1));
        }
        public void CompanyPasswordInvalidWhenGreaterThanMaxLength()
        {
            Name                    = "Name";
            Password                = "******";
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "CompanyName";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void SecurityAnswerInvalidWhenInvalidCharacters()
        {
            Name                    = "Name";
            Password                = "******";
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "CompanyName";
            CompanyPassword = "******";
            SecurityAnswer  = "answer!";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void CompanyInvalidWhenGreaterThanMaxLength()
        {
            Name                    = "Name";
            Password                = "******";
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "kjfhsdkfhdshfjsdjkfhksdjfhksdkfhsdkjfhsdkjfhsdkhfjsdkhfjshdkfhdsk";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void PasswordInvalidWhenLessThanMinLength()
        {
            String password = "******";

            Name                    = "fakeuser";
            Password                = password;
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void PasswordInvalidWhenGreaterThanMaxLength()
        {
            String password = "******";

            Name                    = "fakeuser";
            Password                = password;
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void EmailInvalidWhenInvalidFormat()
        {
            String email = "existingUser.com";

            EmailAddress            = email;
            Name                    = "userName";
            Password                = "******";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void EmailInvalidWhenWhitespace()
        {
            String email = String.Empty;

            EmailAddress            = email;
            Name                    = "fakeuser";
            Password                = "******";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void NameInvalidWhenNull()
        {
            String userName = null;

            Name                    = userName;
            Password                = "******";
            EmailAddress            = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName     = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer  = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public ResetPasswordViewModelTest()
        {
            serviceClient = new Mock<ITreasureHuntService>();
            viewModel = new ResetPasswordViewModel(serviceClient.Object);

            currentUser = new user();
            currentUser.UserId = 1;
            currentUser.Name = "Emma";
            currentUser.Password = "******";

            usersecurityquestion currentUserSecurityDetails = new usersecurityquestion();
            currentUserSecurityDetails.Answer = "answer";
            currentUserSecurityDetails.SecurityQuestionId = 1;
            currentUserSecurityDetails.UserId = 1;
            currentUserSecurityDetails.UserSecurityId = 1;

            securityquestion currentSecurityQuestion = new securityquestion();
            currentSecurityQuestion.SecurityQuestionId = 1;

            CurrentSecurityQuestion = currentSecurityQuestion;
            SecurityAnswer = currentUserSecurityDetails;
            CurrentUser = currentUser;  
        }
        public ResetPasswordViewModelTest()
        {
            serviceClient = new Mock<ITreasureHuntService>();
            viewModel = new ResetPasswordViewModel(serviceClient.Object);

            currentUser = new user();
            currentUser.UserId = 1;
            currentUser.Name = "Emma";
            currentUser.Password = "******";

            usersecurityquestion currentUserSecurityDetails = new usersecurityquestion();
            currentUserSecurityDetails.Answer = "answer";
            currentUserSecurityDetails.SecurityQuestionId = 1;
            currentUserSecurityDetails.UserId = 1;
            currentUserSecurityDetails.UserSecurityId = 1;

            securityquestion currentSecurityQuestion = new securityquestion();
            currentSecurityQuestion.SecurityQuestionId = 1;

            CurrentSecurityQuestion = currentSecurityQuestion;
            SecurityAnswer = currentUserSecurityDetails;
            CurrentUser = currentUser;
        }
        public void SecurityAnswerInvalidWhenWhitespace()
        {
            Name = "Name";
            Password = "******";
            EmailAddress = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "CompanyName";
            CompanyPassword = "******";
            SecurityAnswer = String.Empty;

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void ShouldRegisterUserIfNonExistingEmailAddress()
        {
            #region Setup
            user newUser = new user();
            newUser.Email = "*****@*****.**";
            newUser.Password = "******";
            newUser.Name = "name";

            EmailAddress = newUser.Email;
            Password = newUser.Password;
            Name = newUser.Name;

            user existingUser = new user();
            existingUser.Name = "myFakeName";
            existingUser.Password = "******";
            existingUser.Email = "*****@*****.**";

            List<user> listOfUsers = new List<user>();
            listOfUsers.Add(existingUser);

            List<companydetail> listOfCompanies = new List<companydetail>();

            companydetail fakeCompany = new companydetail();
            fakeCompany.CompanyName = "Fake company";
            fakeCompany.CompanyPassword = "******";
            fakeCompany.UserId = 1;
            fakeCompany.CompanyId = 1;

            listOfCompanies.Add(fakeCompany);

            CompanyName = "Company Name";
            CompanyPassword = fakeCompany.CompanyPassword;

            securityquestion question = new securityquestion();
            question.SecurityQuestionId = 1;
            CurrentSecurityQuestion = question;
            SecurityAnswer = "answer";

            long id = 1;
            #endregion

            serviceClient.Setup(s => s.GetExistingUsersAsync()).Returns(Task.FromResult(listOfUsers.ToArray()));
            serviceClient.Setup(s => s.SaveUserAsync(It.IsAny<user>())).Returns(Task.FromResult(id));
            serviceClient.Setup(s => s.saveCompanyAsync(It.IsAny<companydetail>())).Returns(Task.FromResult(""));
            serviceClient.Setup(s => s.SaveUserRoleAsync(It.IsAny<userrole>())).Returns(Task.FromResult(""));
            serviceClient.Setup(s => s.getExistingCompaniesAsync()).Returns(Task.FromResult(listOfCompanies.ToArray()));
            serviceClient.Setup(s => s.SaveUserSecurityQuestionAsync(It.IsAny<usersecurityquestion>())).Returns(Task.FromResult(""));

            viewModel.ExecuteRegisterUserCommand();

            serviceClient.Verify(s => s.GetExistingUsersAsync(), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserRoleAsync(It.IsAny<userrole>()), Times.Exactly(1));
            serviceClient.Verify(s => s.getExistingCompaniesAsync(), Times.Exactly(1));
            serviceClient.Verify(s => s.saveCompanyAsync(It.IsAny<companydetail>()), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserSecurityQuestionAsync(It.IsAny<usersecurityquestion>()), Times.Exactly(1));
            serviceClient.Verify(s => s.SaveUserAsync(It.IsAny<user>()), Times.Exactly(1));
        }
        public void PasswordInvalidWhenNull()
        {
            String password = null;
            Name = "fakeuser";
            Password = password;
            EmailAddress = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void SecurityAnswerInvalidWhenGreaterThanMaxLength()
        {
            Name = "Name";
            Password = "******";
            EmailAddress = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "CompanyName";
            CompanyPassword = "******";
            SecurityAnswer = "answerfsdfsdfsdfsdfsdfsdfsdfdsf";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void PasswordInvalidWhenGreaterThanMaxLength()
        {
            String password = "******";
            Name = "fakeuser";
            Password = password;
            EmailAddress = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void NameInvalidWhenLessThanMinLength()
        {
            String userName = "******";
            Name = userName;
            Password = "******";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer = "answer";
            EmailAddress = "*****@*****.**";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void EmailInvalidWhenWhitespace()
        {
            String email = String.Empty;
            EmailAddress = email;
            Name = "fakeuser";
            Password = "******";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void EmailInvalidWhenInvalidFormat()
        {
            String email = "existingUser.com";
            EmailAddress = email;
            Name = "userName";
            Password = "******";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "New Company Name";
            CompanyPassword = "******";
            SecurityAnswer = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }
        public void CompanyPasswordInvalidWhenInvalidCharacters()
        {
            Name = "Name";
            Password = "******";
            EmailAddress = "*****@*****.**";
            CurrentSecurityQuestion = new securityquestion();
            CurrentSecurityQuestion.SecurityQuestionId = 1;
            CompanyName = "CompanyName";
            CompanyPassword = "******";
            SecurityAnswer = "answer";

            Assert.False(viewModel.IsValidDetails());
            Assert.False(viewModel.RegisterUserCommand.CanExecute(""));
        }