public Task <ITwitterResult <IUserDTO> > UpdateProfileImage(IUpdateProfileImageParameters parameters, ITwitterRequest request)
        {
            var query = _accountSettingsQueryGenerator.GetUpdateProfileImageQuery(parameters);

            var multipartQuery = new MultipartTwitterQuery(request.Query)
            {
                Url                   = query,
                HttpMethod            = HttpMethod.POST,
                Binaries              = new[] { parameters.Binary },
                ContentId             = "image",
                Timeout               = parameters.Timeout ?? TimeSpan.FromMilliseconds(System.Threading.Timeout.Infinite),
                UploadProgressChanged = parameters.UploadProgressChanged,
            };

            request.Query = multipartQuery;

            return(_twitterAccessor.ExecuteRequest <IUserDTO>(request));
        }
        public async Task UpdateProfileImage_ReturnsAccountUserDTOAsync()
        {
            // Arrange
            var queryExecutor = CreateAccountSettingsQueryExecutor();
            var parameters    = new UpdateProfileImageParameters(null);

            var url            = TestHelper.GenerateString();
            var request        = A.Fake <ITwitterRequest>();
            var expectedResult = A.Fake <ITwitterResult <IUserDTO> >();

            A.CallTo(() => _fakeAccountSettingsQueryGenerator.GetUpdateProfileImageQuery(parameters)).Returns(url);
            A.CallTo(() => _fakeTwitterAccessor.ExecuteRequestAsync <IUserDTO>(A <ITwitterRequest>
                                                                               .That.Matches(x => x.Query is IMultipartTwitterQuery && x.Query.Url == url)))
            .Returns(expectedResult);

            // Act
            var result = await queryExecutor.UpdateProfileImageAsync(parameters, request);

            // Assert
            Assert.Equal(result, expectedResult);
            Assert.Equal(request.Query.Url, url);
            Assert.Equal(HttpMethod.POST, request.Query.HttpMethod);
        }