コード例 #1
0
    def test_expires(self):
        keyvalue.set("my_key_with_expires", "my_value", expires=1)
        self.assertEqual(keyvalue.get("my_key_with_expires"), "my_value")

        time.sleep(1)

        self.assertEqual(keyvalue.get("my_key_with_expires"), None)
コード例 #2
0
    def test_set(self):
        key = keyvalue.set("my_key", "my_value")
        self.assertTrue(key is not None)
        self.assertEqual(keyvalue.get("my_key"), "my_value")

        keyvalue.set("my_key", "my_value2")
        self.assertEqual(keyvalue.get("my_key"), "my_value2")

        self.assertEqual(keyvalue.get("nothing_on_this_key"), None)
コード例 #3
0
    def test_namespace(self):
        keyvalue.set("my_key", "my_value", namespace="my_namespace")
        self.assertEqual(keyvalue.get("my_key", namespace="my_namespace"),
                         "my_value")

        keyvalue.set("my_key", "my_value2", namespace="my_namespace2")
        self.assertEqual(keyvalue.get("my_key", namespace="my_namespace"),
                         "my_value")
        self.assertEqual(keyvalue.get("my_key", namespace="my_namespace2"),
                         "my_value2")
コード例 #4
0
    def recover_password_send_link(cls, email):
        if not cls.is_valid_email(email):
            raise EmailInvalid("%s is not a valid email address" % email)

        code = keyvalue.get(email, namespace="recover_password_link")
        if code is not None:
            return code  # an email has already been sent out

        entity = cls.get_by_email(email)

        if entity:
            code = "%040x" % random.getrandbits(160)
            keyvalue.set(code,
                         email,
                         namespace="recover_password_link",
                         expires=60 * 60)

            mail.send_mail(sender=environment.SENDER,
                           to=email,
                           subject="Password recovery",
                           body="""
Please use the following link to reset your password.

%s/%s

""" % (environment.URL, code))

            return code
コード例 #5
0
    def recover_password(cls, code, password):
        email = keyvalue.get(code, namespace="recover_password_link")

        if email:
            entity = cls.get_by_email(email)
            if entity:
                return entity.credentials.update_password(password=password)
        raise CodeInvalid("Invalid or expired verification code")
コード例 #6
0
 def test_verify_email(self):
     self.api_mock.post("/api/user.create",
                        dict(email="*****@*****.**", password="******"))
     resp = self.api_mock.post("/api/user.verify_email_send_code")
     self.assertEqual(resp.get("error"), None)
     code = keyvalue.get("*****@*****.**", namespace="verify_email_code")
     messages = self.mail_stub.get_sent_messages(to="*****@*****.**")
     self.assertEqual(1, len(messages))
     resp = self.api_mock.post("/api/user.verify_email", dict(code=code))
     self.assertEqual(resp.get("error"), None)
     resp = self.api_mock.post("/api/user.me")
     self.assertEqual(resp.get("email_verified"), True)
コード例 #7
0
    def verify_email_send_code(self):
        code = keyvalue.get(self.email, namespace="verify_email_code")
        if code is not None:
            return code  # an email has already been sent out

        code = ("%040x" % random.getrandbits(160))[0:5].upper()
        keyvalue.set(self.email,
                     code,
                     namespace="verify_email_code",
                     expires=10 * 60)

        mail.send_mail(sender=environment.SENDER,
                       to=self.email,
                       subject="Verify your email: %s" % code,
                       body="""
Thank you for signing up! Please verify your email address using the code below:

%s

""" % (code))

        return code
コード例 #8
0
 def verify_email(self, code=""):
     value = keyvalue.get(self.email, namespace="verify_email_code")
     if value is not None and value.upper() == code.upper():
         return self.credentials.update(email_verified=True)
     raise CodeInvalid("Invalid or expired verification code")
コード例 #9
0
 def test_delete(self):
     keyvalue.set("my_key", "my_value")
     self.assertEqual(keyvalue.get("my_key"), "my_value")
     keyvalue.delete("my_key")
     self.assertEqual(keyvalue.get("my_key"), None)