示例#1
0
def test_merge_when_log_settings_is_null(default_log_settings):
    # It's valid to send None to log settings.
    # In that case, merging with another list would be a
    # mismatch. But just asking for null should be allowed.

    log_settings_some = default_log_settings.copy()
    log_settings_none = default_log_settings.copy()
    log_settings_some["propertiesToInstrument"] = ["name", "place"]
    log_settings_none["propertiesToInstrument"] = None
    input_1 = [
        {
            "object": "window.document",
            "instrumentedName": "window",
            "logSettings": log_settings_none,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_some,
        },
    ]
    actual_output = jsi._merge_settings(input_1)
    assert actual_output == input_1

    input_2 = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_some,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_none,
        },
    ]
    with pytest.raises(RuntimeError) as error:
        jsi._merge_settings(input_2)
    assert "Mismatching logSettings" in str(error.value)

    input_3 = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_none,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_some,
        },
    ]
    with pytest.raises(RuntimeError) as error:
        jsi._merge_settings(input_3)
    assert "Mismatching logSettings" in str(error.value)
示例#2
0
def test_merge_diff_instrumented_names(default_log_settings):
    dupe_input = [
        {
            "object": "window",
            "instrumentedName": "window1",
            "logSettings": default_log_settings,
        },
        {
            "object": "window",
            "instrumentedName": "window2",
            "logSettings": default_log_settings,
        },
    ]
    with pytest.raises(RuntimeError) as error:
        jsi._merge_settings(dupe_input)
    assert "Mismatching instrumentedNames" in str(error.value)
示例#3
0
def test_merge_and_validate_multiple_overlap_properties(default_log_settings):
    log_settings_1 = default_log_settings.copy()
    log_settings_2 = default_log_settings.copy()
    log_settings_merge = default_log_settings.copy()
    log_settings_1["propertiesToInstrument"] = ["name", "place"]
    log_settings_2["propertiesToInstrument"] = ["localStorage"]
    log_settings_merge["propertiesToInstrument"] = [
        "name", "place", "localStorage"
    ]
    dupe_input = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_1,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_2,
        },
    ]
    expected_de_dupe_output = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_merge,
        },
    ]
    actual_output = jsi._merge_settings(dupe_input)
    for key in ["object", "instrumentedName"]:
        assert expected_de_dupe_output[0][key] == actual_output[0][key]
    assert set(expected_de_dupe_output[0]["logSettings"]) == set(
        actual_output[0]["logSettings"])
示例#4
0
def test_merge_multiple_duped_properties_different_log_settings(
    default_log_settings, ):  # noqa
    log_settings_1 = default_log_settings.copy()
    log_settings_2 = default_log_settings.copy()
    log_settings_1["depth"] = 3
    log_settings_2["depth"] = 4
    dupe_input = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_1,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_2,
        },
    ]
    with pytest.raises(RuntimeError) as error:
        jsi._merge_settings(dupe_input)
    assert "Mismatching logSettings for object" in str(error.value)
示例#5
0
def test_merge_and_validate_multiple_overlap_properties_to_instrument_properties_to_exclude(
    default_log_settings, ):  # noqa
    log_settings_1 = default_log_settings.copy()
    log_settings_2 = default_log_settings.copy()
    log_settings_1["propertiesToInstrument"] = ["name", "place"]
    log_settings_2["excludedProperties"] = ["name"]
    dupe_input = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_1,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": log_settings_2,
        },
    ]
    merged = jsi._merge_settings(dupe_input)
    with pytest.raises(ValueError):
        jsi._validate(merged)
示例#6
0
def test_merge_multiple_duped_properties(default_log_settings):
    dupe_input = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": default_log_settings,
        },
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": default_log_settings,
        },
    ]
    expected_de_dupe_output = [
        {
            "object": "window",
            "instrumentedName": "window",
            "logSettings": default_log_settings,
        },
    ]
    assert jsi._merge_settings(dupe_input) == expected_de_dupe_output