def testDisallowed5(self): """ Testing on a bigger database """ resetTestDB() conn = connectDB(TOY_DB_PATH) c = conn.cursor() # Add To USERS Table for i in range(1, 1001): c.execute(''' INSERT INTO USERS VALUES ({}, "foo") '''.format(i)) c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (1, "foo", "2018-06-15", "2018-06-15") ''') conn.commit() self.assertEqual( len(findDisallowedUsers.returnDisallowedUsers(TOY_DB_PATH)), 1000) resolveDisallowed.resolveDisallowedUsers(TOY_DB_PATH) c.execute(''' SELECT * FROM USERS ''') rows = c.fetchall() self.assertEqual(rows[0], (1, "foo1")) self.assertEqual(rows[999], (1000, "foo1000")) c.close() conn.close()
def testDisallowed1(self): """ Banned = [foo] => foo, foo, foo --> foo1, foo2, foor3 """ resetTestDB() conn = connectDB(TOY_DB_PATH) c = conn.cursor() # Add To USERS Table c.execute(''' INSERT INTO USERS VALUES (1, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (2, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (3, "foo") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (1, "foo", "2018-06-15", "2018-06-15") ''') conn.commit() # Also test findDisallowedUsers using ReturnDiallowedUsers self.assertEqual( len(findDisallowedUsers.returnDisallowedUsers(TOY_DB_PATH)), 3) resolveDisallowed.resolveDisallowedUsers(TOY_DB_PATH) c.execute(''' SELECT * FROM USERS ''') # Expected No Duplicates rows = c.fetchall() self.assertEqual(rows[0], (1, "foo1")) self.assertEqual(rows[1], (2, "foo2")) self.assertEqual(rows[2], (3, "foo3")) c.close() conn.close()
def testResolveDisallowed(self): """ Testing to see if Disallowed usernames are fixed """ resetDB(DB_COPY_PATH, getPath()) # 1. check duplicates exist -- row is list of disallowed user tuples row = findDisallowedUsers.returnDisallowedUsers(getPath()) self.assertTrue(len(row) > 0) resolveDisallowed.resolveDisallowedUsers(getPath()) # 2. list of tuples should be empty after resolving disallowed row = findDisallowedUsers.returnDisallowedUsers(getPath()) self.assertEqual(len(row), 0)
def testResolvingBoth(self): """ Resolving Duplicates and Disallowed should fix both """ resetDB(DB_COPY_PATH, getPath()) resolveDisallowed.resolveDisallowedUsers(getPath()) resolveCollisions.resolveUsernameCollisions(getPath()) self.assertTrue(checkDuplicatesAll(getPath())) row = findDisallowedUsers.returnDisallowedUsers(getPath()) self.assertEqual(len(row), 0) # both directions should be the same resetDB(DB_COPY_PATH, getPath()) resolveCollisions.resolveUsernameCollisions(getPath()) resolveDisallowed.resolveDisallowedUsers(getPath()) self.assertTrue(checkDuplicatesAll(getPath())) row = findDisallowedUsers.returnDisallowedUsers(getPath()) self.assertEqual(len(row), 0)
def testDisallowed4(self): """ Banned = [foo, foo2, foo4] => foo, foo2, foo, foo21, foo => foo1, foo22, foo3, foo21, foo5 """ resetTestDB() conn = connectDB(TOY_DB_PATH) c = conn.cursor() # Add To USERS Table c.execute(''' INSERT INTO USERS VALUES (1, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (2, "foo2") ''') c.execute(''' INSERT INTO USERS VALUES (3, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (4, "foo21") ''') c.execute(''' INSERT INTO USERS VALUES (5, "foo") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (1, "foo", "2018-06-15", "2018-06-15") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (2, "foo2", "2018-06-15", "2018-06-15") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (3, "foo4", "2018-06-15", "2018-06-15") ''') conn.commit() self.assertEqual( len(findDisallowedUsers.returnDisallowedUsers(TOY_DB_PATH)), 4) resolveDisallowed.resolveDisallowedUsers(TOY_DB_PATH) c.execute(''' SELECT * FROM USERS ''') rows = c.fetchall() self.assertEqual(rows[0], (1, "foo1")) self.assertEqual(rows[1], (2, "foo22")) self.assertEqual(rows[2], (3, "foo3")) self.assertEqual(rows[3], (4, "foo21")) self.assertEqual(rows[4], (5, "foo5")) c.close() conn.close()
def testDisallowed3(self): """ Banned = [foo, foo1, foo3] => foo, foo, foo => foo2, foo4, foo5 """ resetTestDB() conn = connectDB(TOY_DB_PATH) c = conn.cursor() # Add To USERS Table c.execute(''' INSERT INTO USERS VALUES (1, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (2, "foo") ''') c.execute(''' INSERT INTO USERS VALUES (3, "foo") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (1, "foo", "2018-06-15", "2018-06-15") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (2, "foo1", "2018-06-15", "2018-06-15") ''') c.execute(''' INSERT INTO DISALLOWED_USERNAMES VALUES (3, "foo3", "2018-06-15", "2018-06-15") ''') conn.commit() self.assertEqual( len(findDisallowedUsers.returnDisallowedUsers(TOY_DB_PATH)), 3) resolveDisallowed.resolveDisallowedUsers(TOY_DB_PATH) c.execute(''' SELECT * FROM USERS ''') # Expected No Change since no collision rows = c.fetchall() self.assertEqual(rows[0], (1, "foo2")) self.assertEqual(rows[1], (2, "foo4")) self.assertEqual(rows[2], (3, "foo5")) c.close() conn.close()