示例#1
0
def test_get_ocw_overwrite(
    mocker, settings, mock_course_index_functions, mock_blacklist, overwrite
):
    """Test that courses are overridden if force_overwrite=True"""
    setup_s3(settings)

    # run ocw sync
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=mock_blacklist.return_value,
        force_overwrite=False,
        upload_to_s3=True,
    )
    assert Course.objects.count() == 1
    assert CoursePrice.objects.count() == 1
    assert CourseInstructor.objects.count() == 1
    assert CourseTopic.objects.count() == 3

    mock_digest = mocker.patch("course_catalog.api.digest_ocw_course")
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=mock_blacklist.return_value,
        force_overwrite=overwrite,
        upload_to_s3=True,
    )
    assert mock_digest.call_count == (1 if overwrite else 0)
示例#2
0
def test_get_ocw_typeerror(mocker, settings):
    """Test that a course is skipped if digest_ocw_course returns None"""
    setup_s3(settings)
    mock_info_logger = mocker.patch("course_catalog.api.log.info")
    mocker.patch("course_catalog.api.digest_ocw_course", return_value=None)
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=[],
        force_overwrite=True,
        upload_to_s3=True,
    )
    mock_info_logger.assert_any_call("Course and run not returned, skipping")
示例#3
0
def test_get_ocw_data_error_reading_s3(settings, mocker, mock_logger, mocked_celery):
    """
    Test that an error reading from S3 is correctly logged
    """
    mocker.patch("course_catalog.api.get_s3_object_and_read", side_effect=Exception)
    setup_s3(settings)
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=[],
        force_overwrite=False,
        upload_to_s3=True,
    )
    mock_logger.assert_called_once_with(
        "Error encountered reading 1.json for %s",
        "PROD/9/9.15/Fall_2007/9-15-biochemistry-and-pharmacology-of-synaptic-transmission-fall-2007/",
    )
示例#4
0
def test_get_ocw_data_error_parsing(settings, mocker, mock_logger, mocked_celery):
    """
    Test that an error parsing ocw data is correctly logged
    """
    mocker.patch(
        "course_catalog.api.OCWParser.setup_s3_uploading", side_effect=Exception
    )
    setup_s3(settings)
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=[],
        force_overwrite=False,
        upload_to_s3=True,
    )
    mock_logger.assert_any_call(
        "Error encountered parsing OCW json for %s", TEST_PREFIX
    )
示例#5
0
def test_get_ocw_data_upload_all_or_image(settings, mocker, image_only, mocked_celery):
    """
    Test that the ocw parser uploads all files or just images depending on settings
    """
    settings.OCW_UPLOAD_IMAGE_ONLY = image_only
    mock_upload_all = mocker.patch(
        "course_catalog.api.OCWParser.upload_all_media_to_s3"
    )
    mock_upload_image = mocker.patch("course_catalog.api.OCWParser.upload_course_image")
    setup_s3(settings)
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=[],
        force_overwrite=False,
        upload_to_s3=True,
    )
    assert mock_upload_image.call_count == (1 if image_only else 0)
    assert mock_upload_all.call_count == (0 if image_only else 1)
示例#6
0
def test_get_ocw_courses(
    settings, mock_course_index_functions, mocked_celery, mock_blacklist, blacklisted
):
    """
    Test ocw sync task
    """
    setup_s3(settings)
    if blacklisted:
        mock_blacklist.return_value = ["9.15"]

    # run ocw sync
    get_ocw_courses.delay(
        course_prefixes=[TEST_PREFIX],
        blacklist=mock_blacklist.return_value,
        force_overwrite=False,
        upload_to_s3=True,
    )
    assert Course.objects.count() == 1
    assert CoursePrice.objects.count() == 1
    assert CourseInstructor.objects.count() == 1
    assert CourseTopic.objects.count() == 3
    course = Course.objects.first()
    assert course.published is not blacklisted

    if not blacklisted:
        s3 = boto3.resource(
            "s3",
            aws_access_key_id=settings.OCW_LEARNING_COURSE_BUCKET_NAME,
            aws_secret_access_key=settings.OCW_LEARNING_COURSE_ACCESS_KEY,
        )
        # The filename was pulled from the uid 1.json in the TEST_JSON_PATH files.
        obj = s3.Object(
            settings.OCW_LEARNING_COURSE_BUCKET_NAME,
            "9-15-biochemistry-and-pharmacology-of-synaptic-transmission-fall-2007/16197636c270e1ab179fbc9a56c72787_master.json",
        )
        assert json.loads(obj.get()["Body"].read())
        assert course.image_src.startswith("http")
    else:
        assert course.image_src == ""