예제 #1
0
        public async Task OnErrorShouldReturnErrorObject()
        {
            // Arrange
            //
            var faceSettings = TestHelper.GetFaceSettings();
            var lat = (decimal) 38.855652;
            var lon = (decimal) -94.799712;

            var handler = new Mock<HttpMessageHandler>();
            handler.SetupAnyRequest()
                .ReturnsResponse(HttpStatusCode.BadRequest);

            var client = new VirtualearthClient(
                TestHelper.GetLoggerMock<VirtualearthClient>().Object,
                handler.CreateClient(),
                faceSettings,
                TestHelper.GetMetricsMock().Object);

            // Act
            //
            var result = await client.RequestLocationName(lat, lon);

            // Assert
            //
            Assert.Equal(RequestStatusCode.Error, result.RequestStatus.StatusCode);
            Assert.Equal(400, result.RequestStatus.ErrorCode);
            Assert.Null(result.CityName);
        }
예제 #2
0
        public async Task OnSuccessShouldReturnValidObject()
        {
            // Arrange
            //
            var faceSettings = TestHelper.GetFaceSettings();
            var lat = (decimal) 38.855652;
            var lon = (decimal) -94.799712;

            var handler = new Mock<HttpMessageHandler>();
            var locationResponse =
                "{\"resourceSets\": [{\"resources\": [{\"name\": \"Olathe, KS\", \"address\": { \"adminDistrict\": \"KS\",\"adminDistrict2\": \"Johnson Co.\",\"countryRegion\": \"United States\",\"formattedAddress\": \"Olathe, KS\",\"locality\": \"Olathe\"}}]}]}";
            handler.SetupRequest(HttpMethod.Get, faceSettings.BuildLocationUrl(lat, lon))
                .ReturnsResponse(locationResponse, "application/json");

            var client = new VirtualearthClient(
                TestHelper.GetLoggerMock<VirtualearthClient>().Object,
                handler.CreateClient(),
                faceSettings,
                TestHelper.GetMetricsMock().Object);

            // Act
            //
            var result = await client.RequestLocationName(lat, lon);

            // Assert
            //
            Assert.Equal(RequestStatusCode.Ok, result.RequestStatus.StatusCode);
            Assert.Equal("Olathe, KS", result.CityName);
        }
예제 #3
0
 public YAFaceController(
     ILogger <YAFaceController> logger, PostgresDataProvider postgresDataProvider, KafkaProvider kafkaProvider,
     ExchangeRateCacheStrategy exchangeRateCacheStrategy,
     VirtualearthClient virtualearthClient,
     DarkSkyClient darkSkyClient,
     OpenWeatherClient openWeatherClient,
     FaceSettings faceSettings)
 {
     _logger = logger;
     _postgresDataProvider      = postgresDataProvider;
     _kafkaProvider             = kafkaProvider;
     _exchangeRateCacheStrategy = exchangeRateCacheStrategy;
     _virtualearthClient        = virtualearthClient;
     _darkSkyClient             = darkSkyClient;
     _openWeatherClient         = openWeatherClient;
     _faceSettings = faceSettings;
 }
예제 #4
0
        public async Task OnAuthErrorShouldLogAuthIssue()
        {
            // Arrange
            //
            var faceSettings = TestHelper.GetFaceSettings();
            var lat = (decimal) 38.855652;
            var lon = (decimal) -94.799712;

            var loggerMock = TestHelper.GetLoggerMock<VirtualearthClient>();

            var handler = new Mock<HttpMessageHandler>();
            handler.SetupAnyRequest()
                .ReturnsResponse(HttpStatusCode.Unauthorized);

            var client = new VirtualearthClient(
                loggerMock.Object,
                handler.CreateClient(),
                faceSettings,
                TestHelper.GetMetricsMock().Object);

            // Act
            //
            var result = await client.RequestLocationName(lat, lon);

            // Assert
            //
            Assert.Equal(RequestStatusCode.Error, result.RequestStatus.StatusCode);
            Assert.Equal(401, result.RequestStatus.ErrorCode);
            Assert.Null(result.CityName);
            loggerMock.Verify(
                x => x.Log(
                    It.IsAny<LogLevel>(),
                    It.IsAny<EventId>(),
                    It.Is<It.IsAnyType>((o, t) => string.Equals("Unauthorized access to virtualearth", o.ToString(), StringComparison.InvariantCultureIgnoreCase)),
                    It.IsAny<Exception>(),
                    (Func<It.IsAnyType, Exception, string>) It.IsAny<object>()),
                Times.Once);
        }