public void TestGetCurrentUserSecondTime() { HttpResponseMessage testResponse = this.GenerateSussessfulresponseMessage(); FullUserData testUserObject = this.GenerateTestUser(); ClientResponse <FullUserData> mockResponse = new ClientResponse <FullUserData>() { Message = MessagesHelper.StandartSuccessMessage, Status = OperationStatus.Susseess, ResponseData = testUserObject }; var mock = new Mock <IRequestSender>(); mock.Setup(sender => sender.SendGetRequestToGitHubApiAsync($"/{UrlConstants.CurrentUserUrlPart}")) .ReturnsAsync(testResponse); mock.Setup(sender => sender.ProcessHttpResponse <FullUserData>(testResponse, MessagesHelper.StandartNotFoundMessage)) .ReturnsAsync(mockResponse); UserService userService = new UserService(mock.Object); ClientResponse <FullUserData> testClientResponseFirst = userService.GetCurrentUser().GetAwaiter().GetResult(); ClientResponse <FullUserData> testClientResponseSecond = userService.GetCurrentUser().GetAwaiter().GetResult(); Assert.Equal(testClientResponseFirst.ResponseData, testClientResponseSecond.ResponseData); Assert.Equal(MessagesHelper.DataAlreadyLoadedMessage, testClientResponseSecond.Message); mock.Verify(sender => sender.ProcessHttpResponse <FullUserData>(testResponse, MessagesHelper.StandartNotFoundMessage), Times.Once); }
/// <summary> /// Generates sussessfui http response. /// </summary> /// <returns>Http response with status Ok.</returns> private HttpResponseMessage GenerateSussessfulresponseMessage() { FullUserData testUser = this.GenerateTestUser(); string jsonString = this.GenerateUserJson(testUser); var respMsg = new HttpResponseMessage(HttpStatusCode.OK); respMsg.Content = new StringContent(jsonString); return(respMsg); }
/// <summary> /// Generates test user object. /// </summary> /// <returns>Test user object.</returns> private FullUserData GenerateTestUser() { var testUser = new FullUserData() { Login = UserServiceTest.TestUserLogin, Name = "test name", CreatedAt = DateTime.Now, Email = "testMail", Company = "no", FolloversCount = 1, FollowingCount = 2, Location = "russia", PublicReposCount = 4, URL = "url", UpdatedAt = DateTime.Today }; return(testUser); }
/// <summary> /// Gets user who is owner of access token. /// </summary> /// <returns>ClientResponse instance with full data of current user.</returns> public async Task <ClientResponse <FullUserData> > GetCurrentUser() { if (this.currentUser != null) { var clientResponse = new ClientResponse <FullUserData>() { Message = MessagesHelper.DataAlreadyLoadedMessage, ResponseData = this.currentUser, Status = OperationStatus.Susseess }; return(clientResponse); } else { var url = $"/{UrlConstants.CurrentUserUrlPart}"; HttpResponseMessage httpresponse = await this.requestSender.SendGetRequestToGitHubApiAsync(url); ClientResponse <FullUserData> clientResponse = await this.requestSender.ProcessHttpResponse <FullUserData>(httpresponse, MessagesHelper.StandartNotFoundMessage); this.currentUser = clientResponse.ResponseData; return(clientResponse); } }
/// <summary> /// Generates json string of user object. /// </summary> /// <param name="userObj">The user object.</param> /// <returns>Json string.</returns> private string GenerateUserJson(FullUserData userObj) { return(JsonConvert.SerializeObject(userObj)); }