Пример #1
0
        public void Validate_InvalidGuids_ThrowsError()
        {
            // given
            var invalidGuidString = "816c3a23-7568-40a1-b12-c65795fcbd";

            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = invalidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = "*****@*****.**",
                    BeginTime  = CreateUnixTimeOf(DateTime.Now),
                    EndTime    = CreateUnixTimeOf(DateTime.Now.AddDays(10))
                }
            };

            // when
            var ex = Assert.Throws <RpcException>(() => new CalendarInformationRequestValidator(_logger).Validate(request));

            // then
            Assert.Equal(StatusCode.InvalidArgument, ex.StatusCode);
            Assert.Contains("clientid is not a valid GUID", ex.Message);
        }
        private void ValidateEmptyString(CalendarInformationRequest request)
        {
            if (string.IsNullOrEmpty(request.Client?.ClientId))
            {
                _errors.Add(new Metadata.Entry("ClientId", EmptyStringMessage));
            }

            if (string.IsNullOrEmpty(request.Client?.TenantId))
            {
                _errors.Add(new Metadata.Entry("TenantId", EmptyStringMessage));
            }

            if (string.IsNullOrEmpty(request.Client?.ClientSecret))
            {
                _errors.Add(new Metadata.Entry("ClientSecret", EmptyStringMessage));
            }

            if (string.IsNullOrEmpty(request.Calendar?.CalendarId))
            {
                _errors.Add(new Metadata.Entry("CalendarId", EmptyStringMessage));
            }

            if (_errors.Any())
            {
                _logger.LogInformation($"Validation Errors: No empty Strings in Request {request.ToString()}");
                throw new RpcException(new Status(StatusCode.InvalidArgument, $"{GetErrorKeys()} {EmptyStringMessage}"), _errors);
            }
        }
Пример #3
0
        public void Validate_EndEqualToBeginTimestamp_NoError()
        {
            // given
            var timestamp = CreateUnixTimeOf(DateTime.Now);
            var request   = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = ValidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = "*****@*****.**",
                    BeginTime  = timestamp,
                    EndTime    = timestamp
                }
            };

            // when
            var actualValid = new CalendarInformationRequestValidator(_logger).Validate(request);

            // then
            Assert.True(actualValid);
        }
Пример #4
0
        public void Validate_EmptyParams_ThrowsError()
        {
            // given
            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId = string.Empty,
                    TenantId = string.Empty,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = string.Empty,
                    BeginTime  = CreateUnixTimeOf(DateTime.Now),
                    EndTime    = CreateUnixTimeOf(DateTime.Now.AddDays(10))
                }
            };

            // when
            var ex = Assert.Throws <RpcException>(() => new CalendarInformationRequestValidator(_logger).Validate(request));

            // then
            Assert.Equal(StatusCode.InvalidArgument, ex.StatusCode);
            Assert.Contains("clientid, tenantid, clientsecret, calendarid must not be empty", ex.Message);
        }
Пример #5
0
        public void Validate_EndBeforeBeginTimestamps_ThrowsError()
        {
            // given
            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = ValidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = "*****@*****.**",
                    BeginTime  = CreateUnixTimeOf(DateTime.Now),
                    EndTime    = CreateUnixTimeOf(DateTime.Now.AddSeconds(-5))
                }
            };

            // when
            var ex = Assert.Throws <RpcException>(() => new CalendarInformationRequestValidator(_logger).Validate(request));

            // then
            Assert.Equal(StatusCode.InvalidArgument, ex.StatusCode);
            Assert.Contains("timestamps not valid start_time and end_time", ex.Message);
        }
Пример #6
0
        public void Validate_NoErrorsFound()
        {
            // given
            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = ValidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = "*****@*****.**",
                    BeginTime  = CreateUnixTimeOf(DateTime.Now),
                    EndTime    = CreateUnixTimeOf(DateTime.Now.AddDays(10))
                }
            };

            // when
            var actualRequestIsValid = new CalendarInformationRequestValidator(_logger).Validate(request);

            // then
            Assert.True(actualRequestIsValid);
        }
        public bool Validate(CalendarInformationRequest request)
        {
            ValidateEmptyString(request);
            ValidateValidGuid(request);
            ValidateValidTime(request);

            return(true);
        }
        private void ValidateValidGuid(CalendarInformationRequest request)
        {
            if (!IsValidGuid(request.Client.ClientId))
            {
                _errors.Add(new Metadata.Entry("ClientId", NoValidGuidErrorErrorMessage));
            }

            if (!IsValidGuid(request.Client.TenantId))
            {
                _errors.Add(new Metadata.Entry("TenantId", NoValidGuidErrorErrorMessage));
            }

            if (_errors.Any())
            {
                _logger.LogInformation($"Validation Errors: Not valid Guids in Request {request}");
                throw new RpcException(new Status(StatusCode.InvalidArgument,
                                                  $"{GetErrorKeys()} {NoValidGuidErrorErrorMessage}"), _errors);
            }
        }
        private void ValidateValidTime(CalendarInformationRequest request)
        {
            if (request.Calendar.EndTime < request.Calendar.BeginTime)
            {
                _errors.Add(new Metadata.Entry("Timestamps", NotValidTimeErrorMessage));
            }

            if (request.Calendar.EndTime == 0 || request.Calendar.BeginTime == 0)
            {
                _errors.Add(new Metadata.Entry("Timestamps", NotValidTimeErrorMessage));
            }

            if (_errors.Any())
            {
                _logger.LogInformation($"Validation Errors: Not valid Timestamps in Request {request}");
                throw new RpcException(new Status(StatusCode.InvalidArgument,
                                                  $"{GetErrorKeys()} {NotValidTimeErrorMessage}"), _errors);
            }
        }
Пример #10
0
        public void Validate_NoCalendarSent_ThrowsError()
        {
            // given
            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = ValidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                }
            };

            // when
            var ex = Assert.Throws <RpcException>(() => new CalendarInformationRequestValidator(_logger).Validate(request));

            // then
            Assert.Equal(StatusCode.InvalidArgument, ex.StatusCode);
            Assert.Contains("calendarid must not be empty", ex.Message);
        }
Пример #11
0
        public override async Task get_all_rooms_of_organisation(CalendarInformationRequest request, IServerStreamWriter <RoomReply> responseStream,
                                                                 ServerCallContext context)
        {
            _logger.LogInformation($"GetCalendarInformation request for {request.Calendar.CalendarId}");

            _requestValidator.Validate(request);

            var graphCalendarClient = CreateGraphRoomHelper(request.Client);
            var allRooms            = await graphCalendarClient.GetAllRoomsAsnc(request.Calendar);

            _logger.LogInformation($"Sending response for request {request}");

            foreach (var replyEvent in allRooms)
            {
                if (context.CancellationToken.IsCancellationRequested)
                {
                    break;
                }
                await responseStream.WriteAsync(replyEvent);
            }
        }
Пример #12
0
        public override async Task get_calendar_information(CalendarInformationRequest request, IServerStreamWriter <CalendarInformationReply> responseStream,
                                                            ServerCallContext context)
        {
            _logger.LogInformation($"GetCalendarInformation request for {request.Calendar.CalendarId}");

            _requestValidator.Validate(request);

            var graphCalendarClient = CreateGraphCalendarClient(request.Client);
            var graphEvents         = await graphCalendarClient.GetEventsAsync(request.Calendar);

            var azureReplyEvents = CreateReplyEventsOf(graphEvents);

            _logger.LogInformation($"Sending response for request {request}");

            foreach (var replyEvent in azureReplyEvents)
            {
                if (context.CancellationToken.IsCancellationRequested)
                {
                    break;
                }
                await responseStream.WriteAsync(replyEvent);
            }
        }
Пример #13
0
        public void Validate_DefaultTimeValues_ThrowsException()
        {
            // given
            var request = new CalendarInformationRequest
            {
                Client = new CalendarInformationRequest.Types.Client
                {
                    ClientId     = ValidGuidString,
                    ClientSecret = "mySecret",
                    TenantId     = ValidGuidString,
                },
                Calendar = new CalendarInformationRequest.Types.Calendar
                {
                    CalendarId = "*****@*****.**"
                }
            };

            // when
            var ex = Assert.Throws <RpcException>(() => new CalendarInformationRequestValidator(_logger).Validate(request));

            // then
            Assert.Equal(StatusCode.InvalidArgument, ex.StatusCode);
            Assert.Contains("timestamps not valid start_time and end_time", ex.Message);
        }