def test_deleting_user_releases_username(self): clock = mock_datetime.MockDatetime() u1 = self.make_user("bob") self.assertTrue(u1.claim_username("bob")) self.assertFalse(UniqueUsername.is_available_username("bob", clock=clock)) u1.delete(clock=clock) # We don't do anything special to delete it immediately, so it's still # in the holding period. clock.advance(UniqueUsername.HOLDING_PERIOD_DELTA) clock.advance(datetime.timedelta(1)) self.assertTrue(UniqueUsername.is_available_username("bob", clock=clock))
def test_user_name_validates_length_requirement(self): # This test verifies that the multiple places that verify a username's # length are in sync. for i in range(10): candidate = 'a' * i self.assertEquals( not UniqueUsername.is_username_too_short(candidate), self.validate(candidate))
def test_username_matching(self): self.assertTrue(UniqueUsername.matches("superbob", "super.bob")) self.assertTrue(UniqueUsername.matches("superbob", "SuperBob")) self.assertFalse(UniqueUsername.matches("superbob", "fakebob"))
def test_usernames_dont_match_if_invalid(self): self.assertFalse(UniqueUsername.matches(None, None)) self.assertFalse(UniqueUsername.matches("superbob", None)) self.assertFalse(UniqueUsername.matches("superbob", "i n v a l id"))
def k(n): return UniqueUsername.build_key_name(n)
def validate(self, username): return UniqueUsername.is_valid_username(username)
def tearDown(self): # Clear all usernames just to be safe for u in UniqueUsername.all(): u.delete() super(UsernameTest, self).tearDown()