def testUpdateUserLanguage(): connection = sqlite3.connect("incollege_test.db") cursor = connection.cursor() db.initTables(cursor) db.insertUserSettings(cursor, "testname", 1, 1, 1, "testlanguage") db.updateUserLanguage(cursor, "testname", "testlanguage2") userSetting = namedtuple('User', 'uname emailnotif smsnotif targetadvert languagepref') currentUser = userSetting._make(db.getUserSettingsByName(cursor, "testname")) assert currentUser.languagepref == "testlanguage2"
def testValidUserLogin(monkeypatch, capfd): connection = sqlite3.connect("incollege_test.db") cursor = connection.cursor() cursor.execute("DROP TABLE IF EXISTS Users") db.initTables(cursor) db.insertUser(cursor, "username1", "password", "first", "last", 0, "01/01/2020") db.insertUserSettings(cursor, "username1", "*****@*****.**", "123-123-1234", 0, "English") monkeypatch.setattr("sys.stdin", StringIO("username1\npassword\n")) # Patch in user input users.loginUser(cursor, connection) out, err = capfd.readouterr() # Output should display successfully sign in and state change assert "You have successfully logged in." in out assert settings.signedIn
def inputAPIUsers(dbCursor, dbConnection): today = date.today() # Get today's date date_format = "%m/%d/%Y" todayDate = today.strftime(date_format) # Format date mm/dd/yyyy currentDate = datetime.strptime(todayDate, date_format) # Today's date as a string user_count = db.getNumUsers(dbCursor) student_accounts = API.createStudentAccounts() if student_accounts: for obj in student_accounts: # only create up to 10 accounts, don't recreate accounts if user_count < 10 and db.getUserByFullName( dbCursor, obj.first_name, obj.last_name) is None: db.insertUser(dbCursor, obj.username, obj.password, obj.first_name, obj.last_name, obj.plus_member, currentDate) db.insertUserSettings(dbCursor, obj.username, settings.emailNotif, settings.smsNotif, settings.targetAdvert, settings.language) db.insertProfilePage(dbCursor, obj.username, "", "", "") user_count += 1 dbConnection.commit()
def createUser(dbCursor, connection): if db.getNumUsers( dbCursor ) >= constants.MAX_USER_ACCOUNTS: # checks if number of accounts in database is at max limit print( "All permitted accounts have been created, please come back later") settings.currentState = states.loggedOut # returns to main() w/ currentState = loggedOut return print( "Enter desired account credentials, or only press enter at any time to cancel account creation." ) uname = input("Enter your desired username: "******"": print("Account creation canceled.") settings.currentState = states.loggedOut return while db.getUserByName(dbCursor, uname): print("Sorry, that username has already been taken.") uname = input("Enter your desired username: "******"": print("Account creation canceled.") settings.currentState = states.loggedOut return pword = input("Enter your desired password: "******"": print("Account creation canceled.") settings.currentState = states.loggedOut return while not utils.validatePassword(pword): print( "Invalid password. Must be length 8-12 characters, contain one digit, one uppercase character, and one non-alphanumeric." ) pword = input("Enter your desired password: "******"": print("Account creation canceled.") settings.currentState = states.loggedOut return fname = input("Enter your first name: ") if fname == "": print("Account creation canceled.") settings.currentState = states.loggedOut return lname = input("Enter your last name: ") if lname == "": print("Account creation canceled.") settings.currentState = states.loggedOut return plusMember = input( "Sign up for InCollege-Plus membership? (Enter Y for Plus, N for Standard): " ) while True: if plusMember.upper() == "Y": plusMember = 1 break elif plusMember.upper() == "N": plusMember = 0 break else: print(constants.INVALID_INPUT) plusMember = input( "Sign up for InCollege-Plus membership? (Enter Y for Plus, N for Standard): " ) today = date.today() # Get today's date date_format = "%m/%d/%Y" todayDate = today.strftime(date_format) # Format date mm/dd/yyyy currentDate = datetime.strptime(todayDate, date_format) # Today's date as a string db.insertUser(dbCursor, uname, pword, fname, lname, plusMember, currentDate) db.insertUserSettings(dbCursor, uname, settings.emailNotif, settings.smsNotif, settings.targetAdvert, settings.language) db.insertProfilePage(dbCursor, uname, "", "", "") # add notification to let other users know a new student has joined other_users = db.getAllOtherUsers(dbCursor, uname) if len(other_users) > 0: for user in other_users: db.insertNotification(dbCursor, "new_student", fname + " " + lname, user[0]) connection.commit( ) # commits the new account and settings to the database (ensures account and settings are saved) API.outputUsers(dbCursor) API.outputProfiles(dbCursor) settings.currentState = states.loggedOut # returns to main() w/ currentState = loggedOut print("Account has been created.")
def testInsertUserSettings(): connection = sqlite3.connect("incollege_test.db") cursor = connection.cursor() db.initTables(cursor) db.insertUserSettings(cursor, "testname", 1, 1, 1, "testlanguage") assert db.getUserSettingsByName(cursor, "testname") is not None