Example #1
0
    def test_issue_access_token(self, connection_mock):
        conn = connection_mock.instance()
        connection_mock.return_value = conn
        db = conn[self.settings["mongodb.db_name"]]
        backend = MongoDBRegistrationBackend(self.settings, self.config)

        uid = ObjectId()
        token = "token"
        with patch('pyramid_registration.mongodb._generate_access_token'):
            mongodb._generate_access_token.return_value = token
            def side_effect(*args):
                def second_call(*args):
                    return {"_id":uid}
                mongodb._generate_access_token.side_effect = second_call
                return None
            db.users.find_one.side_effect = side_effect
            backend.issue_access_token(uid)
            db.users.find_one.assert_called_with({"access_tokens.token":token})
Example #2
0
    def test_issue_access_token(self, connection_mock):
        conn = connection_mock.instance()
        connection_mock.return_value = conn
        db = conn[self.settings["mongodb.db_name"]]
        backend = MongoDBRegistrationBackend(self.settings, self.config)

        uid = ObjectId()
        token = "token"
        with patch('pyramid_registration.mongodb._generate_access_token'):
            mongodb._generate_access_token.return_value = token

            def side_effect(*args):
                def second_call(*args):
                    return {"_id": uid}

                mongodb._generate_access_token.side_effect = second_call
                return None

            db.users.find_one.side_effect = side_effect
            backend.issue_access_token(uid)
            db.users.find_one.assert_called_with(
                {"access_tokens.token": token})
Example #3
0
    def test_activation(self):
        backend = MongoDBRegistrationBackend(self.settings, self.config)
        struct = {
            "username": "******",
            "password": "******",
            "email": "*****@*****.**"
        }
        backend.add_user(struct)
        user_doc = self.db.users.find_one({"username": struct["username"]})
        self.assertEquals(user_doc["username"], struct["username"])
        self.assertEquals(user_doc["email"], struct["email"])
        self.assertNotEquals(user_doc["password"], struct["password"])

        # User has been added - verify it has no activated tokens
        for token in user_doc.get("access_tokens", []):
            self.assertFalse(token.get("activated_timestamp"))

        # Issue a token for this user
        access_token = backend.issue_access_token(user_doc["_id"])

        # Verify user has this access token in their user document
        user_doc = self.db.users.find_one({"username": struct["username"]})
        doc_token = False
        for token in user_doc.get("access_tokens", []):
            if token.get("token") == access_token:
                doc_token = token
                break

        self.assertEquals(doc_token["token"], access_token)
        # Verify this token is not activated
        self.assertFalse(doc_token.get("activated_timestamp"))
        # Ensure verify_access_token on this token returns False

        self.assertFalse(backend.verify_access_token(access_token))
        # Now activate the token, and assert that the token is marked as
        # activated in the database.
        backend.activate(access_token)

        user_doc = self.db.users.find_one({"username": struct["username"]})
        doc_token = False
        for token in user_doc.get("access_tokens", []):
            if token.get("token") == access_token:
                self.assertTrue(token.get("activated_timestamp"))
                break

        # Ensure verify_access_token on this token returns the user_id
        userid = backend.verify_access_token(access_token)
        self.assertEquals(userid, str(user_doc["_id"]))
Example #4
0
    def test_activation(self):
        backend = MongoDBRegistrationBackend(self.settings, self.config)
        struct = {"username":"******", "password":"******", "email":"*****@*****.**"}
        backend.add_user(struct)
        user_doc = self.db.users.find_one({"username":struct["username"]})
        self.assertEquals(user_doc["username"], struct["username"])
        self.assertEquals(user_doc["email"], struct["email"])
        self.assertNotEquals(user_doc["password"], struct["password"])

        # User has been added - verify it has no activated tokens
        for token in user_doc.get("access_tokens", []):
            self.assertFalse(token.get("activated_timestamp"))

        # Issue a token for this user
        access_token = backend.issue_access_token(user_doc["_id"])

        # Verify user has this access token in their user document
        user_doc = self.db.users.find_one({"username":struct["username"]})
        doc_token = False
        for token in user_doc.get("access_tokens", []):
            if token.get("token") == access_token:
                doc_token = token
                break

        self.assertEquals(doc_token["token"], access_token)
        # Verify this token is not activated
        self.assertFalse(doc_token.get("activated_timestamp"))
        # Ensure verify_access_token on this token returns False

        self.assertFalse(backend.verify_access_token(access_token))
        # Now activate the token, and assert that the token is marked as
        # activated in the database.
        backend.activate(access_token)

        user_doc = self.db.users.find_one({"username":struct["username"]})
        doc_token = False
        for token in user_doc.get("access_tokens", []):
            if token.get("token") == access_token:
                self.assertTrue(token.get("activated_timestamp"))
                break


        # Ensure verify_access_token on this token returns the user_id
        userid = backend.verify_access_token(access_token)
        self.assertEquals(userid, str(user_doc["_id"]))