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_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()
 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()