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); }
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); } }
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); }
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))); }
public StudentsController() { _service = new StudentManagmentService(); }