Exemplo n.º 1
0
        public async Task PatchAsyncReturnsExceptionForBadStatus()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.Forbidden;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult, Content = new StringContent("bad Patch")
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = segmentClientOptions.BaseAddress
            };
            var httpClientService = new HttpClientService(segmentClientOptions, httpClient, logService, correlationIdProvider);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var exceptionResult = await Assert.ThrowsAsync <HttpRequestException>(async() => await httpClientService.PatchAsync(A.Fake <PatchLinksModel>(), "endpoint").ConfigureAwait(false)).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal($"Response status code does not indicate success: {(int)expectedResult} ({expectedResult}).", exceptionResult.Message);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 2
0
        public async Task PutAsyncReturnsStatusWhenHttpResponseIsNotFound()
        {
            // Arrange
            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.NotFound, Content = new StringContent("Unsuccessful content")
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var httpClientService = new HttpClientService(options, httpClient, logger);

            // Act
            var result = await httpClientService.PutAsync(GetSegmentModel()).ConfigureAwait(false);

            // Assert
            Assert.Equal(HttpStatusCode.NotFound, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task ApiServiceDeleteReturnsNotFoundStatusCode()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.NotFound;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);
            var apiService             = new ApiService(logger);
            var url = new Uri("https://www.somewhere.com", UriKind.Absolute);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await apiService.DeleteAsync(httpClient, url).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task PostAsyncReturnsOKStatusCodeWhenHttpResponseIsSuccessful()
        {
            // Arrange
            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var httpClientService = new HttpClientService(options, httpClient, logService, correlationIdProvider);

            // Act
            var result = await httpClientService.PostAsync(GetSegmentModel()).ConfigureAwait(false);

            // Assert
            Assert.Equal(HttpStatusCode.OK, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task SubscriptionRegistrationBackgroundServiceCorrectWebhookSettingReturnsDownstreamError()
        {
            //Arrange
            A.CallTo(() => configuration["Configuration:ApplicationName"]).Returns("test-app");
            A.CallTo(() => settings.CurrentValue).Returns(new SubscriptionSettings {
                Endpoint = new Uri("https://somewebhookreceiver.com/receive"), SubscriptionServiceEndpoint = new Uri("https://somewheretosubscribeto.com")
            });

            var httpResponse = new HttpResponseMessage {
                StatusCode = System.Net.HttpStatusCode.InternalServerError, Content = new StringContent("An error", Encoding.UTF8)
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);
            A.CallTo(() => httpClientFactory.CreateClient(A <string> .Ignored)).Returns(httpClient);

            var serviceToTest = new SubscriptionRegistrationService(settings, httpClientFactory, logger);

            //Act
            //Assert
            await Assert.ThrowsAsync <HttpRequestException>(async() => await serviceToTest.RegisterSubscription("a-test-subscriber").ConfigureAwait(false)).ConfigureAwait(false);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
            httpClient.Dispose();
        }
        public async Task ApiServiceGetReturnsOkStatusCodeForValidUrl()
        {
            // arrange
            const HttpStatusCode expectedResult   = HttpStatusCode.OK;
            const string         expectedResponse = "Expected response string";
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult, Content = new StringContent(expectedResponse)
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);
            var apiService             = new ApiService(logger);
            var url = new Uri("https://www.somewhere.com", UriKind.Absolute);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await apiService.GetAsync(httpClient, url, MediaTypeNames.Application.Json).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResponse, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public void GetCdnAssetFileAndVersionReturnsPathWithHashCodeWhenValidResponseFromCDN()
        {
            const string testHeader = "test";

            var httpResponse = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new MultipartContent(),
            };

            httpResponse.Content.Headers.Add("content-md5", testHeader);

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            var assetLocationAndVersionService = new AssetLocationAndVersionService(httpClient, asyncHelper, webHostEnvironment, logger, fileInfoHelper);

            var result = assetLocationAndVersionService.GetCdnAssetFileAndVersion(TestCDNLocation);

            var expectedResult = $"{TestCDNLocation}?{testHeader}";

            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
            httpClient.Dispose();
        }
        public void GetCdnAssetFileAndVersionReturnsPathWithCurrentDateWhenNoValidResponseFromCDN()
        {
            var httpResponse = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.BadGateway,
                Content    = new MultipartContent(),
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            var assetLocationAndVersionService = new AssetLocationAndVersionService(httpClient, asyncHelper, webHostEnvironment, logger, fileInfoHelper);

            var result = assetLocationAndVersionService.GetCdnAssetFileAndVersion(TestCDNLocation);
            var expectedFormattedDate = DateTime.Now.ToString("yyyyMMddHH", CultureInfo.InvariantCulture);
            var expectedResult        = $"{TestCDNLocation}?{expectedFormattedDate}";

            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
            httpClient.Dispose();
        }
        public async Task GetLocationsReturnsLocations()
        {
            //Setup
            var expectedResponse = GetTestResponse();

            var httpResponse = new HttpResponseMessage
            {
                Content    = new StringContent(JsonConvert.SerializeObject(expectedResponse)),
                StatusCode = HttpStatusCode.Accepted,
            };

            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            httpClient.BaseAddress = new System.Uri("https://dummy.com");

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var nationalStatisticsLocationService = new NationalStatisticsLocationService(fakeLogger, httpClient);

            //Act
            var actual = await nationalStatisticsLocationService.GetLocationsAsync().ConfigureAwait(false);

            //Assert
            actual.Should().BeEquivalentTo(expectedResponse.Locations);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task PutAsyncReturnsExceptionWhenHttpResponseIsNotSuccessful()
        {
            // Arrange
            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent("Unsuccessful content")
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var httpClientService = new HttpClientService(options, httpClient, logService, correlationIdProvider);

            // Act
            await Assert.ThrowsAsync <HttpRequestException>(async() => await httpClientService.PutAsync(GetSegmentModel()).ConfigureAwait(false)).ConfigureAwait(false);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 11
0
        public async Task GetContentWhenRegionReturnsRedirectResponseThenFollowRedirect()
        {
            var redirectHttpResponse = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.Redirect,
                Content    = new StringContent(DummyChildAppContent),
            };

            redirectHttpResponse.Headers.Location = new Uri("http://SomeLocation");

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(redirectHttpResponse);

            var fakeRedirectHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var redirectHttpClient             = new HttpClient(fakeRedirectHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeRegionBaseAddress"),
            };

            var model = new RegionModel
            {
                IsHealthy = true,
            };

            var service = new ContentRetriever(redirectHttpClient, logger, regionService, httpResponseMessageHandler);

            await service.GetContent("someUrl", model, true, "baseUrl").ConfigureAwait(false);

            A.CallTo(() => httpResponseMessageHandler.Process(null)).MustHaveHappened();

            fakeRedirectHttpMessageHandler.Dispose();
            redirectHttpResponse.Dispose();
            redirectHttpClient.Dispose();
        }
Exemplo n.º 12
0
        public async Task PatchAsyncReturnsNotFoundStatusCodeForExistingId()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.NotFound;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = segmentClientOptions.BaseAddress
            };
            var httpClientService = new HttpClientService(segmentClientOptions, httpClient, logService, correlationIdProvider);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await httpClientService.PatchAsync(A.Fake <PatchLinksModel>(), "endpoint").ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 13
0
        public async Task PostFullJobProfileAsyncReturnsOkStatusCodeForExistingId()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.OK;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = coreClientOptions.BaseAddress
            };
            var httpClientService = new HttpClientService(coreClientOptions, httpClient, logService, correlationIdProvider);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await httpClientService.PostAsync(A.Fake <CurrentOpportunitiesSegmentModel>()).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task ApiServiceGetReturnsNoContentStatusCode()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.NoContent;
            string expectedResponse             = string.Empty;
            var    httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult, Content = new StringContent(expectedResponse)
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await apiService.GetAsync(httpClient, dummyUrl, MediaTypeNames.Application.Json).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Null(result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 15
0
        public async Task RefreshApprenticeshipsReturnsNullWhenError()
        {
            // arrange
            const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest;
            var documentId   = Guid.NewGuid();
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedStatusCode
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);

            using (var httpClient = new HttpClient(fakeHttpMessageHandler))
            {
                var refreshService = new RefreshService(httpClient, fakeLogger, fakeRefreshClientOptions);

                A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

                // act
                var result = await refreshService.RefreshApprenticeshipsAsync(documentId).ConfigureAwait(false);

                // assert
                Assert.Equal(result, expectedStatusCode);
            }

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task DataLoadServiceGetJobProfileByIdReturnsEmptyResponse()
        {
            // arrange
            var apiResponse  = File.ReadAllText(Directory.GetCurrentDirectory() + "/DataLoadServiceTests/Files/DataLoadService_GetAll_JobProfile_Response.json");
            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(apiResponse)
            };

            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://somebaseaddress")
            };

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var dataLoadService = new DataLoadService <ServiceTaxonomyApiClientOptions>(httpClient, A.Fake <ServiceTaxonomyApiClientOptions>());

            // act
            var result = await dataLoadService.GetByIdAsync <JobProfile>("JobProfile", Guid.NewGuid()).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();

            Assert.Null(result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 17
0
        public async Task CourseGetAsyncReturnsHttpRequestExceptionWhenApiReturnsNotSuccessful()
        {
            // Arrange
            var courseGetRequest = new CourseGetRequest {
                CourseId = courseId, RunId = courseRunId
            };

            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("{}")
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var auditService = A.Fake <IAuditService>();

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger);

            // Act
            await Assert.ThrowsAsync <HttpRequestException>(async() => await findACourseClient.CourseGetAsync(courseGetRequest).ConfigureAwait(false)).ConfigureAwait(false);

            // Assert
            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 18
0
        public async Task RefreshApprenticeshipsReturnsNotFound()
        {
            // arrange
            var documentId = Guid.NewGuid();
            const HttpStatusCode expectedStatusCode = HttpStatusCode.NotFound;
            var feedRefreshResponseModel            = new FeedRefreshResponseModel()
            {
                NumberPulled = 0, RequestErrorMessage = "No results"
            };
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedStatusCode, Content = new StringContent(JsonConvert.SerializeObject(feedRefreshResponseModel))
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);

            using (var httpClient = new HttpClient(fakeHttpMessageHandler))
            {
                var refreshService = new RefreshService(httpClient, fakeLogger, fakeRefreshClientOptions);

                A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

                // act
                var result = await refreshService.RefreshApprenticeshipsAsync(documentId).ConfigureAwait(false);

                // assert
                Assert.Equal(result, expectedStatusCode);
            }

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task GetAsyncReturnsRobotTextWhenApiReturnsRobotText()
        {
            const string ExpectedResponseText = "SomeResponseText";
            var          httpResponse         = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(ExpectedResponseText),
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyCDNUrl")
            };

            var robotService = new ApplicationRobotService(httpClient);
            var model        = new ApplicationRobotModel {
                BearerToken = "SomeBearerToken"
            };

            var result = await robotService.GetAsync(model);

            Assert.Equal(ExpectedResponseText, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 20
0
        public async Task CourseSearchAsyncReturnsBlankResultsWhenApiReturnsBadRequest()
        {
            // Arrange
            var courseSearchRequest = new CourseSearchRequest {
                SubjectKeyword = "Somekeyword"
            };

            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("{}")
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var auditService = A.Fake <IAuditService>();

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger);

            var result = await findACourseClient.CourseSearchAsync(courseSearchRequest).ConfigureAwait(false);

            // Assert
            Assert.NotNull(result);
            Assert.Empty(result.Results);
            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task GetSimpleListReturnsNullWhenError()
        {
            // arrange
            const HttpStatusCode expectedStatusCode             = HttpStatusCode.NotFound;
            IEnumerable <SimpleJobProfileModel> expectedResults = null;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedStatusCode, Content = new StringContent(JsonConvert.SerializeObject(expectedResults))
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);

            using (var httpClient = new HttpClient(fakeHttpMessageHandler))
            {
                var refreshService = new RefreshService(httpClient, fakeLogger, fakeRefreshClientOptions);

                A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

                // act
                var results = await refreshService.GetListAsync().ConfigureAwait(false);

                // assert
                Assert.Equal(expectedResults, results);
            }

            httpResponse.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task GetContentWhenRegionReturnsRedirectResponseThenThrowRedirectException()
        {
            var redirectHttpResponse = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.Redirect,
                Content    = new StringContent(DummyChildAppContent),
            };

            redirectHttpResponse.Headers.Location = new Uri("http://SomeLocation");

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(redirectHttpResponse);

            var fakeRedirectHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var redirectHttpClient             = new HttpClient(fakeRedirectHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeRegionBaseAddress"),
            };

            var model = new RegionModel
            {
                IsHealthy = true,
            };

            var service = new ContentRetriever(redirectHttpClient, logger, appRegistryDataService, httpResponseMessageHandler, markupMessages);

            await Assert.ThrowsAnyAsync <RedirectException>(async() => await service.GetContent("http://someUrl", "path", model, false, "http://baseUrl").ConfigureAwait(false)).ConfigureAwait(false);

            fakeRedirectHttpMessageHandler.Dispose();
            redirectHttpResponse.Dispose();
            redirectHttpClient.Dispose();
        }
        public async Task DeleteAsyncReturnsNotFoundStatusCodeForExistingId()
        {
            // arrange
            const HttpStatusCode expectedResult = HttpStatusCode.NotFound;
            var httpResponse = new HttpResponseMessage {
                StatusCode = expectedResult
            };
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = contentPageClientOptions.BaseAddress
            };
            var httpClientService = new HttpClientService(contentPageClientOptions, httpClient, logger);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            // act
            var result = await httpClientService.DeleteAsync(Guid.NewGuid()).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Equal(expectedResult, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 24
0
        public async Task Given_Location_And_Path_When_SetSchemaAsync_Invoked_Then_It_Should_Return_Result(string schema, string location, string path, HttpStatusCode statusCode)
        {
            var content  = new StringContent(schema);
            var response = new HttpResponseMessage(statusCode)
            {
                Content = content
            };
            var options = new HttpMessageOptions()
            {
                HttpResponseMessage = response
            };
            var handler    = new FakeHttpMessageHandler(options);
            var httpClient = new HttpClient(handler);
            var instance   = new HttpSchemaSink()
                             .WithBaseLocation(location)
                             .WithHttpClient(httpClient);

            var result = await instance.SetSchemaAsync(schema, path).ConfigureAwait(false);

            result.Should().BeTrue();

            content.Dispose();
            handler.Dispose();
            httpClient.Dispose();
        }
Exemplo n.º 25
0
        public async Task PostContentWhenResponseIsStatusFoundThrowRedirectException()
        {
            var model = new RegionModel
            {
                IsHealthy      = true,
                RegionEndpoint = "SomeRegionEndpoint",
                PageRegion     = PageRegion.Body,
            };

            var httpResponseMessage = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.Found,
                Content    = new StringContent(DummyChildAppContent),
            };

            httpResponseMessage.Headers.Location = new Uri("http://SomeLocation");

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponseMessage);

            var fakeRedirectHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var postHttpClient = new HttpClient(fakeRedirectHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeRegionBaseAddress"),
            };

            var service = new ContentRetriever(postHttpClient, logger, regionService, httpResponseMessageHandler);

            await Assert.ThrowsAnyAsync <RedirectException>(async() => await service.PostContent("http://someUrl", model, defaultFormPostParams, "http://baseUrl").ConfigureAwait(false)).ConfigureAwait(false);

            httpResponseMessage.Dispose();
            fakeRedirectHttpMessageHandler.Dispose();
            postHttpClient.Dispose();
        }
Exemplo n.º 26
0
        public async Task GetAsyncReturnsHealthTextWhenApiReturnsHealthText()
        {
            // Arrange
            var expectedResponse = new List <HealthItemModel>
            {
                new HealthItemModel
                {
                    Service = "A service 1",
                    Message = "A message 1",
                },
                new HealthItemModel
                {
                    Service = "A service 2",
                    Message = "A message 2",
                },
            };
            string expectedResponseString = JsonConvert.SerializeObject(expectedResponse);
            var    httpResponse           = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(expectedResponseString),
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };

            var healthService = new ApplicationHealthService(httpClient, logger);
            var model         = new ApplicationHealthModel {
                BearerToken = "SomeBearerToken"
            };

            // Act
            var result = await healthService.GetAsync(model);

            // Assert
            string resultString = JsonConvert.SerializeObject(result);

            Assert.Equal(expectedResponseString, resultString);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 27
0
        public async Task CourseSearchAsyncReturnsResponseObjectWhenApiCallIsSuccessful()
        {
            // Arrange
            var courseSearchRequest = new CourseSearchRequest {
                SubjectKeyword = "Somekeyword"
            };
            var expectedResponse = new CourseSearchResponse
            {
                Results = new List <Result>
                {
                    new Result
                    {
                        CourseId    = courseId,
                        CourseRunId = courseRunId,
                        CourseName  = "CourseName",
                    },
                },
            };

            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(expectedResponse))
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var auditService = A.Fake <IAuditService>();

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };
            var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger);

            // Act
            var result = await findACourseClient.CourseSearchAsync(courseSearchRequest).ConfigureAwait(false);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expectedResponse.Results.FirstOrDefault()?.CourseName, result.Results?.FirstOrDefault()?.CourseName);
            Assert.Equal(expectedResponse.Results?.FirstOrDefault()?.CourseRunId, result.Results?.FirstOrDefault()?.CourseRunId);
            Assert.Equal(expectedResponse.Results?.FirstOrDefault()?.CourseId, result.Results?.FirstOrDefault()?.CourseId);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task TLevelGetAsyncReturnsResponseObjectWhenApiCallIsSuccessful()
        {
            // Arrange
            var expectedResponse = new TLevelDetailResponse
            {
                TLevelId      = tLevelId,
                Qualification = new TLevelQualification()
                {
                    TLevelName = "testTLevel"
                },
                Provider = new TLevelProvider()
                {
                    ProviderName = "testProvider"
                },
            };

            var httpResponse = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(expectedResponse))
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var auditService = A.Fake <IAuditService>();

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyUrl")
            };

            var findACourseClient = new FindACourseClient(httpClient, defaultSettings, auditService, defaultLogger);

            // Act
            var result = await findACourseClient.TLevelGetAsync(tLevelId.ToString()).ConfigureAwait(false);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expectedResponse.Qualification.TLevelName, result.Qualification.TLevelName);
            Assert.Equal(expectedResponse.Provider.ProviderName, result.Provider.ProviderName);
            Assert.Equal(expectedResponse.TLevelId, result.TLevelId);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task ApiServiceGetReturnsExceptionResult()
        {
            // arrange
            var fakeHttpRequestSender  = A.Fake <IFakeHttpRequestSender>();
            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler);

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Throws(new ArgumentException("fake exception"));

            // act
            var result = await apiService.GetAsync(httpClient, dummyUrl, MediaTypeNames.Application.Json).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).MustHaveHappenedOnceExactly();
            Assert.Null(result);

            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
Exemplo n.º 30
0
        public void Given_Schema_And_Path_And_ErrorResponse_When_SetSchemaAsync_Invoked_Then_It_Should_Throw_Exception(string schema, string path, HttpStatusCode statusCode)
        {
            var response = new HttpResponseMessage(statusCode);
            var options  = new HttpMessageOptions()
            {
                HttpResponseMessage = response
            };
            var handler    = new FakeHttpMessageHandler(options);
            var httpClient = new HttpClient(handler);
            var instance   = new HttpSchemaSink()
                             .WithHttpClient(httpClient);

            Func <Task> func = async() => await instance.SetSchemaAsync(schema, path).ConfigureAwait(false);

            func.Should().Throw <HttpRequestException>();

            handler.Dispose();
            httpClient.Dispose();
        }