Beispiel #1
0
    def test_users(self):
        """Test whether waltz.User (of base type Account) interfaces
        with LazyDB correctly and behaves expectedly
        """
        # Setting up waltz web.py env variables for db()
        web.ctx.waltz = storage()
        web.ctx.waltz.db = "db"

        u1 = User.register(USERNAME, PASSWD, **USER_FIELDS)
        u1.email = EMAIL
        u1.save()
        u2 = User.get(USERNAME)
        u3 = User.register(USERNAME[::-1], PASSWD, **USER_FIELDS)

        self.assertTrue(u1["username"] == USERNAME, "<waltz.User.register> Registration " "returned invalid user dict")
        print User.get(USERNAME)
        self.assertTrue(User.get(USERNAME).email == EMAIL, "Failed to save / update User record")
        self.assertTrue(u1.authenticate(PASSWD), "User.authenticate Failed")
        self.assertTrue(
            u2 is not None,
            "<waltz.User.register> " "Registration failed, no such entry " "indexed by {'username': '******'}" % USERNAME,
        )
        self.assertTrue(
            all(item in u2.items() for item in USER_FIELDS.items()),
            "<waltz.User.get> Expected stored data did not match " "actual data indexed by waltz 'user' LazyDB.",
        )
        User.replace(USERNAME, u3)
        self.assertTrue(
            User.get(USERNAME)["username"] == USERNAME[::-1], "<waltz.User.replace> Failed to replace username"
        )
        u4 = User.get(USERNAME[::-1], safe=True)
        self.assertTrue(
            not getattr(u4, "uhash", False),
            "User.get(%s, safe=True) did not remove uhash field " "as would be expected" % USERNAME[::-1],
        )
        users = User.getall()
        self.assertTrue(len(users) == 2, "Users db has incorrect # users: " "%s (%s)" % (len(users), users))
        users2 = User.getall(safe=True)
        self.assertTrue(
            "uhash" not in users2[USERNAME].keys(),
            "User.getall(safe=True) did not remove uhash field " "as would be expected",
        )
        self.assertTrue(
            User.delete(USERNAME) is not None, "<waltz.User.delete> " "Failed to delete user: %s" % USERNAME
        )