public Task <ITwitterResult> UpdateProfileBanner(IUpdateProfileBannerParameters parameters, ITwitterRequest request)
        {
            var query             = _accountSettingsQueryGenerator.GetUpdateProfileBannerQuery(parameters);
            var banner            = StringFormater.UrlEncode(Convert.ToBase64String(parameters.Binary));
            var bannerHttpContent = new StringContent($"banner={banner}", Encoding.UTF8, "application/x-www-form-urlencoded");

            request.Query.Url         = query;
            request.Query.HttpMethod  = HttpMethod.POST;
            request.Query.HttpContent = new ProgressableStreamContent(bannerHttpContent, parameters.UploadProgressChanged);
            request.Query.IsHttpContentPartOfQueryParams = true;
            request.Query.Timeout = parameters.Timeout ?? TimeSpan.FromMilliseconds(System.Threading.Timeout.Infinite);

            return(_twitterAccessor.ExecuteRequest(request));
        }
        public async Task UpdateProfileBanner_ReturnsAccountUserDTOAsync()
        {
            // Arrange
            var queryExecutor = CreateAccountSettingsQueryExecutor();
            var parameters    = new UpdateProfileBannerParameters(new byte[2]);

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

            A.CallTo(() => _fakeAccountSettingsQueryGenerator.GetUpdateProfileBannerQuery(parameters)).Returns(url);
            A.CallTo(() => _fakeTwitterAccessor.ExecuteRequestAsync(A <ITwitterRequest> .Ignored)).Returns(expectedResult);

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

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