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); }
//[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); }