Exemplo n.º 1
0
        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);
            });
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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)));
            }
        }