예제 #1
0
        public async Task <Dictionary <int, string> > GetRocketsAsync(CancellationToken cancellationToken)
        {
            var relativeUrl            = $"?filter=id,rocket_id";
            var jsonHttpRequestHandler = new JsonHttpRequestHandler <List <SpacexRocketBase> >(httpClient);
            List <SpacexRocketBase> spacexRocketBases = await jsonHttpRequestHandler.Handle(HttpMethod.Get, relativeUrl, cancellationToken);

            return(spacexRocketBases.ToDictionary(r => r.id, r => r.rocket_id));
        }
예제 #2
0
        public async Task <SpacexRocket> GetRocketAsync(string rocketId, CancellationToken cancellationToken)
        {
            var relativeUrl            = $"/{rocketId}?filter=id,active,height/meters,diameter/meters,mass/kg,payload_weights,engines/thrust_to_weight,rocket_name,rocket_id";
            var jsonHttpRequestHandler = new JsonHttpRequestHandler <SpacexRocket>(httpClient);

            SpacexRocket spacexRocket = await jsonHttpRequestHandler.Handle(HttpMethod.Get, relativeUrl, cancellationToken);

            return(spacexRocket);
        }
예제 #3
0
        public async Task Handle_ShouldThrowFormatException()
        {
            foreach (int SuccessStatusCode in successStatusCodes)
            {
                Mock <HttpMessageHandler> handlerMock = GetMockedHandler(spacexRocketBaseListInvalidJson, (HttpStatusCode)SuccessStatusCode);
                HttpClient httpClient = GetClient(spacexRocketsBaseAddress, handlerMock);

                var jsonHttpRequestHandler = new JsonHttpRequestHandler <List <SpacexRocketBaseTest> >(httpClient);
                var httpRequestMessage     = new HttpRequestMessage(HttpMethod.Get,
                                                                    new Uri($"{spacexRocketsBaseAddress}{spacexRocketsRelativeUrl}"));

                // Testing both handle overloads
                await Assert.ThrowsAsync <FormatException>(
                    () => jsonHttpRequestHandler.Handle(HttpMethod.Get, spacexRocketsRelativeUrl, cts.Token));

                await Assert.ThrowsAsync <FormatException>(
                    () => jsonHttpRequestHandler.Handle(httpRequestMessage, cts.Token));
            }
        }
예제 #4
0
        public async Task Handle_SpacexRocketBaseListShouldParse()
        {
            foreach (int SuccessStatusCode in successStatusCodes)
            {
                Mock <HttpMessageHandler> handlerMock = GetMockedHandler(spacexRocketBaseListJson, (HttpStatusCode)SuccessStatusCode);
                HttpClient httpClient             = GetClient(spacexRocketsBaseAddress, handlerMock);
                var        jsonHttpRequestHandler = new JsonHttpRequestHandler <List <SpacexRocketBaseTest> >(httpClient);
                var        httpRequestMessage     = new HttpRequestMessage(HttpMethod.Get,
                                                                           new Uri($"{spacexRocketsBaseAddress}{spacexRocketsRelativeUrl}"));

                List <SpacexRocketBaseTest> expected = GetSpacexRocketBaseList();
                var expectedUri = new Uri(spacexRocketsBaseAddress + spacexRocketsRelativeUrl);

                // Testing both handle overloads.
                var actuals = new List <List <SpacexRocketBaseTest> >();
                actuals.Add(await jsonHttpRequestHandler.Handle(HttpMethod.Get, spacexRocketsRelativeUrl, cts.Token));
                actuals.Add(await jsonHttpRequestHandler.Handle(httpRequestMessage, cts.Token));

                foreach (var actual in actuals)
                {
                    Assert.NotNull(actual);
                    Assert.True(actual.Count == expected.Count);

                    for (int i = 0; i < actual.Count; i++)
                    {
                        Assert.True(actual[i].Equals(expected[i]));
                    }
                }

                handlerMock.Protected().Verify(
                    "SendAsync",
                    Times.Exactly(2),
                    ItExpr.Is <HttpRequestMessage>(req =>
                                                   req.Method == HttpMethod.Get &&
                                                   req.RequestUri == expectedUri
                                                   ),
                    ItExpr.IsAny <CancellationToken>()
                    );
            }
        }