Esempio n. 1
0
        public async Task UpdateStudentProfile()
        {
            byte[] mockImgData = Enumerable.Range(0, 10)
                                 .Select(n => (byte)n)
                                 .ToArray();
            Mock <IUploadedFile> fileMock = new Mock <IUploadedFile>();

            fileMock
            .Setup(file => file.GetFileDataAsync())
            .ReturnsAsync(mockImgData);

            IUploadedFile mockedFile = fileMock.Object;

            _imgMock
            .Setup(imgService => imgService.SaveProfileImage(mockedFile))
            .ReturnsAsync(new ResultMessage <string>("testpath"));

            IServicesExecutor <StudentDTO, Student> executor
                = new ServiceExecutor <StudentDTO, Student>(_context, _handlerMock.Object);
            IStudentService          studentService = new StudentService(executor);
            Mock <IErrorHandler>     handlerMock    = new Mock <IErrorHandler>();
            IStudentManagmentService studMngService
                = new StudentManagmentService(
                      _emailMock.Object,
                      studentService,
                      _regMock.Object,
                      _sharedConfigMock.Object,
                      _imgMock.Object,
                      handlerMock.Object,
                      _context);

            Student stud = await _context.Students.FirstOrDefaultAsync();

            string newUsername    = "******";
            string newDescription = "New description";

            await studMngService.EditStudentProfile(stud.StudentId, new ProfileUpdateDTO
            {
                Username    = "******",
                Description = "New description",
                Photo       = fileMock.Object
            });

            stud = await _context.Students.FirstOrDefaultAsync(s => s.StudentId == stud.StudentId);

            Assert.AreEqual(newUsername, stud.Username);
            Assert.AreEqual(newDescription, stud.Description);
            _imgMock.Verify(imgService => imgService.SaveProfileImage(mockedFile), Times.Once);
        }
Esempio n. 2
0
        public async Task ChangePassword(string oldPassword, string newPassword, string confirmPassword)
        {
            Mock <IEmailSenderService>  mockEmail   = new Mock <IEmailSenderService>();
            Mock <IRegistrationService> mockReg     = new Mock <IRegistrationService>();
            Mock <IErrorHandler>        handlerMock = new Mock <IErrorHandler>();

            IServicesExecutor <StudentDTO, Student> executor
                = new ServiceExecutor <StudentDTO, Student>(_context, handlerMock.Object);
            IStudentService          studentService = new StudentService(executor);
            IStudentManagmentService studMngService
                = new StudentManagmentService(
                      mockEmail.Object,
                      studentService,
                      mockReg.Object,
                      _sharedConfigMock.Object,
                      _imgMock.Object,
                      handlerMock.Object,
                      _context);

            Student stud = await _context.Students.FirstOrDefaultAsync(s => s.Username == "light");

            const string studOldPassword = "******";

            PassChangeStatus status = await studMngService.UpdateStudentPassword(
                stud.StudentId, new UpdatePasswordDTO
            {
                OldPassword     = oldPassword,
                NewPassword     = newPassword,
                ConfirmPassword = confirmPassword
            });

            if (studOldPassword != oldPassword)
            {
                Assert.AreEqual(PassChangeStatus.InvalidOldPass, status);
            }
            else if (newPassword != confirmPassword)
            {
                Assert.AreEqual(PassChangeStatus.PassNoMatch, status);
            }
            else
            {
                Assert.AreEqual(PassChangeStatus.Success, status);
            }
        }
Esempio n. 3
0
        public async Task GenerateRegistrationEmail()
        {
            _emailMock.Setup(emailService => emailService.SendTemplateEmailAsync(It.IsAny <TemplateEmail>()))
            .Returns(Task.CompletedTask);

            var regMock = new Mock <IRegistrationService>();

            regMock.Setup(regService => regService.Add(It.IsAny <RegistrationDTO>()))
            .ReturnsAsync(new ResultMessage <RegistrationDTO>());

            Mock <IStudentService> studService = new Mock <IStudentService>();
            Mock <IErrorHandler>   handlerMock = new Mock <IErrorHandler>();

            // Passing null here beacause GenerateRegistrationEmail does not use StudentService
            IStudentManagmentService studMng = new StudentManagmentService(
                _emailMock.Object,
                studService.Object,
                regMock.Object,
                _sharedConfigMock.Object,
                _imgMock.Object,
                handlerMock.Object,
                _context);

            RegisterFormDTO reg = new RegisterFormDTO
            {
                Email     = EMAIL_TO,
                FirstName = "FirstName",
                LastName  = "LastName",
                Index     = "1111/11",
                Privilege = StudentPrivilege.Normal
            };

            await studMng.GenerateRegistrationEmail(reg);

            _emailMock.Verify(emailService => emailService.SendTemplateEmailAsync
                              (
                                  It.Is <TemplateEmail>(emailData => emailData.To == EMAIL_TO)
                              ), Times.Once);

            regMock.Verify(regService => regService.Add(
                               It.Is <RegistrationDTO>(regDTO => regDTO.Compare(reg) && regDTO.Used == false)), Times.Once);
        }
Esempio n. 4
0
        public async Task RegisterStudent()
        {
            string registrationCode = null;

            _regMock.Setup(regService => regService.Add(It.IsAny <RegistrationDTO>()))
            // Note callback here setting registrationCode variable
            .Callback((RegistrationDTO dto) => registrationCode = dto.RegistrationCode)
            .ReturnsAsync(new ResultMessage <RegistrationDTO>());

            _regMock.Setup(regService => regService.Update(It.IsAny <RegistrationDTO>()))
            .ReturnsAsync(new ResultMessage <RegistrationDTO>());

            var studServiceMock = new Mock <IStudentService>();

            studServiceMock.Setup(stud => stud.Add(It.IsAny <StudentDTO>()))
            .ReturnsAsync(new ResultMessage <StudentDTO>());

            IStudentManagmentService studMng = new StudentManagmentService
                                                   (new Mock <IEmailSenderService>().Object,
                                                   studServiceMock.Object,
                                                   _regMock.Object,
                                                   _sharedConfigMock.Object, null, _handlerMock.Object, _context);

            RegisterFormDTO reg = new RegisterFormDTO
            {
                Email     = EMAIL_TO,
                FirstName = "FirstName",
                LastName  = "LastName",
                Index     = "1111/11",
                Privilege = StudentPrivilege.Normal
            };

            await studMng.GenerateRegistrationEmail(reg);

            // At this point registrationCode != null
            RegistrationDTO regDTO = new RegistrationDTO
            {
                Email            = EMAIL_TO,
                RegistrationCode = registrationCode,
                RegistrationId   = 1,
                Timestamp        = DateTime.UtcNow,
                Used             = false
            };

            _regMock.Setup(regService => regService.GetSingleOrDefault(
                               It.IsAny <Predicate <RegistrationDTO> >())).ReturnsAsync(new ResultMessage <RegistrationDTO>(regDTO));

            RegisterUserDTO regData = new RegisterUserDTO
            {
                Password         = "******",
                Username         = "******",
                RegistrationCode = registrationCode
            };

            await studMng.FinishRegistrationProcess(regData);

            studServiceMock.Verify(service => service.Add(
                                       It.Is <StudentDTO>(dto => dto.Username == regData.Username)));

            _regMock.Verify(service => service.Update(
                                It.Is <RegistrationDTO>(dto => dto.Used == true)));
        }
Esempio n. 5
0
 public StudentsController()
 {
     _service = new StudentManagmentService();
 }