def test_thrower()

in libraries/botbuilder-applicationinsights/django_tests/tests.py [0:0]


    def test_thrower(self):
        """Tests that unhandled exceptions generate an exception telemetry item parented to the request telemetry item"""
        response = self.invoke_post("thrower")
        self.assertEqual(response.status_code, 500)

        errev, reqev = self.get_events(2)
        # reqev = self.get_events(1)

        # Check request event
        tags = reqev["tags"]
        data = reqev["data"]["baseData"]
        reqid = tags["ai.operation.id"]
        self.assertEqual(
            reqev["name"], "Microsoft.ApplicationInsights.Request", "Event type"
        )
        self.assertEqual(reqev["iKey"], TEST_IKEY)
        self.assertEqual(data["id"], reqid, "Request id")
        self.assertEqual(data["responseCode"], 500, "Response code")
        self.assertEqual(data["success"], False, "Success value")
        self.assertEqual(data["name"], "POST /thrower", "Request name")
        self.assertEqual(data["url"], "http://testserver/thrower", "Request url")
        self.assertTrue(reqid, "Request id not empty")
        self.assertEqual(tags["ai.user.id"], "SLACKFROMID")
        self.assertEqual(tags["ai.session.id"], "CONVERSATIONID")
        self.assertEqual(data["properties"]["channelId"], "SLACK", "channelId=SLACK")
        self.assertEqual(
            data["properties"]["activityId"], "bf3cc9a2f5de...", "activityID is set"
        )
        self.assertEqual(
            data["properties"]["activityType"], "message", "activityType == message"
        )

        # Check exception event
        tags = errev["tags"]
        data = errev["data"]["baseData"]
        self.assertEqual(
            errev["name"], "Microsoft.ApplicationInsights.Exception", "Event type"
        )
        self.assertEqual(tags["ai.operation.parentId"], reqid, "Exception parent id")
        self.assertEqual(len(data["exceptions"]), 1, "Exception count")
        exc = data["exceptions"][0]
        self.assertEqual(exc["typeName"], "ValueError", "Exception type")
        self.assertEqual(exc["hasFullStack"], True, "Has full stack")
        self.assertEqual(
            exc["parsedStack"][0]["method"], "thrower", "Stack frame method name"
        )
        self.assertEqual(tags["ai.user.id"], "SLACKFROMID")
        self.assertEqual(tags["ai.session.id"], "CONVERSATIONID")
        self.assertEqual(data["properties"]["channelId"], "SLACK", "channelId=SLACK")
        self.assertEqual(
            data["properties"]["activityId"], "bf3cc9a2f5de...", "activityID is set"
        )
        self.assertEqual(
            data["properties"]["activityType"], "message", "activityType == message"
        )