コード例 #1
0
def testTrainingsAPIInput():
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS trainings")
    db.initTables(cursor)
    incollege.inputAPITrainings(cursor, connection)
    assert len(db.getAllTrainings(cursor)) <= len(API.createTrainings())
コード例 #2
0
def testJobsAPIInput():
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS jobs")
    db.initTables(cursor)
    incollege.inputAPIJobs(cursor, connection)
    assert db.getNumJobs(cursor) <= len(API.createJobs())
コード例 #3
0
def testInvalidFriendSearch(monkeypatch):  # todo: fix (broke because of change in findUser function)
    monkeypatch.setattr("sys.stdin", StringIO("2\n"))
    settings.currentState = states.userSearch
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first", "last", 0, "01/01/2020")
コード例 #4
0
def testStudentAccountAPIInput():
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    db.initTables(cursor)
    incollege.inputAPIUsers(cursor, connection)
    assert db.getNumUsers(cursor) <= len(API.createStudentAccounts())
コード例 #5
0
def testCreateUser():  # todo: potentially change this test to utilize createUser function from main program instead
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    # Initialize database and run insert function
    db.initTables(cursor)
    db.insertUser(cursor, "username", "password", "first", "last", 0, "01/01/2020")
    assert db.getUserByName(cursor, "username")  # Check successful insert
    connection.close()
コード例 #6
0
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"
コード例 #7
0
def testCreateStudentProfile():
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    db.insertProfilePage(cursor, "uname", "major", "university", "about")
    db.insertProfileEducation(cursor, "uname", "university_name", "user_degree", "2016", "2020")
    db.insertProfileJob(cursor, "uname", "title", "employer", "date_start", "date_end", "location", "job_description")
    assert db.getProfilePage(cursor, "uname") is not None
    assert db.getProfileJobs(cursor, "uname") is not None
    assert db.getProfileEducation(cursor, "uname") is not None
コード例 #8
0
def testMaxAccountsCreated(monkeypatch, capfd):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    for i in range(10):
        db.insertUser(cursor, f"username{i}", "password", f"first{i}", f"last{i}", 0, "01/01/2020")
    users.createUser(cursor, connection)
    out, err = capfd.readouterr()  # Output should display max users created
    assert out == "All permitted accounts have been created, please come back later\n"
    assert db.getNumUsers(cursor) == 10
コード例 #9
0
def testValidJobPost(monkeypatch):
    monkeypatch.setattr("sys.stdin", StringIO("Title\nDescription\nEmpName\nLocation\n1"))
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first", "last", 0, "01/01/2020")
    settings.signedInUname = "username1"
    jobs.postJob(cursor, connection)
    out = db.getJobByTitle(cursor, "Title")  # Confirms that job has been added into DB correctly
    assert out is not None
コード例 #10
0
def testInvalidUserLogin(monkeypatch, capfd):
    monkeypatch.setattr("sys.stdin", StringIO("username1\npassword\nusername2\npassword\n")) #invalid credentials first, valid credentials second
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    db.insertUser(cursor, "username2", "password", "first", "last", 0, "01/01/2020")
    settings.signedIn = False  # fix
    users.loginUser(cursor, connection)  # Fails because it gets trapped in while loop
    out, err = capfd.readouterr()
    assert "Enter your password: Incorrect" in out
    assert settings.signedIn
コード例 #11
0
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
コード例 #12
0
def testSendFriendRequest(monkeypatch):
    monkeypatch.setattr("sys.stdin", StringIO("A\nfirst2 last2\nY\n"))
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "2020-01-01 12:30:00")
    settings.signedInUname = "username1"
    settings.signedIn = True
    settings.currentState = states.userSearch
    users.findUser(cursor, connection)
    assert len(db.getUserFriendRequests(cursor, "username2")) == 1
コード例 #13
0
def testUserAlreadyExists(monkeypatch, capfd):
    monkeypatch.setattr("sys.stdin", StringIO("username1\nusername2\nPassword1!\nfname\nlname\nN\n")) #after username1 is taken, pick a different uname and exit menu
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS user_settings")
    cursor.execute("DROP TABLE IF EXISTS profile_page")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first", "last", 0, "01/01/2020")
    users.createUser(cursor, connection)
    out, err = capfd.readouterr()
    assert "Sorry, that username has already been taken" in out
    assert settings.currentState == states.loggedOut
コード例 #14
0
def testImportantLinks(monkeypatch, capfd):
    monkeypatch.setattr("sys.stdin", StringIO("f\nz\nz\nz\n"))
    settings.signedInUname = "username1"
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS profile_page")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertProfilePage(cursor, "username1", "major", "university", "about")
    settings.currentState = states.mainMenu
    ui.enterMainMenu(cursor, connection)
    out, err = capfd.readouterr()
    assert "Important Links" in out
コード例 #15
0
def testCreateMaxJobPosts(capfd):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS jobs")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "01/01/2020")
    for _ in range(10):
        db.insertJob(cursor, "title", "desc", "emp", "loc", "sal", "username1")
    jobs.postJob(cursor, connection)
    out, err = capfd.readouterr()
    assert "All permitted jobs have been created, please come back later.\n" in out
    assert db.getNumJobs(cursor) == 10
    assert settings.currentState == states.jobMenu
コード例 #16
0
def testApplyForJob(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS user_job_applications")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "01/01/2020")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "01/01/2020")
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    selectedJob = db.getAllJobs(cursor)[0]
    settings.signedInUname = "username2"
    monkeypatch.setattr("sys.stdin", StringIO("1\n01/01/1234\n01/02/1234\ncredentials\n"))
    jobs.applyForJob(cursor, connection, selectedJob)
    assert len(db.getAppliedJobs(cursor, "username2")) == 1
コード例 #17
0
def testFavoriteAJob(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS favorited_jobs")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "2020-01-01 12:30:00")
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    selectedJob = db.getAllJobs(cursor)[0]
    settings.signedInUname = "username2"
    monkeypatch.setattr("sys.stdin", StringIO("b\nz\n"))
    jobs.viewJobDetails(cursor, connection, selectedJob)
    assert len(db.getFavoriteJobsByUser(cursor, "username2")) == 1
コード例 #18
0
def testRemoveFriend(monkeypatch):
    monkeypatch.setattr("sys.stdin", StringIO("A\n1\nZ\n"))
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS user_friends")
    db.initTables(cursor)
    db.insertUser(cursor, "uname", "password", "first", "last", 0, "01/01/2020")
    db.insertUser(cursor, "friend_uname", "password", "first2", "last2", 0, "01/01/2020")
    db.insertUserFriend(cursor, "uname", "friend_uname")
    db.insertUserFriend(cursor, "friend_uname", "uname")
    settings.currentState = states.friendsMenu
    settings.signedInUname = "uname"
    ui.enterFriendsMenu(cursor, connection)
    assert settings.currentState == states.mainMenu
    assert len(db.getUserFriendsByName(cursor, "uname")) == 0
コード例 #19
0
def testDeleteJobPost(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "2020-01-01 12:30:00")
    settings.signedInUname = "username1"
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    db.insertJob(cursor, "title2", "desc2", "emp2", "loc2", "sal2", "first1 last1")
    assert db.getNumJobs(cursor) == 2
    db.insertUserJobApplication(cursor, "username2", "title1", "01/01/1243", "01/02/1243", "credentials", "2020-01-01 12:30:00")
    monkeypatch.setattr("sys.stdin", StringIO("1\nN\n"))
    jobs.enterDeleteAJobMenu(cursor, connection)
    assert db.getNumJobs(cursor) == 1
    assert len(db.getAppliedJobs(cursor, "username2")) == 0
コード例 #20
0
def testViewFriendList(monkeypatch, capfd):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    db.initTables(cursor)
    db.insertUser(cursor, "uname", "password", "first", "last", 0, "01/01/2020")
    db.insertUser(cursor, "friend_uname", "password", "first2", "last2", 0, "01/01/2020")
    db.insertUserFriend(cursor, "uname", "friend_uname")
    settings.currentState = states.friendsMenu
    settings.signedInUname = "uname"
    monkeypatch.setattr("sys.stdin", StringIO("Z\n"))
    ui.enterFriendsMenu(cursor, connection)
    out, err = capfd.readouterr()
    assert out is not None
    assert settings.currentState == states.mainMenu
    assert db.getUserFriendsByName(cursor, "uname") is not None
コード例 #21
0
def testProfileAddFourJobs(monkeypatch, capfd):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS profile_jobs")
    db.initTables(cursor)
    db.insertUser(cursor, "uname", "password", "first", "last", 0, "01/01/2020")
    db.insertProfilePage(cursor, "uname", "major", "university", "about")
    for _ in range(3):  # add 3 jobs
        db.insertProfileJob(cursor, "uname", "title", "employer", "date_start", "date_end", "location", "job_description")
    settings.currentState = states.profilePage #settings needed for enterProfilePageMenu to work
    settings.signedInUname = "uname"
    monkeypatch.setattr("sys.stdin", StringIO("a\nd\nz\nz\n")) #navigate menu. pressing d tries to add a new job which should fail
    profiles.enterProfilePageMenu(cursor, connection)
    out, err = capfd.readouterr()
    assert out is not None
    assert len(db.getProfileJobs(cursor, settings.signedInUname)) == 3
    assert settings.currentState == states.mainMenu
コード例 #22
0
def testAcceptFriendRequest(monkeypatch):
    monkeypatch.setattr("sys.stdin", StringIO("A\n"))
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS friend_requests")
    cursor.execute("DROP TABLE IF EXISTS user_friends")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "01/01/2020")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "01/01/2020")
    db.insertFriendRequest(cursor, "username1", "username2")
    settings.signedInUname = "username2"
    utils.handleUserFriendRequests(cursor, connection, settings.signedInUname)
    assert len(db.getUserFriendsByName(cursor, "username1")) == 1
    assert len(db.getUserFriendsByName(cursor, "username2")) == 1
    assert ((db.getUserFriendsByName(cursor, "username1"))[0])[0] == "username2"
    assert ((db.getUserFriendsByName(cursor, "username2"))[0])[0] == "username1"
コード例 #23
0
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
コード例 #24
0
ファイル: server.py プロジェクト: seveibar/rcos-attendance
            # Incorrect day code

            # Check if received number that was waiting
            if number in waitingNums:
                print "received number name", number,":", body

                # Add name and phone number to database
                database.addPhoneAndName(number, body)
                waitingNums.remove(number)
                form.send(number,body)
                return twilioResponse("Thanks " + body+ "! Your attendance has been recorded!")
            else:
                print "Received incorrect day code", number, ":", body
                return twilioResponse("Incorrect Day Code!")
    phone.exposed = True

    def slack(self, **params):
        if params["channel_id"] == "G033ULLLB":
            return getDayHash()[:4]
        else:
            return self.phone(From="@" + params["user_name"], Body=params["text"]).split("<Message>")[1].split("</Message>")[0]
    slack.exposed = True

database.initTables()
cherrypy.config.update({
    'server.socket_port': config.port,
    'server.socket_host': config.host
})
cherrypy.quickstart(PhoneServer())
コード例 #25
0
def install():
	try:
		initTables()
	except:
		pass
コード例 #26
0
def testAddFriend():
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    db.initTables(cursor)
    db.insertUserFriend(cursor, "uname", "friend_uname")
    assert db.getUserFriendsByName(cursor, "uname") is not None
コード例 #27
0
import profiles
import settings
import states
import ui
import users
import training
import API

# connect to database
connection = sqlite3.connect('inCollege.db')

# create cursor
cursor = connection.cursor()

# create tables if none exist
db.initTables(cursor)


# Create users
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
コード例 #28
0
def install():
    try:
        initTables()
    except:
        pass