public async Task Should_Send_TransferRequest_To_VhoOfficers_Group_And_Judge() { var participantUsername = "******"; var conference = InitConference(participantUsername); var participant = conference.Participants.First(x => x.Username == participantUsername); var judge = conference.Participants.First(x => x.Role == Role.Judge); var judgeName = judge.Username; var conferenceId = conference.Id; var participantId = participant.Id; var transferDirection = TransferDirection.In; ConferenceCacheMock.Setup(cache => cache.GetOrAddConferenceAsync(conference.Id, It.IsAny <Func <Task <ConferenceDetailsResponse> > >())) .Callback(async(Guid anyGuid, Func <Task <ConferenceDetailsResponse> > factory) => await factory()) .ReturnsAsync(conference); var mockAdminClient = new Mock <IEventHubClient>(); var mockParticipantClient = new Mock <IEventHubClient>(); var mockJudgeClient = new Mock <IEventHubClient>(); EventHubClientMock.Setup(x => x.Group(EventHub.Hub.EventHub.VhOfficersGroupName)).Returns(mockAdminClient.Object); EventHubClientMock.Setup(x => x.Group(participantUsername.ToLowerInvariant())).Returns(mockParticipantClient.Object); EventHubClientMock.Setup(x => x.Group(judgeName.ToLowerInvariant())).Returns(mockJudgeClient.Object); await Hub.SendTransferRequest(conferenceId, participantId, transferDirection); mockAdminClient.Verify ( x => x.HearingTransfer ( conferenceId, participantId, transferDirection ), Times.Once ); mockParticipantClient.Verify ( x => x.HearingTransfer ( conferenceId, participantId, transferDirection ), Times.Once ); mockJudgeClient.Verify ( x => x.HearingTransfer ( conferenceId, participantId, transferDirection ), Times.Once ); }
private void SetupSendMessageTests() { Conference = InitConference(); AdminUserProfile = InitProfile(AdminUsername, "VhOfficer"); JudgeUserProfile = InitProfile(JudgeUsername, Role.Judge.ToString()); IndividualUserProfile = InitProfile(IndividualUsername, Role.Individual.ToString()); RepresentativeUserProfile = InitProfile(RepresentativeUsername, Role.Representative.ToString()); ConferenceCacheMock.Setup(cache => cache.GetOrAddConferenceAsync(Conference.Id, It.IsAny <Func <Task <ConferenceDetailsResponse> > >())) .Callback(async(Guid anyGuid, Func <Task <ConferenceDetailsResponse> > factory) => await factory()) .ReturnsAsync(Conference); ConferenceGroupChannel = new Mock <IEventHubClient>(); // only admins register to this JudgeGroupChannel = new Mock <IEventHubClient>(); IndividualGroupChannel = new Mock <IEventHubClient>(); RepresentativeGroupChannel = new Mock <IEventHubClient>(); AdminGroupChannel = new Mock <IEventHubClient>(); ConferenceCache = new Mock <IConferenceCache>(); UserProfileServiceMock.Setup(x => x.GetUserAsync(JudgeUsername)).ReturnsAsync(JudgeUserProfile); UserProfileServiceMock.Setup(x => x.GetUserAsync(IndividualUsername)).ReturnsAsync(IndividualUserProfile); UserProfileServiceMock.Setup(x => x.GetUserAsync(RepresentativeUsername)) .ReturnsAsync(RepresentativeUserProfile); UserProfileServiceMock.Setup(x => x.GetUserAsync(AdminUsername)).ReturnsAsync(AdminUserProfile); var judge = Conference.GetJudge(); var individual = Conference.Participants.First(p => p.Role == Role.Individual); var representative = Conference.Participants.First(p => p.Role == Role.Representative); IndividualParticipantId = individual.Id; JudgeParticipantId = judge.Id; RepresentativeParticipantId = representative.Id; EventHubClientMock.Setup(x => x.Group(EventHub.Hub.EventHub.VhOfficersGroupName)) .Returns(AdminGroupChannel.Object); EventHubClientMock.Setup(x => x.Group(Conference.Id.ToString())).Returns(ConferenceGroupChannel.Object); EventHubClientMock.Setup(x => x.Group(judge.Username.ToLowerInvariant())).Returns(JudgeGroupChannel.Object); EventHubClientMock.Setup(x => x.Group(individual.Username.ToLowerInvariant())) .Returns(IndividualGroupChannel.Object); EventHubClientMock.Setup(x => x.Group(representative.Username.ToLowerInvariant())) .Returns(RepresentativeGroupChannel.Object); ConferenceCache .Setup(x => x.GetOrAddConferenceAsync(Conference.Id, It.IsAny <Func <Task <ConferenceDetailsResponse> > >())) .Callback(async(Guid anyGuid, Func <Task <ConferenceDetailsResponse> > factory) => await factory()) .ReturnsAsync(Conference); }
public async Task Should_throw_error_on_send_heartbeat() { var conferenceId = Guid.NewGuid(); var participantId = Guid.NewGuid(); var heartbeat = new Heartbeat { BrowserName = "test_browser", BrowserVersion = "1", IncomingAudioPercentageLostRecent = 10.3m, OperatingSystem = "Mac OS X", OperatingSystemVersion = "10.15" }; var mockClient = new Mock <IEventHubClient>(); EventHubClientMock.Setup(x => x.Group(EventHub.Hub.EventHub.VhOfficersGroupName)).Returns(mockClient.Object); HeartbeatMapper.Setup(x => x.MapToHealth(heartbeat)).Returns(HeartbeatHealth.Good); mockClient.Setup ( x => x.ReceiveHeartbeat(conferenceId, participantId, HeartbeatHealth.Good, heartbeat.BrowserName, heartbeat.BrowserVersion, heartbeat.OperatingSystem, heartbeat.OperatingSystemVersion) ).Throws <Exception>(); var addHeartbeatRequest = new AddHeartbeatRequest { Browser_name = heartbeat.BrowserName, Browser_version = heartbeat.BrowserVersion, Incoming_audio_percentage_lost_recent = 10.3 }; HeartbeatMapper.Setup(x => x.MapToRequest(heartbeat)).Returns(addHeartbeatRequest); await Hub.SendHeartbeat(conferenceId, participantId, heartbeat); VideoApiClientMock.Verify ( x => x.SaveHeartbeatDataForParticipantAsync(conferenceId, participantId, addHeartbeatRequest), Times.Never ); }
public async Task Should_send_heartbeat_to_vhofficers_group_from_judge() { const string participantUsername = "******"; var conference = InitConference(participantUsername); var judge = conference.Participants.First(x => x.Role == Role.Judge); var judgeUserName = judge.Username; var conferenceId = conference.Id; var judgeId = judge.Id; var heartbeat = new Heartbeat { BrowserName = "test_browser", BrowserVersion = "1", IncomingAudioPercentageLostRecent = 10.3m, OperatingSystem = "Mac OS X", OperatingSystemVersion = "10.15" }; ConferenceCacheMock.Setup(cache => cache.GetOrAddConferenceAsync(conference.Id, It.IsAny <Func <Task <ConferenceDetailsResponse> > >())) .Callback(async(Guid anyGuid, Func <Task <ConferenceDetailsResponse> > factory) => await factory()) .ReturnsAsync(conference); var mockAdminClient = new Mock <IEventHubClient>(); var mockParticipantClient = new Mock <IEventHubClient>(); var mockJudgeClient = new Mock <IEventHubClient>(); EventHubClientMock.Setup(x => x.Group(EventHub.Hub.EventHub.VhOfficersGroupName)).Returns(mockAdminClient.Object); EventHubClientMock.Setup(x => x.Group(participantUsername.ToLowerInvariant())).Returns(mockParticipantClient.Object); EventHubClientMock.Setup(x => x.Group(judgeUserName.ToLowerInvariant())).Returns(mockJudgeClient.Object); HeartbeatMapper.Setup(x => x.MapToHealth(heartbeat)).Returns(HeartbeatHealth.Good); var addHeartbeatRequest = new AddHeartbeatRequest { Browser_name = heartbeat.BrowserName, Browser_version = heartbeat.BrowserVersion, Incoming_audio_percentage_lost_recent = 10.3 }; HeartbeatMapper.Setup(x => x.MapToRequest(heartbeat)).Returns(addHeartbeatRequest); await Hub.SendHeartbeat(conferenceId, judgeId, heartbeat); mockAdminClient.Verify ( x => x.ReceiveHeartbeat ( conferenceId, judgeId, HeartbeatHealth.Good, heartbeat.BrowserName, heartbeat.BrowserVersion, heartbeat.OperatingSystem, heartbeat.OperatingSystemVersion ), Times.Once ); mockParticipantClient.Verify ( x => x.ReceiveHeartbeat ( conferenceId, judgeId, HeartbeatHealth.Good, heartbeat.BrowserName, heartbeat.BrowserVersion, heartbeat.OperatingSystem, heartbeat.OperatingSystemVersion ), Times.Never ); VideoApiClientMock.Verify ( x => x.SaveHeartbeatDataForParticipantAsync(conferenceId, judgeId, addHeartbeatRequest), Times.Once ); }