// Change Email & Phone

        private async Task ForceChangePhone()
        {
            var changeData = await _shell.ShowForceChangeDialog(
                EditViewModel.Phone,
                "Phone",
                Locales.FirstOrDefault(),
                Locales.ToList());

            if (changeData != null)
            {
                try
                {
                    var newPhone = long.Parse(changeData.Input);
                    var request  = new ChangePhoneRequest(changeData.Locale, newPhone, EditViewModel.Id.Value);
                    await _domain0.Client.ForceChangePhoneAsync(request);

                    EditViewModel.Phone = changeData.Input;
                    Models.AddOrUpdate(EditModel);
                }
                catch (Exception e)
                {
                    await _shell.HandleException(e, "Failed to Change Phone");
                }
            }
        }
Exemplo n.º 2
0
        public async Task Sms_ClientForceChangePhoneTest()
        {
            var testRequest = new ChangePhoneRequest("ru", 3579, 1);

            var accountRepository     = container.Resolve <IAccountRepository>();
            var accountRepositoryMock = Mock.Get(accountRepository);

            accountRepositoryMock
            .Setup(s => s.FindByUserId(It.IsAny <int>()))
            .Returns <int>(x => Task.FromResult(new Account
            {
                Id = x
            }));

            using (var http = new HttpClient())
            {
                var client = new Domain0Client(TEST_URL, http);
                http.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue("Bearer",
                                                  TestContainerBuilder.BuildToken(container, 1, TokenClaims.CLAIM_PERMISSIONS_FORCE_CHANGE_PHONE));

                await client.ForceChangePhoneAsync(testRequest);


                accountRepositoryMock.Verify(ar =>
                                             ar.Update(It.Is <Account>(a =>
                                                                       a.Id == testRequest.UserId &&
                                                                       a.Phone == testRequest.NewPhone)),
                                             Times.Once());
            }
        }
Exemplo n.º 3
0
        public async Task ChangePhoneAsync_ShouldBeOkObjectResult()
        {
            // Arrange
            var user = TestData.FileStorage.GetUsers().First();

            TestMock.UserService.Setup(userService => userService.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(user).Verifiable();

            TestMock.UserService.Setup(userService => userService.UpdatePhoneNumberAsync(It.IsAny <User>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Success)
            .Verifiable();

            var controller = new PhoneController(TestMock.UserService.Object, TestMapper);

            var request = new ChangePhoneRequest
            {
                Number = user.PhoneNumber
            };

            // Act
            var result = await controller.ChangePhoneAsync(request);

            // Assert
            result.Should().BeOfType <OkObjectResult>();
            result.As <OkObjectResult>().Value.Should().BeEquivalentTo(TestMapper.Map <PhoneDto>(user));
            TestMock.UserService.Verify(userService => userService.GetUserAsync(It.IsAny <ClaimsPrincipal>()), Times.Once);
            TestMock.UserService.Verify(userService => userService.UpdatePhoneNumberAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Once);
        }
Exemplo n.º 4
0
        public async Task ShouldBeHttpStatusCodeOK()
        {
            const string phoneNumber = "4181112222";
            var          user        = TestData.FileStorage.GetUsers().First();
            var          factory     = TestHost.WithClaimsFromBearerAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString()));

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                await service.CreateAsync(user);
            });

            var request = new ChangePhoneRequest
            {
                Number = phoneNumber
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.EnsureSuccessStatusCode();
            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var phone = await response.Content.ReadAsJsonAsync <PhoneDto>();

            phone.Number.Should().Be(phoneNumber);
        }
Exemplo n.º 5
0
        public async Task ShouldBeHttpStatusCodeBadRequest()
        {
            var user    = TestData.FileStorage.GetUsers().First();
            var factory = TestHost.WithClaimsFromBearerAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString()));

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var service = scope.GetRequiredService <IUserService>();

                await service.CreateAsync(user);
            });

            var request = new ChangePhoneRequest
            {
                Number = string.Empty
            };

            // Act
            using var response = await this.ExecuteAsync(request);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
Exemplo n.º 6
0
    /// <summary>
    /// Change Phone Async.
    /// </summary>
    /// <param name="request">The <see cref="ChangePhoneRequest{TIdentity}"/>.</param>
    /// <param name="cancellationToken">The <see cref="CancellationToken"/>.</param>
    /// <returns>Void.</returns>
    public virtual async Task ChangePhoneAsync(ChangePhoneRequest <TIdentity> request, CancellationToken cancellationToken = default)
    {
        if (request == null)
        {
            throw new ArgumentNullException(nameof(request));
        }

        request.Controller = BaseIdentityApi <TUser, TIdentity> .IdentityController;

        await this.InvokeAsync(request, cancellationToken);
    }
        public async Task <IActionResult> ChangePhone([FromBody] ChangePhoneRequest request, [FromServices] IEmailService emailService,
                                                      [FromServices] IAuthenticationManager authentication)
        {
            var email = User.Identity.Name;
            await authentication.EditPhoneAsync(new UserAccountRequest {
                Email = email,
                Phone = request.Phone
            });

            emailService.SendEmail(email, "Изменение номера телефона на Smartcontract.kz", "Вы успешно сменили номер телефона в системе Smartcontract.kz.");
            return(Json(ApiResponse.Success(true)));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> ChangePhoneAsync([FromBody] ChangePhoneRequest request)
        {
            var user = await _userService.GetUserAsync(User);

            var result = await _userService.UpdatePhoneNumberAsync(user, request.Number);

            if (result.Succeeded)
            {
                return(this.Ok(_mapper.Map <PhoneDto>(user)));
            }

            ModelState.Bind(result);

            return(this.BadRequest(new ValidationProblemDetails(ModelState)));
        }
Exemplo n.º 9
0
 private async Task <HttpResponseMessage> ExecuteAsync(ChangePhoneRequest request)
 {
     return(await _httpClient.PostAsJsonAsync("api/phone", request));
 }