public void RegisterPupil(PupilRegistrationDto pupilRegistration) { "Given a new pupil" .x(() => { pupilRegistration = _fixture.Create <PupilRegistrationDto>(); pupilRegistration.Password = _securedPasswordSample; }); "When it registers" .x(() => _pupilService.RegisterPupil(pupilRegistration)); "Then it should appear in the database" .x(() => { _context.Verify(_ => _.SaveChanges(), Times.Once); _pupils.Should() .ContainSingle(_ => _.PupilEmail == pupilRegistration.Email && _.PupilNickname == pupilRegistration.Nickname); }); "And its password should have been hashed" .x(() => { var insertedPupil = _pupils.FirstOrDefault(_ => _.PupilEmail == pupilRegistration.Email && _.PupilNickname == pupilRegistration.Nickname); insertedPupil.PupilPassword.Should() .NotBe(pupilRegistration.Password); }); }
public void RegisterPupilWithExistingNickname(PupilRegistrationDto pupilRegistration, Action registerPupilWithExistingNickname) { "Given a new pupil using an existing email" .x(() => { var pickedPupilIndex = new Random().Next(0, _pupils.Count); var pickedPupil = _pupils.ToList()[pickedPupilIndex]; pupilRegistration = _fixture.Create <PupilRegistrationDto>(); pupilRegistration.Password = _securedPasswordSample; pupilRegistration.Nickname = pickedPupil.PupilNickname; }); "When it attempt to register" .x(() => registerPupilWithExistingNickname = () => _pupilService.RegisterPupil(pupilRegistration)); "Then the system should throw an exception" .x(() => registerPupilWithExistingNickname.Should() .Throw <DuplicatedIdentifierException>()); "And never apply the changes" .x(() => _context.Verify(_ => _.SaveChanges(), Times.Never)); }
public IActionResult Register( [FromBody, SwaggerParameter("Pupil's creation payload")] PupilRegistrationDto newPupilData) { try { _pupilService.RegisterPupil(newPupilData); var authenticatedPupil = _authenticationService.GetAuthenticatedPupil(new AuthenticationDto { Login = newPupilData.Nickname, Password = newPupilData.Password }); return(Ok(authenticatedPupil)); } catch (BaseException ex) { if (ex is DuplicatedEmailException || ex is DuplicatedIdentifierException) { return(Conflict( new ConflictError(ex))); } return(BadRequest( new BadRequestError(ex))); } }