コード例 #1
0
        public async Task Should_send_endpoint_status_messages_to_clients(RoomType from, RoomType to,
                                                                          EndpointState status)
        {
            _eventHandler = new EndpointTransferEventHandler(EventHubContextMock.Object, ConferenceCache, LoggerMock.Object,
                                                             VideoApiClientMock.Object);

            var conference          = TestConference;
            var participantCount    = conference.Participants.Count + 1; // plus one for admin
            var participantForEvent = conference.Endpoints.First();
            var callbackEvent       = new CallbackEvent
            {
                EventType     = EventType.EndpointTransfer,
                EventId       = Guid.NewGuid().ToString(),
                ParticipantId = participantForEvent.Id,
                TransferFrom  = from,
                TransferTo    = to,
                ConferenceId  = conference.Id,
                Reason        = "JVC Connection",
                TimeStampUtc  = DateTime.UtcNow
            };

            await _eventHandler.HandleAsync(callbackEvent);

            // Verify messages sent to event hub clients
            EventHubClientMock.Verify(x => x.EndpointStatusMessage(participantForEvent.Id, conference.Id, status),
                                      Times.Exactly(participantCount));
        }
コード例 #2
0
        public void Should_throw_exception_when_transfer_cannot_be_mapped_to_endpoint_status_cannot_be_derived()
        {
            _eventHandler = new EndpointTransferEventHandler(EventHubContextMock.Object, ConferenceCache, LoggerMock.Object,
                                                             VideoApiClientMock.Object);

            var conference          = TestConference;
            var participantForEvent = conference.Endpoints.First();
            var callbackEvent       = new CallbackEvent
            {
                EventType     = EventType.EndpointTransfer,
                EventId       = Guid.NewGuid().ToString(),
                ParticipantId = participantForEvent.Id,
                ConferenceId  = conference.Id,
                Reason        = "JVC Connection",
                TimeStampUtc  = DateTime.UtcNow
            };

            Assert.ThrowsAsync <ArgumentException>(() => _eventHandler.HandleAsync(callbackEvent)).Message.Should()
            .Be($"Unable to derive state, no {nameof(callbackEvent.TransferTo)} provided (Parameter '{nameof(callbackEvent.TransferTo)}')");
            EventHubClientMock.Verify(x => x.EndpointStatusMessage(participantForEvent.Id, conference.Id, It.IsAny <EndpointState>()),
                                      Times.Never);
        }
コード例 #3
0
        public void Should_throw_exception_when_transfer_cannot_be_mapped_to_endpoint_status_cannot_be_derived()
        {
            _eventHandler = new EndpointTransferEventHandler(EventHubContextMock.Object, ConferenceCache, LoggerMock.Object,
                                                             VideoApiClientMock.Object);

            var conference          = TestConference;
            var participantForEvent = conference.Endpoints.First();
            var callbackEvent       = new CallbackEvent
            {
                EventType     = EventType.EndpointTransfer,
                EventId       = Guid.NewGuid().ToString(),
                ParticipantId = participantForEvent.Id,
                ConferenceId  = conference.Id,
                Reason        = "JVC Connection",
                TimeStampUtc  = DateTime.UtcNow
            };

            Assert.ThrowsAsync <RoomTransferException>(() => _eventHandler.HandleAsync(callbackEvent)).Message.Should()
            .StartWith("Unable to process TransferEvent from").And.EndWith("to a status");
            // Verify messages sent to event hub clients
            EventHubClientMock.Verify(x => x.EndpointStatusMessage(participantForEvent.Id, conference.Id, It.IsAny <EndpointState>()),
                                      Times.Never);
        }