예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }