Exemplo n.º 1
0
def test_sentry_works_fine_with_relative_paths():
    event = _create_exception_event_in_file("rasa/train.py")
    stripped = telemetry.strip_sensitive_data_from_sentry_event(event)

    assert stripped is not None

    stack_frames = stripped["exception"]["values"][0]["stacktrace"]["frames"]
    assert stack_frames[0]["filename"] == "rasa/train.py"
Exemplo n.º 2
0
def test_sentry_strips_absolute_path_from_dist_packages():
    event = _create_exception_event_in_file(
        "C:\\Users\\tmbo\\AppData\\Roaming\\Python\\Python35\\dist-packages\\rasa\\train.py"
    )
    stripped = telemetry.strip_sensitive_data_from_sentry_event(event)

    assert stripped is not None

    stack_frames = stripped["exception"]["values"][0]["stacktrace"]["frames"]
    assert stack_frames[0]["filename"] == f"dist-packages{os.path.sep}rasa\\train.py"
Exemplo n.º 3
0
def test_sentry_strips_absolute_path_from_site_packages():
    event = _create_exception_event_in_file(
        "/Users/tmbo/Library/Caches/pypoetry/virtualenvs/rasa-U5VQkfdm-py3.7/lib/python3.7/site-packages/rasa/train.py"
    )
    stripped = telemetry.strip_sensitive_data_from_sentry_event(event)

    assert stripped is not None

    stack_frames = stripped["exception"]["values"][0]["stacktrace"]["frames"]
    assert stack_frames[0]["filename"] == f"site-packages{os.path.sep}rasa/train.py"
Exemplo n.º 4
0
def test_sentry_event_pii_removal():
    # this is an example event taken from sentry (generated by putting a print
    # into `telemetry.strip_sensitive_data_from_sentry_event`)
    event = {
        "level": "error",
        "exception": {
            "values": [{
                "module": None,
                "type": "Exception",
                "value": "Some unexpected exception.",
                "mechanism": {
                    "type": "excepthook",
                    "handled": False
                },
                "stacktrace": {
                    "frames": [
                        {
                            "filename":
                            "rasa",
                            "abs_path":
                            "/Users/tmbo/Library/Caches/pypoetry/virtualenvs/rasa-U5VQkfdm-py3.6/bin/rasa",
                            "function":
                            "<module>",
                            "module":
                            "__main__",
                            "lineno":
                            33,
                            "pre_context": [
                                "globals().setdefault('load_entry_point', importlib_load_entry_point)",
                                "",
                                "",
                                "if __name__ == '__main__':",
                                "    sys.argv[0] = re.sub(r'(-script\\.pyw?|\\.exe)?$', '', sys.argv[0])",
                            ],
                            "context_line":
                            "    sys.exit(load_entry_point('rasa', 'console_scripts', 'rasa')())",
                            "post_context": [],
                        },
                        {
                            "filename":
                            "rasa/__main__.py",
                            "abs_path":
                            "/Users/tmbo/lastmile/bot-ai/rasa/rasa/__main__.py",
                            "function":
                            "main",
                            "module":
                            "rasa.__main__",
                            "lineno":
                            113,
                            "pre_context": [
                                "",
                                '    if hasattr(cmdline_arguments, "func"):',
                                "        rasa.utils.io.configure_colored_logging(log_level)",
                                "        set_log_and_warnings_filters()",
                                "        rasa.telemetry.initialize_error_reporting()",
                            ],
                            "context_line":
                            "        cmdline_arguments.func(cmdline_arguments)",
                            "post_context": [
                                '    elif hasattr(cmdline_arguments, "version"):',
                                "        print_version()",
                                "    else:",
                                "        # user has not provided a subcommand, let's print the help",
                                '        logger.error("No command specified.")',
                            ],
                            "in_app":
                            True,
                        },
                        {
                            "filename":
                            "rasa/cli/train.py",
                            "abs_path":
                            "/Users/tmbo/lastmile/bot-ai/rasa/rasa/cli/train.py",
                            "function":
                            "train",
                            "module":
                            "rasa.cli.train",
                            "lineno":
                            69,
                            "pre_context": [
                                "    training_files = [",
                                '        get_validated_path(f, "data", DEFAULT_DATA_PATH, none_is_valid=True)',
                                "        for f in args.data",
                                "    ]",
                                "",
                            ],
                            "context_line":
                            '    raise Exception("Some unexpected exception.")',
                            "post_context": [
                                "",
                                "    return rasa.train(",
                                "        domain=domain,",
                                "        config=config,",
                                "        training_files=training_files,",
                            ],
                            "in_app":
                            True,
                        },
                    ]
                },
            }]
        },
        "event_id": "73dd4980a5fd498d96fec2ee3ee0cb86",
        "timestamp": "2020-09-14T14:37:14.237740Z",
        "breadcrumbs": {
            "values": []
        },
        "release": "rasa-2.0.0a4",
        "environment": "production",
        "server_name": "99ec342261934892aac1784d1ac061c1",
        "sdk": {
            "name": "sentry.python",
            "version": "0.17.5",
            "packages": [{
                "name": "pypi:sentry-sdk",
                "version": "0.17.5"
            }],
            "integrations": ["atexit", "dedupe", "excepthook"],
        },
        "platform": "python",
    }
    stripped = telemetry.strip_sensitive_data_from_sentry_event(event)

    for value in stripped.get("exception", {}).get("values", []):
        for frame in value.get("stacktrace", {}).get("frames", []):
            # make sure absolute path got removed from all stack entries
            assert not frame.get("abs_path")
Exemplo n.º 5
0
def test_sentry_drops_error_in_custom_path():
    event = _create_exception_event_in_file("/my_project/mymodule.py")
    stripped = telemetry.strip_sensitive_data_from_sentry_event(event)

    assert stripped is None