Пример #1
0
        public void It_Should_Create_A_Chime_Meeting()
        {
            // Setup Mocks ============================================
            var user = new User()
            {
                id = Guid.NewGuid(), room = new Room()
                {
                    identifier = Guid.NewGuid()
                }
            };

            var unitOfWork = new Mock <IUnitOfWork>();

            unitOfWork.Setup(x => x.Save()).Returns(Task.CompletedTask);

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(x => x.FindById(It.IsAny <Guid>())).Returns(Task.FromResult(user));
            // ========================================================


            var request = new CreateChimeMeetingRequest();

            request.userIdentifier = user.id;

            var service = new ChimeService(unitOfWork.Object, userRepository.Object);

            Task <CreateChimeMeetingResponse> response = service.CreateChimeMeeting(request);

            Assert.IsInstanceOfType(response.Result, typeof(CreateChimeMeetingResponse));
            Assert.IsNull(response.Result.error);
            Assert.IsInstanceOfType(response.Result.attendeeResponse, typeof(Amazon.Chime.Model.CreateAttendeeResponse));
            Assert.IsInstanceOfType(response.Result.meetingResponse, typeof(Amazon.Chime.Model.CreateMeetingResponse));
        }
Пример #2
0
        public void Create_Chime_Meeting_Should_Return_Error_When_User_Is_Null()
        {
            // Setup Mocks ============================================
            var unitOfWork = new Mock <IUnitOfWork>();

            unitOfWork.Setup(x => x.Save()).Returns(Task.CompletedTask);

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(x => x.FindById(It.IsAny <Guid>())).Returns(Task.FromResult <User>(null));
            // ========================================================


            var request = new CreateChimeMeetingRequest();

            request.userIdentifier = Guid.NewGuid();

            var service = new ChimeService(unitOfWork.Object, userRepository.Object);

            try
            {
                Task <CreateChimeMeetingResponse> response = service.CreateChimeMeeting(request);
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(ApplicationError));
            }
        }
Пример #3
0
        public async Task CreateChimeMeeting(CreateChimeMeetingRequest request)
        {
            try
            {
                var ctx     = new ValidationContext(request);
                var results = new List <ValidationResult>();
                Validator.TryValidateObject(request, ctx, results, true);
                if (results.Count > 0)
                {
                    throw new ApplicationError("[CreateChimeMeeting]", 4);
                }

                var response = await _chimeService.CreateChimeMeeting(request);

                await Clients.Caller.ChimeMeetingCreated(response);
            }
            catch (Exception e)
            {
                var errorResponse = ApplicationError.GetError <CreateChimeMeetingResponse>(e, "[CreateChimeMeeting]");
                _logger.LogError(e.Message);
                await Clients.Caller.ChimeMeetingCreated(errorResponse);
            }
        }
Пример #4
0
        /**
         * Create a new chime meeting.
         * This video conference can be joined by others,
         * if they have the creator's meetingId
         */
        public async Task <CreateChimeMeetingResponse> CreateChimeMeeting(CreateChimeMeetingRequest payload)
        {
            try
            {
                var response = new CreateChimeMeetingResponse();

                MyChat.Domain.Model.User user = await _userRepository.FindById((Guid)payload.userIdentifier);

                if (user == null)
                {
                    throw new ApplicationError("CreateChimeMeeting.CreateChimeMeeting]", 1);
                }

                //TODO: interface this so our domain doesn't depend on an external service.
                var meetingResponse = await chime.CreateMeetingAsync(
                    new CreateMeetingRequest()
                {
                    ClientRequestToken = Guid.NewGuid().ToString(),
                    MediaRegion        = "eu-west-2"
                });

                var attendeeResponse = await chime.CreateAttendeeAsync(
                    new CreateAttendeeRequest()
                {
                    MeetingId      = meetingResponse.Meeting.MeetingId,
                    ExternalUserId = user.id.ToString()
                });

                response.meetingResponse  = meetingResponse;
                response.attendeeResponse = attendeeResponse;
                return(response);
            }
            catch (Exception e)
            {
                throw e;
            }
        }