public async void ReturnBuildStatusGivenValidArgs()
        {
            // arrange
            const string projectName = "asdf";
            const string buildId     = "qwer";
            const string expected    = "{'name' : 'Test McGee'}";

            JenkinsSettings settings = new JenkinsSettings();

            settings.HostURL = "http://example.org";

            var mockHttp = new MockHttpMessageHandler();

            mockHttp.When($"{settings.HostURL}/job/{projectName}/{buildId}/api/json?depth=1")
            .Respond("application/json", expected);

            HttpClient httpClient = new HttpClient(mockHttp);

            JenkinsApiClient jenkinsApiClient = new JenkinsApiClient(settings, httpClient);

            // act
            var jsonObject = await jenkinsApiClient.GetBuildStatus(projectName, buildId, 1);

            // assert
            var actual = JsonConvert.SerializeObject(jsonObject);

            Assert.Equal(FormatJson(expected), FormatJson(actual));
        }
        public async Task <IActionResult> Get(string projectName, string buildId)
        {
            // last path segment is optional
            var actualBuildId = buildId ?? JenkinsApiClient.LastBuildId;

            logger.LogInformation($"Serving badge for route {Request.Path} [{projectName} and {actualBuildId}]");

            var buildStatus = await apiClient.GetBuildStatus(projectName, actualBuildId);

            string result = ExtractResultFromBuildStatus(buildStatus);

            var badgeName = GetBadgeNameForBuildResult(result);

            return(new FileStreamResult(new FileStream($"images/badges/{badgeName}", FileMode.Open), "image/svg+xml"));
        }
        public async Task <IActionResult> Get(string projectName, string buildId, string caption = "tests")
        {
            // last path segment is optional
            var actualBuildId = buildId ?? JenkinsApiClient.LastBuildId;

            logger.LogInformation($"Serving badge for route {Request.Path} [{projectName} and {actualBuildId}]");

            var buildStatus = await apiClient.GetBuildStatus(projectName, actualBuildId);

            Tuple <int, int> testResults = ExtractTestResultsFromBuildStatus(buildStatus);

            byte[] content = await GetBadgeContentForTestResults(testResults, caption);

            return(File(content, "image/svg+xml"));
        }