def signin(browser, student, new=False):
    email = student.student.email

    browser.get("{}{}".format(browser.server_url, reverse("login")))

    login_link = browser.find_element_by_link_text("LOGIN")
    login_link.click()

    input_ = browser.find_element_by_name("email")
    input_.clear()
    input_.send_keys(email)
    input_.send_keys(Keys.ENTER)

    username, _ = get_student_username_and_password(email)
    token = create_student_token(username, email)

    signin_link = "{}{}?token={}".format(browser.server_url,
                                         reverse("student-page"), token)

    browser.get(signin_link)

    if new:
        assert re.search(
            r"/(\w{2})/tos/tos/student/\?next=/\1/student/",
            browser.current_url,
        )
    else:
        assert re.search(r"/en/student/\?token=", browser.current_url)
Beispiel #2
0
    def test_standalone_student_exists(self):
        test = {"email": "test@localhost"}
        username, password = get_student_username_and_password(**test)
        Student.objects.create(student=User.objects.create_user(
            username=username, email=test["email"], password=password))

        user, is_lti = authenticate_student(HttpRequest(), **test)
        self.assertIsInstance(user, User)
Beispiel #3
0
    def test_standalone_user_exists_is_teacher(self):
        test = {"email": "test@localhost"}
        username, password = get_student_username_and_password(**test)
        Teacher.objects.create(user=User.objects.create_user(
            username=username, email=test["email"], password=password))

        user, is_lti = authenticate_student(HttpRequest(), **test)
        self.assertIsInstance(user, User)
        self.assertFalse(is_lti)
        self.assertFalse(
            Student.objects.filter(student__email=test["email"]).exists())
def test_fake_link(browser):
    email = "*****@*****.**"
    username, _ = get_student_username_and_password(email)
    token = create_student_token(username, email)

    signin_link = "{}{}?token={}".format(browser.server_url,
                                         reverse("student-page"), token)

    browser.get(signin_link)

    assert re.search(r"student/", browser.current_url)

    err = ("There is no user corresponding to the given link. "
           "You may try asking for another one.")
    browser.find_element_by_xpath("//*[contains(text(), '{}')]".format(err))
Beispiel #5
0
def get_students(n_students):
    emails = ["test-{}@test.com".format(i + 1) for i in range(n_students)]
    usernames_passwords = [
        get_student_username_and_password(email) for email in emails
    ]

    users = [
        User.objects.get_or_create(username=username[0], email=email)[0]
        for username, email in zip(usernames_passwords, emails)
    ]
    for user, password in zip(users, usernames_passwords):
        user.set_password(password[1])
        user.save()

    return [Student.objects.get_or_create(student=user)[0] for user in users]
Beispiel #6
0
    def test_lti_student_exists(self):
        test = {"email": "test@localhost"}
        user_id = test["email"][:-10]
        username, password = get_old_lti_student_username_and_password(user_id)
        Student.objects.create(student=User.objects.create_user(
            username=username, email=test["email"], password=password))
        new_username, _ = get_student_username_and_password(test["email"])

        user, is_lti = authenticate_student(HttpRequest(), **test)
        self.assertIsInstance(user, User)
        self.assertTrue(is_lti)
        self.assertEqual(len(User.objects.filter(email=test["email"])), 1)
        self.assertEqual(
            len(Student.objects.filter(student__email=test["email"])), 1)
        self.assertFalse(User.objects.filter(username=new_username).exists())
        self.assertFalse(
            Student.objects.filter(student__username=new_username).exists())
Beispiel #7
0
def login_student(client, student):
    username, password = get_student_username_and_password(
        student.student.email)
    return client.login(username=username, password=password)