public async void GetTitleSummariesAsync_RefreshToken_LtsaError() { // Arrange var helper = new TestHelper(); var user = PrincipalHelper.CreateForPermission(); var options = Options.Create(new LtsaOptions()); var service = helper.Create <LtsaService>(options, user); var tokenRequestResponse = new HttpResponseMessage(HttpStatusCode.Unauthorized) { RequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://test"), Content = new StringContent("{\"ErrorMessages\":[]}"), }; var refreshTokenRequestResponse = new HttpResponseMessage(HttpStatusCode.InternalServerError) { RequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://test"), Content = new StringContent("{\"ErrorMessages\":[]}"), }; var titleSummariesResponse = new TitleSummariesResponse() { TitleSummaries = new List <TitleSummary>() { new TitleSummary() { TitleNumber = "titleNumber", LandTitleDistrictCode = LandTitleDistrictCode.VA, } } }; var client = helper.GetService <Mock <IHttpRequestClient> >(); client.Setup(m => m.PostJsonAsync(It.IsAny <string>(), It.IsAny <IntegratorCredentials>())) .ReturnsAsync(new HttpResponseMessage() { Content = new StringContent(accessTokenResponse) }); client.Setup(m => m.PostJsonAsync(It.Is <string>((url) => url == options.Value.AuthUrl + "/token"), It.IsAny <Object>())) .ThrowsAsync(new HttpClientRequestException(refreshTokenRequestResponse)); client.SetupSequence(m => m.SendAsync <TitleSummariesResponse>(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <HttpContent>(), It.IsAny <Func <HttpResponseMessage, bool> >())) .ThrowsAsync(new HttpClientRequestException(tokenRequestResponse)).ReturnsAsync(titleSummariesResponse).ThrowsAsync(new HttpClientRequestException(tokenRequestResponse)).ReturnsAsync(titleSummariesResponse); // Act // Assert var response = await service.GetTitleSummariesAsync(123456789); //the first call will use the regular token await Assert.ThrowsAsync <LtsaException>(async() => await service.GetTitleSummariesAsync(123456789)); //the second call will use the refresh token client.Verify(m => m.PostJsonAsync(options.Value.AuthUrl + "/login/integrator", It.IsAny <IntegratorCredentials>()), Times.Once); client.Verify(m => m.PostJsonAsync(options.Value.AuthUrl + "/token", It.IsAny <Object>()), Times.Once); }
public async void PostLtsaFieldsAsync_Valid() { // Arrange var helper = new TestHelper(); var user = PrincipalHelper.CreateForPermission(); var options = Options.Create(new LtsaOptions()); var service = helper.Create <LtsaService>(options, user); var token = new TokenModel() { AccessToken = "test" }; var titleResponse = new OrderWrapper <OrderParent <Title> >(new TitleOrder()); var parcelInfoResponse = new OrderWrapper <OrderParent <ParcelInfo> >(new ParcelInfoOrder()); var titleSummariesResponse = new TitleSummariesResponse() { TitleSummaries = new List <TitleSummary>() { new TitleSummary() { TitleNumber = "titleNumber", LandTitleDistrictCode = LandTitleDistrictCode.VA, } } }; var client = helper.GetService <Mock <IHttpRequestClient> >(); client.Setup(m => m.PostJsonAsync(It.IsAny <string>(), It.IsAny <IntegratorCredentials>())).ReturnsAsync <IHttpRequestClient, HttpResponseMessage>(new HttpResponseMessage() { Content = new StringContent(accessTokenResponse) }); client.Setup(m => m.SendJsonAsync <OrderWrapper <OrderParent <Title> >, OrderWrapper <TitleOrder> >(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <OrderWrapper <TitleOrder> >(), It.IsAny <Func <HttpResponseMessage, bool> >())).ReturnsAsync(titleResponse); client.Setup(m => m.SendJsonAsync <OrderWrapper <OrderParent <ParcelInfo> >, OrderWrapper <ParcelInfoOrder> >(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <OrderWrapper <ParcelInfoOrder> >(), It.IsAny <Func <HttpResponseMessage, bool> >())).ReturnsAsync(parcelInfoResponse); client.Setup(m => m.SendAsync <TitleSummariesResponse>(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <HttpContent>(), It.IsAny <Func <HttpResponseMessage, bool> >())).ReturnsAsync(titleSummariesResponse); // Act var result = await service.PostLtsaFields("123-456-789"); // Assert Assert.NotNull(result); Assert.IsAssignableFrom <LtsaOrders>(result); client.Verify(m => m.SendJsonAsync <OrderWrapper <OrderParent <Title> >, OrderWrapper <TitleOrder> >(options.Value.HostUri.AppendToURL(options.Value.OrdersEndpoint), HttpMethod.Post, It.IsAny <OrderWrapper <TitleOrder> >(), null), Times.Once()); client.Verify(m => m.SendJsonAsync <OrderWrapper <OrderParent <ParcelInfo> >, OrderWrapper <ParcelInfoOrder> >(options.Value.HostUri.AppendToURL(options.Value.OrdersEndpoint), HttpMethod.Post, It.IsAny <OrderWrapper <ParcelInfoOrder> >(), null), Times.Once()); result.ParcelInfo.Should().Be(parcelInfoResponse.Order); result.TitleOrders.Should().BeEquivalentTo(new List <OrderParent <Title> >() { titleResponse.Order }); }
public async void GetTitleSummariesAsync_Valid() { // Arrange var helper = new TestHelper(); var user = PrincipalHelper.CreateForPermission(); var options = Options.Create(new LtsaOptions()); var service = helper.Create <LtsaService>(options, user); var token = new TokenModel() { AccessToken = "test" }; var response = new TitleSummariesResponse() { TitleSummaries = new List <TitleSummary>() { new TitleSummary() { TitleNumber = "titleNumber", LandTitleDistrictCode = LandTitleDistrictCode.VA, } } }; var client = helper.GetService <Mock <IHttpRequestClient> >(); client.Setup(m => m.PostJsonAsync(It.IsAny <string>(), It.IsAny <IntegratorCredentials>())).ReturnsAsync <IHttpRequestClient, HttpResponseMessage>(new HttpResponseMessage() { Content = new StringContent(accessTokenResponse) }); client.Setup(m => m.SendAsync <TitleSummariesResponse>(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <HttpContent>(), It.IsAny <Func <HttpResponseMessage, bool> >())).ReturnsAsync(response); // Act var result = await service.GetTitleSummariesAsync(123456789); // Assert Assert.NotNull(result); Assert.IsAssignableFrom <TitleSummariesResponse>(result); client.Verify(m => m.SendAsync <TitleSummariesResponse>(options.Value.HostUri.AppendToURL(new string[] { options.Value.TitleSummariesEndpoint, $"?filter=parcelIdentifier:123456789" }), HttpMethod.Get, null, null), Times.Once()); result.TitleSummaries.Should().HaveCount(1); var titleSummary = result.TitleSummaries.First(); titleSummary.LandTitleDistrictCode.Should().Be(LandTitleDistrictCode.VA); titleSummary.TitleNumber.Should().Be("titleNumber"); }
public async void PostLtsaFieldsAsync_Error() { // Arrange var helper = new TestHelper(); var user = PrincipalHelper.CreateForPermission(); var options = Options.Create(new LtsaOptions()); var service = helper.Create <LtsaService>(options, user); var token = new TokenModel() { AccessToken = "test" }; var response = new HttpResponseMessage(HttpStatusCode.BadRequest) { RequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://test"), Content = new StringContent("{\"ErrorMessages\":[]}"), }; var titleSummariesResponse = new TitleSummariesResponse() { TitleSummaries = new List <TitleSummary>() { new TitleSummary() { TitleNumber = "titleNumber", LandTitleDistrictCode = LandTitleDistrictCode.VA, } } }; var client = helper.GetService <Mock <IHttpRequestClient> >(); client.Setup(m => m.PostJsonAsync(It.IsAny <string>(), It.IsAny <IntegratorCredentials>())).ReturnsAsync <IHttpRequestClient, HttpResponseMessage>(new HttpResponseMessage() { Content = new StringContent(accessTokenResponse) }); client.Setup(m => m.SendJsonAsync <OrderWrapper <OrderParent <Title> >, OrderWrapper <TitleOrder> >(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <OrderWrapper <TitleOrder> >(), It.IsAny <Func <HttpResponseMessage, bool> >())).ThrowsAsync(new HttpClientRequestException(response)); client.Setup(m => m.SendJsonAsync <OrderWrapper <OrderParent <ParcelInfo> >, OrderWrapper <ParcelInfoOrder> >(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <OrderWrapper <ParcelInfoOrder> >(), It.IsAny <Func <HttpResponseMessage, bool> >())).ThrowsAsync(new HttpClientRequestException(response)); client.Setup(m => m.SendAsync <TitleSummariesResponse>(It.IsAny <string>(), It.IsAny <HttpMethod>(), It.IsAny <HttpContent>(), It.IsAny <Func <HttpResponseMessage, bool> >())).ReturnsAsync(titleSummariesResponse); // Act await Assert.ThrowsAsync <LtsaException>(async() => await service.PostLtsaFields("123-456-789")); }