def post(self):
     '''
     Handles post requests
     '''
     self.response.headers['Content-Type'] = 'text/html'
     username = self.request.get('username')
     password = self.request.get('password')
     verify = self.request.get('verify')
     email = self.request.get('email')
     values = {
         'username': username,
         'password': password,
         'verify': verify,
         'email': email
     }
     validation = UserSignupValidation()
     validationMsgs, isValid = validation.validate(username, password,
                                                   verify, email)
     #        values = self.escape_values(values)
     values.update(validationMsgs)
     path = os.path.join(os.path.dirname(__file__), 'usersignup.html')
     if isValid:
         self.redirect('/unit2/usersignup/thanks?username=' + username)
     else:
         self.response.out.write(template.render(path, values))
 def get(self):
     '''
     Handles initial get request
     '''
     self.response.headers['Content-Type'] = 'text/html'
     values = {'username':'', 'password':'','verify':'','email':''}
     validation = UserSignupValidation()
     validationMsgs = validation.initialize_messages_dict() 
     values.update(validationMsgs)
     path = os.path.join(os.path.dirname(__file__), 'usersignup.html')
     self.response.out.write(template.render(path, values))
 def get(self):
     '''
     Handles initial get request
     '''
     self.response.headers['Content-Type'] = 'text/html'
     values = {'username': '', 'password': '', 'verify': '', 'email': ''}
     validation = UserSignupValidation()
     validationMsgs = validation.initialize_messages_dict()
     values.update(validationMsgs)
     path = os.path.join(os.path.dirname(__file__), 'usersignup.html')
     self.response.out.write(template.render(path, values))
    def post(self):
        '''
        Handles post requests
        '''
        self.response.headers['Content-Type'] = 'text/html'
        username = self.request.get('username')
        password = self.request.get('password')
        verify = self.request.get('verify')
        email = self.request.get('email')
        values = {'username':username, 'password':password,'verify':verify,'email':email}
        validation = UserSignupValidation()
        validationMsgs, isValid = validation.validate(username, password, verify, email)
#        values = self.escape_values(values) 
        values.update(validationMsgs)
        path = os.path.join(os.path.dirname(__file__), 'usersignup.html')
        if isValid:
            self.redirect('/unit2/usersignup/thanks?username=' + username)
        else:
            self.response.out.write(template.render(path, values))
 def setUp(self):
     self.validation = UserSignupValidation()
     pass
class Test(unittest.TestCase):


    def setUp(self):
        self.validation = UserSignupValidation()
        pass


    def tearDown(self):
        pass



    def testIsValidUsername(self):
        self.assertTrue(self.validation.is_valid_username("Crag"))
        self.assertTrue(self.validation.is_valid_username("Crag-Doremus"))
        self.assertTrue(self.validation.is_valid_username("Crag_Doremus"))
        self.assertTrue(self.validation.is_valid_username("Cra"))
        self.assertFalse(self.validation.is_valid_username("ca"))
        self.assertFalse(self.validation.is_valid_username("cat!"))
        self.assertTrue(self.validation.is_valid_username("abcdefghijklmnopqrst"))
        self.assertFalse(self.validation.is_valid_username("abcdefghijklmnopqrstu"))
        pass

    def testIsValidPassword(self):
        self.assertTrue(self.validation.is_valid_password("Craig"))
        self.assertTrue(self.validation.is_valid_password("abcdefghijklmnopqrst"))
        self.assertFalse(self.validation.is_valid_password("abcdefghijklmnopqrstu"))
        pass

    def testIsValidEmail(self):
        self.assertTrue(self.validation.is_valid_email("*****@*****.**"))
        self.assertTrue(self.validation.is_valid_email("*****@*****.**"))
        self.assertFalse(self.validation.is_valid_email("Craigfoocom"))
        pass

    def testValid(self):
        username = "******"
        password = "******"
        verify = "craig1"
        email = "*****@*****.**"
        validMsgs, isValid = self.validation.validate(username, password, verify, email)
        self.assertTrue(isValid)
        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[0],VERIFICATION_MESSAGES_KEYS[1],VERIFICATION_MESSAGES_KEYS[2],VERIFICATION_MESSAGES_KEYS[3]], validMsgs)
        
    def testValid_BadUsername(self):
        username = "******"
        password = "******"
        verify = "craig1"
        email = "*****@*****.**"
        validMsgs, isValid = self.validation.validate(username, password, verify, email)
        self.assertFalse(isValid)
        self.assertEquals(VERIFICATION_MESSAGES[VERIFICATION_MESSAGES_KEYS[0]], validMsgs[VERIFICATION_MESSAGES_KEYS[0]])
        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[1],VERIFICATION_MESSAGES_KEYS[2],VERIFICATION_MESSAGES_KEYS[3]], validMsgs)

    def testValid_BadPassword(self):
        username = "******"
        password = "******"
        verify = "c1"
        email = "*****@*****.**"
        validMsgs, isValid = self.validation.validate(username, password, verify, email)
        self.assertFalse(isValid)
        self.assertEquals(VERIFICATION_MESSAGES[VERIFICATION_MESSAGES_KEYS[1]], validMsgs[VERIFICATION_MESSAGES_KEYS[1]])
        self.assertEquals(VERIFICATION_MESSAGES[VERIFICATION_MESSAGES_KEYS[2]], validMsgs[VERIFICATION_MESSAGES_KEYS[2]])
        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[0],VERIFICATION_MESSAGES_KEYS[3]], validMsgs)

#    def testValid_BadVerifyPassword(self):
#        username = "******"
#        password = "******"
#        verify = "c1"
#        email = "*****@*****.**"
#        validMsgs, isValid = self.validation.validate(username, password, verify, email)
#        self.assertFalse(isValid)
#        self.assertEquals(VERIFICATION_MESSAGES[VERIFICATION_MESSAGES_KEYS[2]], validMsgs[VERIFICATION_MESSAGES_KEYS[2]])
#        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[0],VERIFICATION_MESSAGES_KEYS[1],VERIFICATION_MESSAGES_KEYS[3]], validMsgs)

    def testValid_BadEmail(self):
        username = "******"
        password = "******"
        verify = "craig1"
        email = "craigfoo.com"
        validMsgs, isValid = self.validation.validate(username, password, verify, email)
        self.assertFalse(isValid)
        self.assertEquals(VERIFICATION_MESSAGES[VERIFICATION_MESSAGES_KEYS[3]], validMsgs[VERIFICATION_MESSAGES_KEYS[3]])
        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[0],VERIFICATION_MESSAGES_KEYS[2],VERIFICATION_MESSAGES_KEYS[1]], validMsgs)

    def testValid_PasswordsDontMatch(self):
        username = "******"
        password = "******"
        verify = "craig"
        email = "*****@*****.**"
        validMsgs, isValid = self.validation.validate(username, password, verify, email)
        self.assertFalse(isValid)
        self.assertEquals(MISMATCHED_PASSWORDS_MESSAGE, validMsgs[VERIFICATION_MESSAGES_KEYS[1]])
        self.assertEquals(MISMATCHED_PASSWORDS_MESSAGE, validMsgs[VERIFICATION_MESSAGES_KEYS[2]])
        self.assertEmptyMessage([VERIFICATION_MESSAGES_KEYS[0],VERIFICATION_MESSAGES_KEYS[3]], validMsgs)

    def test_is_password_and_verify_equals(self):
        self.assertTrue(self.validation.is_password_and_verify_equals("craig", "craig"))
        self.assertFalse(self.validation.is_password_and_verify_equals("craig", "craig1"))

    def assertEmptyMessage(self, key_list, messages):
        for key in key_list:
            self.assertEquals('', messages[key], "Message with key " + key + " is not empty")