コード例 #1
0
        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);
        }
コード例 #2
0
        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
            });
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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"));
        }