public HelloWorldInfraModel GetData()
        {
            HelloWorldInfraModel modelData = null;

            // Set the URL for the request
            this.restClient.BaseUrl = this.uriService.GetUri(this.appSettings.Get(AppSettingsKeys.HelloWorldApiUrlKey));

            // Setup the request
            this.restRequest.Resource = "HelloWorld";
            this.restRequest.Method   = Method.GET;

            // Clear the request parameters
            this.restRequest.Parameters.Clear();

            // Execute the call and get the response
            var response = this.restClient.Execute <HelloWorldInfraModel>(this.restRequest);

            // Check for data in the response
            if (response != null)
            {
                // Check if any actual data was returned
                if (response.Data != null)
                {
                    modelData = response.Data;
                }
                else
                {
                    var errorMessage = "Error in RestSharp, most likely in endpoint URL." + " Error message: "
                                       + response.ErrorMessage + " HTTP Status Code: "
                                       + response.StatusCode + " HTTP Status Description: "
                                       + response.StatusDescription;

                    // Check for existing exception
                    if (response.ErrorMessage != null && response.ErrorException != null)
                    {
                        // Log an informative exception including the RestSharp exception
                        this.logger.Error(errorMessage, null, response.ErrorException);
                    }
                    else
                    {
                        // Log an informative exception including the RestSharp content
                        this.logger.Error(errorMessage, null, new Exception(response.Content));
                    }
                }
            }
            else
            {
                // Log the exception
                const string ErrorMessage =
                    "Did not get any response from the Hello World Web Api for the Method: GET /helloworld";

                this.logger.Error(ErrorMessage, null, new Exception(ErrorMessage));
            }

            return(modelData);
        }
        public void UnitTestHelloWorldConsoleAppRunNormalDataNullDataNullErrorException()
        {
            // Create return models for dependencies
            const string         WebApiIUrl        = "http://www.somesiteheretesting.com";
            var                  uri               = new Uri(WebApiIUrl);
            var                  mockParameters    = new Mock <List <Parameter> >();
            var                  mockRestResponse  = new Mock <IRestResponse <HelloWorldInfraModel> >();
            HelloWorldInfraModel modelData         = null;
            const string         ErrorMessage      = "Error Message";
            const HttpStatusCode StatusCode        = HttpStatusCode.InternalServerError;
            const string         StatusDescription = "Status Description";
            Exception            errorException    = null;
            const string         ProfileContent    = "Content here";

            var errorMessage = "Error in RestSharp, most likely in endpoint URL."
                               + " Error message: " + ErrorMessage
                               + " HTTP Status Code: " + StatusCode
                               + " HTTP Status Description: " + StatusDescription;

            // Set up dependencies
            this.appSettingsMock.Setup(m => m.Get(AppSettingsKeys.HelloWorldApiUrlKey)).Returns(WebApiIUrl);
            this.uriServiceMock.Setup(m => m.GetUri(WebApiIUrl)).Returns(uri);
            this.restRequestMock.Setup(m => m.Parameters).Returns(mockParameters.Object);
            this.restClientMock.Setup(m => m.Execute <HelloWorldInfraModel>(It.IsAny <IRestRequest>())).Returns(mockRestResponse.Object);
            mockRestResponse.Setup(m => m.Data).Returns(modelData);
            mockRestResponse.Setup(m => m.ErrorMessage).Returns(ErrorMessage);
            mockRestResponse.Setup(m => m.StatusCode).Returns(StatusCode);
            mockRestResponse.Setup(m => m.StatusDescription).Returns(StatusDescription);
            mockRestResponse.Setup(m => m.ErrorException).Returns(errorException);
            mockRestResponse.Setup(m => m.Content).Returns(ProfileContent);

            // Call the method to test
            var response = this.helleHelloWorldWebService.GetData();

            // Check values
            Assert.IsNull(response);
            Assert.AreEqual(this.logMessageList.Count, 1);
            Assert.AreEqual(this.logMessageList[0], errorMessage);
            Assert.AreEqual(this.exceptionList.Count, 1);
            Assert.AreEqual(this.exceptionList[0].Message, ProfileContent);
        }