コード例 #1
0
def _scrape(filename, mimetype):
    scraper = OfficeScraper(filename=os.path.join(BASEPATH,
                                                  mimetype.replace("/", "_"),
                                                  filename),
                            mimetype=mimetype)
    scraper.scrape_file()
    return scraper.well_formed
コード例 #2
0
def test_is_supported(mime, ver):
    """Test is_supported method."""
    assert OfficeScraper.is_supported(mime, ver, True)
    assert OfficeScraper.is_supported(mime, None, True)
    assert not OfficeScraper.is_supported(mime, ver, False)
    assert OfficeScraper.is_supported(mime, "foo", True)
    assert not OfficeScraper.is_supported("foo", ver, True)
コード例 #3
0
def test_no_wellformed():
    """Test scraper without well-formed check."""
    scraper = OfficeScraper("tests/data/application_msword/valid_11.0.doc",
                            False)
    scraper.scrape_file()
    assert partial_message_included("Skipping scraper", scraper.messages())
    assert scraper.well_formed is None
コード例 #4
0
def test_is_supported(mime, ver):
    """
    Test is_supported method.

    :mime: MIME type
    :ver: File format version
    """
    assert OfficeScraper.is_supported(mime, ver, True)
    assert OfficeScraper.is_supported(mime, None, True)
    assert not OfficeScraper.is_supported(mime, ver, False)
    assert OfficeScraper.is_supported(mime, "foo", True)
    assert not OfficeScraper.is_supported("foo", ver, True)
コード例 #5
0
def test_scraper_invalid_file(filename, mimetype, evaluate_scraper):
    """Test scraper with invalid files."""
    result_dict = {
        "purpose": "Test invalid file.",
        "stdout_part": "",
        "stderr_part": "source file could not be loaded"
    }
    correct = parse_results(filename, mimetype, result_dict, True)
    scraper = OfficeScraper(correct.filename, True, correct.params)
    scraper.scrape_file()
    correct.streams[0]["version"] = "(:unav)"
    correct.streams[0]["mimetype"] = "(:unav)"

    evaluate_scraper(scraper, correct)
コード例 #6
0
def test_forced_filetype(result_dict, filetype, evaluate_scraper):
    """
    Test using user-supplied MIME-types and versions.
    """
    filetype[six.text_type(
        "correct_mimetype")] = "application/vnd.oasis.opendocument.spreadsheet"
    correct = force_correct_filetype("valid_1.1.ods", result_dict, filetype,
                                     ["(:unav)"])

    params = {
        "mimetype": filetype["given_mimetype"],
        "version": filetype["given_version"]
    }
    scraper = OfficeScraper(correct.filename, True, params)
    scraper.scrape_file()

    evaluate_scraper(scraper, correct)
コード例 #7
0
def test_scraper_invalid_file(filename, mimetype, evaluate_scraper):
    """
    Test scraper with invalid files.

    :filename: Test file name
    :mimetype: File MIME type
    """
    result_dict = {
        "purpose": "Test invalid file.",
        "stdout_part": "",
        "stderr_part": "source file could not be loaded"
    }
    correct = parse_results(filename, mimetype, result_dict, True)
    scraper = OfficeScraper(filename=correct.filename, mimetype=mimetype)
    scraper.scrape_file()
    correct.streams[0]["version"] = UNAV
    correct.streams[0]["mimetype"] = UNAV

    evaluate_scraper(scraper, correct)
コード例 #8
0
def test_scraper_correct_application(filename, mimetype, application):
    """
    Test that the correct LibreOffice application is selected.

    If all necessary LibreOffice components are not installed, some files may
    be scraped with a different application than intended (e.g. using Impress
    for ODG files), and this may work, but it should not be relied on. This
    test makes sure that all components are present and they are used for the
    correct files.

    :filename: Test file name
    :mimetype: File MIME type
    :application: Correct office application
    """
    testfile = os.path.join("tests/data", mimetype.replace("/", "_"), filename)

    scraper = OfficeScraper(filename=testfile, mimetype=mimetype)
    scraper.scrape_file()

    assert partial_message_included("using filter : {}".format(application),
                                    scraper.messages())
コード例 #9
0
def test_scraper_valid_file(filename, mimetype, evaluate_scraper):
    """
    Test valid files with scraper.

    :filename: Test file name
    :mimetype: File MIME type
    """
    correct = parse_results(filename, mimetype, {}, True)
    scraper = OfficeScraper(filename=correct.filename, mimetype=mimetype)
    scraper.scrape_file()
    correct.update_mimetype(UNAV)
    correct.update_version(UNAV)

    evaluate_scraper(scraper, correct, False)
    assert scraper.messages()
    assert not scraper.errors()
コード例 #10
0
def test_scraper_valid_file(filename, mimetype, evaluate_scraper):
    """Test valid files with scraper."""
    result_dict = {
        "purpose": "Test valid file.",
        "stdout_part": "",
        "stderr_part": ""
    }
    correct = parse_results(filename, mimetype, result_dict, True)
    scraper = OfficeScraper(correct.filename, True, correct.params)
    scraper.scrape_file()
    correct.streams[0]["version"] = "(:unav)"
    correct.streams[0]["mimetype"] = "(:unav)"

    evaluate_scraper(scraper, correct, False)
    assert scraper.messages()
    assert not scraper.errors()