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)
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)
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"])
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)
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)
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