Example #1
0
        public async void GIVENTurnContext_WHENUpdateActivityInvoked_THENEventTelemetryIsBeingSent(
            InstrumentationSettings settings,
            ITurnContext turnContext,
            IFixture fixture)
        {
            // Arrange
            var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings);
            var activity        = new Activity
            {
                Type      = ActivityTypes.ConversationUpdate,
                ChannelId = fixture.Create <string>(),
            };

            Mock.Get(turnContext)
            .Setup(c => c.OnUpdateActivity(It.IsAny <UpdateActivityHandler>()))
            .Callback <UpdateActivityHandler>(h => h(null, activity, () =>
                                                     Task.FromResult((ResourceResponse)null)));
            const int    expectedNumberOfTelemetryProperties = 2;
            const string expectedTelemetryName = EventTypes.ConversationUpdate;

            // Act
            await instrumentation.OnTurnAsync(turnContext, null)
            .ConfigureAwait(false);

            // Assert
            this.mockTelemetryChannel.Verify(
                tc => tc.Send(It.Is <EventTelemetry>(t =>
                                                     t.Name == expectedTelemetryName &&
                                                     t.Properties.Count == expectedNumberOfTelemetryProperties &&
                                                     t.Properties[BotConstants.TypeProperty] == activity.Type &&
                                                     t.Properties[BotConstants.ChannelProperty] == activity.ChannelId)),
                Times.Once);
        }
Example #2
0
        public async void GIVENEmptyTurnContext_WHENOnTurnAsyncIsInvoked_THENExceptionIsBeingThrown(
            InstrumentationSettings settings)
        {
            // Arrange
            var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings);
            const ITurnContext emptyTurnContext = null;
            NextDelegate       nextDelegate     = Task.FromCanceled;

            // Act
            // Assert
            await Assert.ThrowsAsync <ArgumentNullException>(() => instrumentation.OnTurnAsync(emptyTurnContext, nextDelegate))
            .ConfigureAwait(false);
        }
Example #3
0
        public async void GIVENNextTurn_WHENOnTurnAsyncIsInvoked_THENNextTurnIsBeingInvoked(
            InstrumentationSettings settings)
        {
            // Arrange
            var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings);
            var turnContext     = new Mock <ITurnContext>();
            var nextTurnInvoked = false;

            // Act
            await instrumentation.OnTurnAsync(turnContext.Object, token => Task.Run(() => nextTurnInvoked = true, token))
            .ConfigureAwait(false);

            // Assert
            nextTurnInvoked.Should().Be(true);
        }
Example #4
0
        public async void GIVENTurnContextWithAnyActivity_WHENOnTurnAsyncIsInvoked_THENEventTelemetryIsBeingSent(
            Activity activity,
            ITurnContext turnContext,
            InstrumentationSettings settings)
        {
            // Arrange
            var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings);

            Mock.Get(turnContext)
            .SetupGet(c => c.Activity)
            .Returns(activity);

            // Act
            await instrumentation.OnTurnAsync(turnContext, null)
            .ConfigureAwait(false);

            // Assert
            this.mockTelemetryChannel.Verify(tc => tc.Send(It.IsAny <EventTelemetry>()), Times.Once);
        }