public async Task AGitHubConnector_WillReturnAGitHubUser_WhenSearchingSuccessfully() { Newtonsoft.Json.Linq.JObject expectedUser = Generators.JsonGitHubUser.Sample(50, 1).First(); HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(expectedUser.ToString()) }; HttpResponseMessage expectedRepositoriesResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent("[]") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.SetupSequence(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub) .ReturnsAsync(expectedRepositoriesResponse); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); GitHubUser result = await connector.FindUser("test"); Assert.AreEqual(result.FullName, expectedUser.GetValue("name").ToString()); }
public async Task AGitHubConnector_WillReturnAGitHubUsersRepositories_WhenSearchingSuccessfullyForUser_AndThereIsReposAvailable() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(@"{login:'******'}") }; Newtonsoft.Json.Linq.JArray expectedRepositories = Generators.JsonGitHubRepositories.Sample(50, 1).First(); HttpResponseMessage expectedRepositoriesResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(expectedRepositories.ToString()) }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.SetupSequence(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub) .ReturnsAsync(expectedRepositoriesResponse); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); GitHubUser result = await connector.FindUser("test"); Assert.AreEqual(result.Repositories.ToList().Count, expectedRepositories.Count); }
AGitHubConnector_WhenFetchingUsersRepositories_IfNotSuccess_ThenConsiderTheWholeTransactionAsFailed_AndThrowExceptionAccordingly() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(@"{login:'******'}") }; Newtonsoft.Json.Linq.JArray expectedRepositories = Generators.JsonGitHubRepositories.Sample(50, 1).First(); HttpResponseMessage expectedRepositoriesResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.UpgradeRequired, Content = new StringContent(@"We have a problem") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.SetupSequence(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub) .ReturnsAsync(expectedRepositoriesResponse); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); Assert.That(async() => await connector.FindUser("test"), Throws.Exception.TypeOf <HttpRequestException>()); }
public void Run() { var connector = new GitHubConnector("daniefer"); var info = connector.GetFormattedUserInfoAsync().Result; System.Console.WriteLine(info); }
public void ValidateUserInformation() { //Given var mockRestClient = new Mock <RestSharp.RestClient>(); var response = new RestSharp.RestResponse(); var username = "******"; dynamic fakeUserInformation = new { login = username, name = "name", company = "company", blog = "blog", twitter_username = username, html_url = "html_url", public_repos = "public_repos", created_at = "created_at", updated_at = "updated_at", }; var expectedUser = new UserInformation { Login = fakeUserInformation.login, FullName = fakeUserInformation.name, Company = fakeUserInformation.company, Blog = fakeUserInformation.blog, TwitterAccount = fakeUserInformation.twitter_username, GitHubPage = fakeUserInformation.html_url, PublicRepos = fakeUserInformation.public_repos, CreationDate = fakeUserInformation.created_at, LastUpdate = fakeUserInformation.updated_at, }; response.Content = JsonConvert.SerializeObject(fakeUserInformation); mockRestClient.Setup(m => m.Execute(It.IsAny <RestRequest>())) .Returns(response); var connector = new GitHubConnector(mockRestClient.Object); //When var result = connector.GetUserInformation(username); //Then Assert.Equal(expectedUser.Login, result.Login); Assert.Equal(expectedUser.FullName, result.FullName); Assert.Equal(expectedUser.Company, result.Company); Assert.Equal(expectedUser.Blog, result.Blog); Assert.Equal(expectedUser.TwitterAccount, result.TwitterAccount); Assert.Equal(expectedUser.GitHubPage, result.GitHubPage); Assert.Equal(expectedUser.PublicRepos, result.PublicRepos); Assert.Equal(expectedUser.CreationDate, result.CreationDate); Assert.Equal(expectedUser.LastUpdate, result.LastUpdate); Assert.NotEmpty(expectedUser.ToString()); mockRestClient.Verify(m => m.Execute(It.IsAny <RestRequest>()), Times.Exactly(1)); }
static void Main(string[] args) { Console.Write("Put your GitHub username: "******"Hello {username}, this is your GitHub information:"); Console.WriteLine(gitHubInformation); }
public async Task AGitHubConnector_WhenThrowingUnrecognizedException_WillBubbleUpHttpRequestException() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.UpgradeRequired, Content = new StringContent(@"We have a problem") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.Setup(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); Assert.That(async() => await connector.FindUser("test"), Throws.Exception.TypeOf <HttpRequestException>()); }
public async Task AGitHubConnector_WillThrowServiceUnavailableException_IfGitHubIsNotAvailable() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.ServiceUnavailable, Content = new StringContent(@"Git is not ready at the moment") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.Setup(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); Assert.That(async() => await connector.FindUser("test"), Throws.Exception.TypeOf <SearchFunctionalityNotAvailableException>().And.Message.EqualTo("Find functionality is not available at the minute")); }
public async Task AGitHubConnector_WillThrowA404Exception_IfUserDoesNotExist() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { StatusCode = HttpStatusCode.NotFound, Content = new StringContent(@"User has not been found") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.Setup(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); Assert.That(async() => await connector.FindUser("test"), Throws.Exception.TypeOf <GitHubUserNotFoundException>().And.Message.EqualTo("GitHub user not found")); }
public async Task AGitHubConnector_WillReturnAGitHubUser_WhenSearching() { HttpResponseMessage expectedResponseFromGitHub = new HttpResponseMessage { Content = new StringContent(@"{login:'******'}") }; HttpResponseMessage expectedRepositoriesResponse = new HttpResponseMessage { Content = new StringContent("[]") }; Mock <IAppHttpClient> appHttpClient = new Mock <IAppHttpClient>(); appHttpClient.SetupSequence(c => c.Get(It.IsAny <string>())) .ReturnsAsync(expectedResponseFromGitHub) .ReturnsAsync(expectedRepositoriesResponse); GitHubConnector connector = new GitHubConnector(appHttpClient.Object); GitHubUser result = await connector.FindUser("test"); Assert.AreEqual(result.GetType(), typeof(GitHubUser)); }