public void Execute(GetStudentIdMessage message)
        {
            var username = _claimsHelper.GetClaims().UserClaims.Username;

            if (username == "ofebres-cordero")
            {
                var replyMessage = new GetStudentIdReplyMessage(message.CorrelationId)
                {
                    Student = (Student)_repository.Read(message.Id)
                };
                Context.Reply(replyMessage);
            }
            else
            {
                Console.WriteLine("Request Failed - Invalid Token");
                Context.Reply(new GetStudentIdReplyMessage(message.CorrelationId));
            }
        }
        public void GivenGetIdMessage_WhenCallingGetStudentByIdHandler_ThenCorrespondingReplyIsSend()
        {
            // Arrange
            var repositry = new Mock <ISqlRepository <IStudent> >(MockBehavior.Strict);

            repositry.Setup(s => s.Read(1)).Returns(new Student("test1", "1")
            {
                Id = 1
            });

            var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict);

            claimsHelper.Setup(h => h.GetClaims()).Returns(new Claims()
            {
                UserClaims = new UserClaim()
                {
                    Username = "******"
                }
            });

            var context = new Mock <IConsumeContext>(MockBehavior.Strict);

            context.Setup(c => c.Reply(It.IsAny <GetStudentIdReplyMessage>()));

            var handler = new SqlGetStudentIdHandler(repositry.Object, claimsHelper.Object)
            {
                Context = context.Object
            };

            GetStudentIdMessage      request = new GetStudentIdMessage(Guid.NewGuid(), 1);
            GetStudentIdReplyMessage reply   = null;

            // Act
            handler.Execute(request);

            // Assert
            context.Verify(c => c.Reply(It.IsAny <GetStudentIdReplyMessage>()), Times.Once);
        }
        public void SearchStudentGivenId_WhenCallingGetById_ThenThatReplyShouldShowOneStudent()
        {
            // Arrange
            var students = new List <Student>
            {
                new Student("Joe", "Smith1")
                {
                    Id     = 1,
                    Grades = new List <Grade>
                    {
                        new Grade {
                            Id = 1, Score = 50, Subject = "Maths", StudentId = 1
                        },
                        new Grade {
                            Id = 1, Score = 50, Subject = "maths1", StudentId = 1
                        },
                        new Grade {
                            Id = 1, Score = 50, Subject = "twoMaths", StudentId = 1
                        }
                    }
                },
                new Student("Oli2", "Test2")
                {
                    Id = 2
                },
                new Student("Oli3", "Test3")
                {
                    Id = 3
                },
                new Student("Oli4", "Test4")
                {
                    Id = 4
                }
            };

            GetStudentIdMessage      request = null;
            GetStudentIdReplyMessage reply   = null;

            var queryCountWrapper = new Mock <IQueryCountWrapper>();

            queryCountWrapper.SetupGet(qcw => qcw.QueryCount).Returns(0);

            var bus = new Mock <IBus>(MockBehavior.Strict);

            bus
            .Setup(b => b.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>(It.IsAny <string>(),
                                                                                      It.IsAny <GetStudentIdMessage>(), null, It.IsAny <int>()))
            .Returns <string, GetStudentIdMessage, Dictionary <string, string>, int>(
                (endpoint, message, headers, timeout) =>
            {
                request = message;
                reply   = new GetStudentIdReplyMessage(message.CorrelationId)
                {
                    Student = students.First(_ => _.Id == message.Id)
                };
                return(reply);
            });

            var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict);
            var controller   = new StudentController(bus.Object, claimsHelper.Object, queryCountWrapper.Object);

            // Act
            var result = controller.GetById(3);

            // Assert

            var expectedResult = reply.Student;

            Assert.Equal(expectedResult, result);
        }
        public void GivenNoSearchQuery_WhenCallingGetStudentGrades_ThenThatReplyShouldShowAllGrades()
        {
            // Arrange
            var    id             = 2;
            string startingWith   = null;
            var    descendingbool = false;
            string orderBy        = null;

            var students = new List <Student>
            {
                new Student("Joe", "Smith1")
                {
                    Id     = 2,
                    Grades = new List <Grade>
                    {
                        new Grade {
                            Id = 1, Score = 50, Subject = "Maths", StudentId = 2
                        },
                        new Grade {
                            Id = 1, Score = 50, Subject = "maths1", StudentId = 2
                        },
                        new Grade {
                            Id = 1, Score = 50, Subject = "twoMaths", StudentId = 2
                        }
                    }
                }
            };

            GetStudentIdMessage      request = null;
            GetStudentIdReplyMessage reply   = null;

            var queryCountWrapper = new Mock <IQueryCountWrapper>();

            queryCountWrapper.SetupGet(qcw => qcw.QueryCount).Returns(1);

            var bus = new Mock <IBus>(MockBehavior.Strict);

            bus
            .Setup(b => b.SendRequest <GetStudentIdMessage, GetStudentIdReplyMessage>(It.IsAny <string>(),
                                                                                      It.IsAny <GetStudentIdMessage>(), null, It.IsAny <int>()))
            .Returns <string, GetStudentIdMessage, Dictionary <string, string>, int>(
                (endpoint, message, headers, timeout) =>
            {
                request = message;
                reply   = new GetStudentIdReplyMessage(message.CorrelationId)
                {
                    Student = students.First()
                };
                return(reply);
            });

            var claimsHelper = new Mock <IClaimsHelper>(MockBehavior.Strict);
            var controller   = new StudentController(bus.Object, claimsHelper.Object, queryCountWrapper.Object);

            // Act
            var result = controller.GetGrades((int)students.First().Id, startingWith, descendingbool, orderBy);


            // Assert
            Assert.Equal(id, request.Id);

            var expectedResult = reply.Student.Grades;

            Assert.Equal(expectedResult, result);
        }