public async Task IsAuthorized_is_false_after_expiration()
        {
            // arrange
            var options = GetMockOptions();
            var uri     = ApiPathUtility.Build(options.BaseUrl, "/users/getToken");
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.RequestUri.Equals(uri)),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                Content = new JsonContent(JsonConvert.SerializeObject(FastExpiredTokenResponse))
            });
            var sut = new IamportHttpClient(options, mock.Object);

            // act
            await sut.AuthorizeAsync();

            await Task.Delay(15);

            // assert
            Assert.False(sut.IsAuthorized);
        }
Example #2
0
        //[Fact]
        public async Task IamportRequest_has_token_header()
        {
            // arrange
            var options = GetMockOptions();
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.Headers.GetValues(DefaultTokenHeaderName).Any()),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                Content = new JsonContent(JsonConvert.SerializeObject(FailedTokenResponse))
            });
            var sut = new IamportHttpClient(options, mock.Object);

            var request = new IamportRequest <object>
            {
                ApiPathAndQueryString = "/self",
                RequireAuthorization  = true
            };

            // act
            var result = await sut.RequestAsync <object, object>(request);

            // assert
            mock.Verify(client => client.SendAsync(
                            It.Is <HttpRequestMessage>(
                                message => message
                                .Headers
                                .GetValues(DefaultTokenHeaderName)
                                .Any()),
                            It.IsAny <CancellationToken>()), Times.Once);
        }
        public async Task RequestIamportRequest_calls_Authorize_after_expired()
        {
            // arrange
            var options = GetMockOptions();
            var uri     = ApiPathUtility.Build(options.BaseUrl, "/users/getToken");
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.RequestUri.Equals(uri)),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                Content = new JsonContent(JsonConvert.SerializeObject(FastExpiredTokenResponse))
            });
            var somethingUri = ApiPathUtility.Build(options.BaseUrl, "/something");

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.RequestUri.Equals(somethingUri)),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                Content = new JsonContent(JsonConvert.SerializeObject(EmptyObjectResponse))
            });
            var sut     = new IamportHttpClient(options, mock.Object);
            var request = new IamportRequest <object>
            {
                ApiPathAndQueryString = "/something",
                RequireAuthorization  = true
            };

            // act; call twice
            await sut.RequestAsync <object, object>(request);

            await Task.Delay(15);

            await sut.RequestAsync <object, object>(request);

            // assert
            mock.Verify(client => client.SendAsync(
                            It.Is <HttpRequestMessage>(
                                message => message.RequestUri.Equals(uri)),
                            It.IsAny <CancellationToken>()), Times.Exactly(2));
        }
        public async Task Throws_HttpRequestException_for_http_exception()
        {
            // arrange
            var options = GetMockOptions();
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.IsAny <HttpRequestMessage>(),
                           It.IsAny <CancellationToken>()))
            .ThrowsAsync(new HttpRequestException("exception"));
            var sut     = new IamportHttpClient(options, mock.Object);
            var request = new IamportRequest <object>
            {
                ApiPathAndQueryString = "/error",
                RequireAuthorization  = false
            };
            // act/assert
            await Assert.ThrowsAsync <HttpRequestException>(
                () => sut.RequestAsync <object, object>(request));
        }
        public async Task Failed_Authorize_doesnot_change_IsAuthorized()
        {
            // arrange
            var options = GetMockOptions();
            var uri     = ApiPathUtility.Build(options.BaseUrl, "/users/getToken");
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.RequestUri.Equals(uri)),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.Unauthorized,
                Content    = new JsonContent(JsonConvert.SerializeObject(FailedTokenResponse))
            });
            var sut = new IamportHttpClient(options, mock.Object);

            // act/assert
            await Assert.ThrowsAsync <UnauthorizedAccessException>(
                () => sut.AuthorizeAsync());

            Assert.False(sut.IsAuthorized);
        }
        public async Task Authorize_makes_IsAuthorized_true()
        {
            // arrange
            var options = GetMockOptions();
            var uri     = ApiPathUtility.Build(options.BaseUrl, "/users/getToken");
            var mock    = new Mock <HttpClient>();

            mock.Setup(client => client.SendAsync(
                           It.Is <HttpRequestMessage>(
                               message => message.RequestUri.Equals(uri)),
                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new JsonContent(JsonConvert.SerializeObject(SucceedTokenResponse))
            });
            var sut = new IamportHttpClient(options, mock.Object);

            // act
            await sut.AuthorizeAsync();

            // assert
            Assert.True(sut.IsAuthorized);
        }