Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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>());
        }
Example #4
0
        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));
        }
Example #6
0
        static void Main(string[] args)
        {
            Console.Write("Put your GitHub username: "******"Hello {username}, this is your GitHub information:");
            Console.WriteLine(gitHubInformation);
        }
Example #7
0
        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>());
        }
Example #8
0
        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"));
        }
Example #9
0
        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"));
        }
Example #10
0
        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));
        }