Ejemplo n.º 1
0
 def test_get_dict_of_files_from_courses(self):
     """
     """
     dict_of_targets = TOD_Implementation.get_dict_of_files_from_courses(
         LTICourse.get_all_courses()
     )
     self.assertIsInstance(dict_of_targets, dict)
     self.assertTrue(len(dict_of_targets['Fake Course']) == 2)
     self.assertTrue(self.target1 in dict_of_targets['Fake Course'])
     self.assertTrue(self.target2 in dict_of_targets['Fake Course'])
Ejemplo n.º 2
0
def test_launchLti_user_scope_canvas_no_platform_created_ok(
    lti_path,
    lti_launch_url,
    lti_launch_params_factory,
):
    # have to set ORGANIZATION to something else than HARVARDX
    settings.ORGANIZATION = "ATG"

    # user and course don't exist yet
    instructor_name = "audre_lorde"
    instructor_edxid = "{}{}".format(randint(1000, 65534),
                                     randint(1000, 65534))
    user_roles = ["Administrator"]
    course_id = "hx+FancyCourse+TermCode+Year"
    resource_link_id = "some_string_to_be_the_FAKE_resource_link_id"

    params = lti_launch_params_factory(
        course_id=course_id,
        user_name=instructor_name,
        user_id=instructor_edxid,
        user_roles=user_roles,
        resource_link_id=resource_link_id,
        launch_url=lti_launch_url,
        course_name="{}+title".format(course_id),
    )

    client = Client(enforce_csrf_checks=False)
    response = client.post(
        lti_path,
        data=params,
    )
    assert response.status_code == 302
    assert response.cookies.get("sessionid")
    expected_url = (reverse("hx_lti_initializer:course_admin_hub") +
                    f"?resource_link_id={resource_link_id}" +
                    f"&utm_source={client.session.session_key}")
    assert response.url == expected_url

    # check user was created
    user = User.objects.get(username=instructor_name)
    assert user is not None
    lti_profile = LTIProfile.objects.get(anon_id=instructor_edxid)
    assert lti_profile is not None
    assert lti_profile.user.username == user.username
    # scope is course
    assert lti_profile.scope == "course:{}".format(course_id)

    # check course was created
    course = LTICourse.get_course_by_id(course_id)
    assert course is not None
    assert len(LTICourse.get_all_courses()) == 1
    assert course.course_admins.all()[0].anon_id == instructor_edxid
    assert course.course_name == "{}+title".format(course_id)
Ejemplo n.º 3
0
def test_LTICourse_get_all_courses(user_profile_factory):
    """
    Checks that all courses are returned regardless of admin user
    """
    profile1 = user_profile_factory(roles=["Instructor"])
    profile2 = user_profile_factory()

    user1 = LTIProfile.objects.get(user_id=profile1.user.pk)
    user2 = LTIProfile.objects.get(user_id=profile2.user.pk)

    list_of_courses = LTICourse.get_all_courses()
    assert isinstance(list_of_courses, list)
    assert len(list_of_courses) == 0

    LTICourse.create_course("test_course_id", user1)
    list_of_courses2 = LTICourse.get_all_courses()
    assert isinstance(list_of_courses2, list)
    assert len(list_of_courses2) == 1

    LTICourse.create_course("test_course_id2", user2)
    list_of_courses3 = LTICourse.get_all_courses()
    assert isinstance(list_of_courses3, list)
    assert len(list_of_courses3) == 2
Ejemplo n.º 4
0
def test_launchLti_user_course_ok_no_context_title(
    lti_path,
    lti_launch_url,
    lti_launch_params_factory,
):
    # user and course don't exist yet
    instructor_name = "sylvia_plath"
    instructor_edxid = "{}{}".format(randint(1000, 65534),
                                     randint(1000, 65534))
    user_roles = ["Administrator"]
    course_id = "hx+FANcyCourse+TermCode+Year"
    resource_link_id = "some_string_to_BE_THE_fake_resource_link_id"

    params = lti_launch_params_factory(
        course_id=course_id,
        user_name=instructor_name,
        user_id=instructor_edxid,
        user_roles=user_roles,
        resource_link_id=resource_link_id,
        launch_url=lti_launch_url,
        # 04feb20 naomi: context_title has to do with edx studio not
        # sending user_id in launch params to create course user.
        # course_name='{}+title'.format(course_id),
    )

    client = Client(enforce_csrf_checks=False)
    response = client.post(
        lti_path,
        data=params,
    )
    assert response.status_code == 302
    assert response.cookies.get("sessionid")
    expected_url = (reverse("hx_lti_initializer:course_admin_hub") +
                    f"?resource_link_id={resource_link_id}" +
                    f"&utm_source={client.session.session_key}")
    assert response.url == expected_url

    # check user was created
    user = User.objects.get(username=instructor_name)
    assert user is not None
    lti_profile = LTIProfile.objects.get(anon_id=instructor_edxid)
    assert lti_profile is not None
    assert lti_profile.user.username == user.username

    # check course was created
    course = LTICourse.get_course_by_id(course_id)
    assert course is not None
    assert len(LTICourse.get_all_courses()) == 1
    assert course.course_admins.all()[0].anon_id == instructor_edxid
    assert course.course_name.startswith("noname-")