def test_segment_does_not_raise_exception_on_failure(monkeypatch: MonkeyPatch): monkeypatch.setenv("RASA_TELEMETRY_ENABLED", "true") monkeypatch.setenv("RASA_TELEMETRY_WRITE_KEY", "foobar") telemetry.initialize_telemetry() with responses.RequestsMock() as rsps: rsps.add(responses.POST, "https://api.segment.io/v1/track", body="", status=505) # this call should complete without throwing an exception telemetry._track("test event", {"foo": "bar"}, {"foobar": "baz"}) assert rsps.assert_call_count("https://api.segment.io/v1/track", 1)
def test_track_sends_telemetry_id(monkeypatch: MonkeyPatch): monkeypatch.setenv("RASA_TELEMETRY_ENABLED", "true") telemetry.initialize_telemetry() mock = Mock() monkeypatch.setattr(telemetry, "_send_event", mock) telemetry._track("foobar", {"foo": "bar"}, {"baz": "foo"}) assert telemetry.get_telemetry_id() is not None mock.assert_called_once() call_args = mock.call_args[0] assert call_args[0] == telemetry.get_telemetry_id() assert call_args[1] == "foobar" assert call_args[2]["foo"] == "bar" assert call_args[2]["metrics_id"] == telemetry.get_telemetry_id() assert call_args[3]["baz"] == "foo"
def test_segment_gets_called(monkeypatch: MonkeyPatch): monkeypatch.setenv("RASA_TELEMETRY_WRITE_KEY", "foobar") monkeypatch.setenv("RASA_TELEMETRY_ENABLED", "true") telemetry.initialize_telemetry() with responses.RequestsMock() as rsps: rsps.add(responses.POST, "https://api.segment.io/v1/track", json={}) telemetry._track("test event", {"foo": "bar"}, {"foobar": "baz"}) assert len(rsps.calls) == 1 r = rsps.calls[0] assert r b = json.loads(r.request.body) assert "userId" in b assert b["event"] == "test event" assert b["properties"].get("foo") == "bar" assert b["context"].get("foobar") == "baz"
def test_track_ignore_exception(monkeypatch: MonkeyPatch): monkeypatch.setattr(telemetry, "_send_event", _mock_track_internal_exception) # If the test finishes without raising any exceptions, then it's successful assert telemetry._track("Test") is None