/// <summary> /// This method is responsible for retrieving all projects from a user. /// </summary> /// <param name="accessToken">The access token which is used to authenticate and retrieve private projects.</param> /// <returns>This method returns all the projects from a user.</returns> public async Task <IEnumerable <Project> > GetAllProjects(string accessToken) { GitlabDataSourceUserResourceResult user = await FetchUserFromAccessToken(accessToken); List <GitlabDataSourceResourceResult> gitlabDataSources = (await FetchAllGitlabRepositories(accessToken, user.Username)).ToList(); List <Project> projects = mapper.Map <List <GitlabDataSourceResourceResult>, List <Project> >(gitlabDataSources); return(projects); }
public async Task FetchUserFromAccessToken_GoodFlow( [GitlabDataSourceUserResourceResultDataSource] GitlabDataSourceUserResourceResult userResourceResult) { // Arrange MockRestClient(userResourceResult, HttpStatusCode.OK); DataSourceAdaptee = new GitlabDataSourceAdaptee(ConfigurationMock, ClientFactoryMock.Object, Mapper); // Act Action act = () => DataSourceAdaptee.FetchUserFromAccessToken(It.IsAny <string>()); GitlabDataSourceUserResourceResult retrievedUsers = await DataSourceAdaptee.FetchUserFromAccessToken(It.IsAny <string>()); // Assert act.Should() .NotThrow(); retrievedUsers.Should() .BeEquivalentTo(userResourceResult); }
/// <summary> /// This method is responsible for retrieving a user from the specified access token. /// </summary> /// <param name="accessToken">The access token parameter which is used to retrieve the correct user.</param> /// <returns>This method returns the user from the access token.</returns> /// <exception cref="ExternalException"> /// This method could throw an external exception whenever the status code is not /// successful. /// </exception> public async Task <GitlabDataSourceUserResourceResult> FetchUserFromAccessToken(string accessToken) { IRestClient client = restClientFactory.Create(new Uri(BaseUrl)); IRestRequest request = new RestRequest("user"); request.AddHeader("Authorization", $"Bearer {accessToken}"); IRestResponse response = await client.ExecuteAsync(request); if (!response.IsSuccessful) { throw new ExternalException(response.ErrorMessage); } if (string.IsNullOrEmpty(response.Content)) { return(null); } GitlabDataSourceUserResourceResult userResourceResult = JsonConvert.DeserializeObject <GitlabDataSourceUserResourceResult>(response.Content); return(userResourceResult); }