public async Task <IActionResult> RegisterAsync([FromBody] CardRegistrationDto dto)
        {
            // check if card is already registered
            IdentityUser savedCard = await _cardManager.FindByIdAsync(dto.CardNumber);

            if (savedCard != null)
            {
                return(BadRequest("Card already registered"));
            }

            // check model is valid
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values));
            }

            // use auto mapper to create IdentityCard from the dto
            var card = _mapper.Map <IdentityCard>(dto);

            IdentityResult identityResult = await _cardManager.CreateAsync(card, dto.Pin);

            if (identityResult.Succeeded)
            {
                return(Ok("Registered successfully"));
            }

            return(BadRequest(identityResult.Errors));
        }
        public async Task Post_register_badRequest()
        {
            // Arrange
            var client = _factory.CreateClient();
            var dto    = new CardRegistrationDto()
            {
                CardNumber  = "123434s6789odiuy",
                EmployeeId  = "123456",
                FirstName   = "test",
                LastName    = "rodeo",
                PhoneNumber = "07945832712",
                Email       = "*****@*****.**",
                Pin         = "5678"
            };
            var json        = JsonConvert.SerializeObject(dto);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(json);
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            await client.PostAsync("/authentication/register", byteContent);

            // Act
            var response = await client.PostAsync("/authentication/register", byteContent);

            // Assert
            Assert.True(response.StatusCode == HttpStatusCode.BadRequest);
        }
예제 #3
0
        public async Task UserRegisters_WithValidDetails_RegisteresUserAndReturnsRegisteredSuccessfully()
        {
            // Arrange
            var                 subject             = GetSubject();
            IdentityCard        identityCard        = _identityCardBuilder.GenericIdentityCard().Build();
            CardRegistrationDto cardRegistrationDto = _cardRegistrationDtoBuilder.GenericRegistration().Build();

            identityCard.Id = cardRegistrationDto.CardNumber;
            _mockMapper.Setup(x => x.Map <IdentityCard>(cardRegistrationDto)).Returns(identityCard);

            var identityResult = new IdentityResultAccessor(true);

            _mockCardManager.Setup(x => x.CreateAsync(identityCard, cardRegistrationDto.Pin))
            .ReturnsAsync(identityResult);
            _mockCardManager.SetupSequence(x => x.FindByIdAsync(identityCard.Id))
            .ReturnsAsync((IdentityCard)null)
            .ReturnsAsync(identityCard);
            _mockCardManager.SetupSequence(x => x.FindByIdAsync(identityCard.Id))
            .ReturnsAsync((IdentityCard)null)
            .ReturnsAsync(identityCard);

            // Act
            var result = await subject.RegisterAsync(cardRegistrationDto);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(typeof(OkObjectResult), result.GetType());
            Assert.Equal(typeof(string), ((OkObjectResult)result).Value.GetType());
        }
        public async Task Post_login_ok()
        {
            // Arrange
            var client = _factory.CreateClient();

            // register
            var registerDto = new CardRegistrationDto()
            {
                CardNumber  = "123be4qs6ou9oiuy",
                EmployeeId  = "127856",
                FirstName   = "test",
                LastName    = "rodeo",
                PhoneNumber = "07945832712",
                Email       = "*****@*****.**",
                Pin         = "5678"
            };
            var registerJson        = JsonConvert.SerializeObject(registerDto);
            var registerBuffer      = System.Text.Encoding.UTF8.GetBytes(registerJson);
            var registerByteContent = new ByteArrayContent(registerBuffer);

            registerByteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var registerResult =
                client.PostAsync("/authentication/register", registerByteContent).Result;

            // login card
            var loginDto = new LoginParametersDto()
            {
                CardNumber = registerDto.CardNumber,
                Pin        = registerDto.Pin
            };
            var loginJson        = JsonConvert.SerializeObject(loginDto);
            var loginBuffer      = System.Text.Encoding.UTF8.GetBytes(loginJson);
            var loginByteContent = new ByteArrayContent(loginBuffer);

            loginByteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            if (registerResult.IsSuccessStatusCode)
            {
                // Act
                var response = client.PostAsync("/authentication/login", loginByteContent).Result;

                // Assert
                Assert.True(response.StatusCode == HttpStatusCode.OK);
            }
            else
            {
                Assert.True(registerResult.IsSuccessStatusCode);
            }
        }