예제 #1
0
        protected Repository GetRepository(string name, Permission p)
        {
            var r = new Repository();

            r.GetType().InvokeMember("Name", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.SetProperty | BindingFlags.Instance, null, r, new object[] { name });
            r.GetType().InvokeMember("DefaultBranch", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.SetProperty | BindingFlags.Instance, null, r, new object[] { "main" });

            RepositoryPermissions rp;

            switch (p)
            {
            case Permission.Admin:
                rp = new RepositoryPermissions(admin: true, false, false);
                break;

            case Permission.Push:
                rp = new RepositoryPermissions(false, push: true, false);
                break;

            default:
                rp = new RepositoryPermissions(false, false, pull: true);
                break;
            }

            r.GetType().InvokeMember("Permissions", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.SetProperty | BindingFlags.Instance, null, r, new object[] { rp });

            return(r);
        }
        static GitHubUserModelServiceTests()
        {
            var appId = Faker.Random.Long(0);

            var fakeUser = new Faker <User>()
                           .CustomInstantiator(f =>
            {
                string avatarUrl         = f.Internet.Url();
                string bio               = f.Lorem.Paragraph(1);
                string blog              = f.Internet.Url();
                int collaborators        = f.Random.Int(0);
                string company           = f.Random.Bool() ? null : f.Company.CompanyName();
                DateTimeOffset createdAt = f.Date.PastOffset(2);
                DateTimeOffset updatedAt = f.Date.PastOffset(1);
                int diskUsage            = f.Random.Int(0);
                string email             = f.Internet.Email();
                int followers            = f.Random.Int(0);
                int following            = f.Random.Int(0);
                bool?hireable            = f.Random.Bool() ? (bool?)null : f.Random.Bool();
                string htmlUrl           = f.Internet.Url();
                int totalPrivateRepos    = f.Random.Int(0);
                int id                            = f.Random.Int(0);
                string location                   = f.Address.City();
                string login                      = f.Internet.UserName();
                string name                       = f.Person.FullName;
                string nodeId                     = f.Random.String();
                int ownedPrivateRepos             = f.Random.Int(0);
                Plan plan                         = null;
                int privateGists                  = f.Random.Int(0);
                int publicGists                   = f.Random.Int(0);
                int publicRepos                   = f.Random.Int(0);
                string url                        = f.Internet.Url();
                RepositoryPermissions permissions =
                    new RepositoryPermissions(f.Random.Bool(), f.Random.Bool(), f.Random.Bool());
                bool siteAdmin = f.Random.Bool();
                string ldapDistinguishedName = f.Person.FullName;
                DateTimeOffset?suspendedAt   = null;

                return(new User(avatarUrl, bio, blog, collaborators, company, createdAt, updatedAt, diskUsage,
                                email, followers, following, hireable, htmlUrl, totalPrivateRepos, id, location, login,
                                name, nodeId, ownedPrivateRepos, plan, privateGists, publicGists, publicRepos, url,
                                permissions, siteAdmin, ldapDistinguishedName, suspendedAt));
            });

            FakeInstallation = new Faker <Installation>()
                               .RuleFor(i => i.Id, (f, i) => f.Random.Long(0))
                               .RuleFor(i => i.AppId, (f, i) => appId)
                               .RuleFor(i => i.Account, (f, i) => fakeUser.Generate());

            FakeRepository = new Faker <Repository>()
                             .RuleFor(response => response.Id, (faker1, repository) => faker1.Random.Long(0))
                             .RuleFor(response => response.Owner, (faker1, repository) => fakeUser.Generate())
                             .RuleFor(response => response.Name, (faker1, repository) => faker1.Lorem.Word())
                             .RuleFor(response => response.Url, (faker1, repository) => faker1.Internet.Url());

            FakeRepositoriesResponse = new Faker <RepositoriesResponse>()
                                       .RuleFor(r => r.Repositories, (f, r) => FakeRepository.Generate(Faker.Random.Int(1, 10)))
                                       .RuleFor(r => r.TotalCount, (f, r) => r.Repositories.Count);
        }
예제 #3
0
        public async Task ShouldErrorIfTokenIsNotAdmin()
        {
            var request = new RegistrationRequest {
                AdminPat = Pat, Labels = new string[] { }, Owner = Owner, Repository = Repo
            };
            var register   = new Register(request, Assembly.GetExecutingAssembly().Location);
            var mockClient = new Mock <IGitHubClient>();
            var perms      = new RepositoryPermissions(false, true, true);

            mockClient.Setup(c => c.Repository.Get(Owner, Repo)).ReturnsAsync(new Repository(default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, perms, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default));
예제 #4
0
        private static Repository MakeParentRepo(
            string htmlUrl  = ParentHtmlUrl,
            string cloneUrl = ParentCloneUrl)
        {
            const string omniUrl = "http://somewhere.com/parent";
            var          owner   = MakeUser(omniUrl);

            var perms = new RepositoryPermissions(false, true, true);

            return(new Repository(omniUrl, htmlUrl, cloneUrl, omniUrl, omniUrl, omniUrl, omniUrl,
                                  123, owner, "repoName", "repoName", "a test repo", omniUrl, "EN", false, true,
                                  1, 1, "master", 1, null,
                                  DateTimeOffset.Now, DateTimeOffset.Now,
                                  perms, null, null, null,
                                  false, false, false, false, 2, 122, true, true, true));
        }
예제 #5
0
        public static Repository MakeRepository(
            string forkHtmlUrl  = ForkHtmlUrl,
            string forkCloneUrl = ForkCloneUrl,
            bool canPull        = true, bool canPush = true)
        {
            const string omniUrl = "http://somewhere.com/fork";
            var          owner   = MakeUser(omniUrl);

            var perms  = new RepositoryPermissions(false, canPush, canPull);
            var parent = MakeParentRepo();

            return(new Repository(omniUrl, forkHtmlUrl, forkCloneUrl, omniUrl, omniUrl, omniUrl, omniUrl,
                                  123, owner, "repoName", "repoName", "a test repo", omniUrl, "EN", false, true,
                                  1, 1, "master", 1, null, DateTimeOffset.Now, DateTimeOffset.Now,
                                  perms, parent, null, null,
                                  false, false, false, false, 2, 122, true, true, true));
        }
예제 #6
0
        public async Task GrantGroup(string projectKey, string repository, string group, RepositoryPermissions permission)
        {
            string requestUrl = UrlBuilder.FormatRestApiUrl(PERMISSION_GRANT_GROUP, null, projectKey, repository, permission.ToString(), group);

            await _httpWorker.PutAsync <Object>(requestUrl, new Object()).ConfigureAwait(false);
        }
예제 #7
0
        public async Task GrantGroup(string projectKey, string repository, string group, RepositoryPermissions permission)
        {
            string requestUrl = UrlBuilder.FormatRestApiUrl(PERMISSION_GRANT_GROUP, null, projectKey, repository, permission.ToString(), group);

            await _httpWorker.PutAsync<Object>(requestUrl, new Object()).ConfigureAwait(false);
        }
예제 #8
0
 private static Repository CreateRepository(string url = null, string htmlUrl = null, string cloneUrl = null, string gitUrl = null, string sshUrl = null, string svnUrl = null, string mirrorUrl = null, int id = 0, User owner = null, string name = null, string fullName = null, string description = null, string homepage = null, string language = null, bool @private = false, bool fork = false, int forksCount = 0, int stargazersCount = 0, string defaultBranch = null, int openIssuesCount = 0, DateTimeOffset?pushedAt = null, DateTimeOffset?createdAt = null, DateTimeOffset?updatedAt = null, RepositoryPermissions permissions = null, Repository parent = null, Repository source = null, bool hasIssues = false, bool hasWiki = false, bool hasDownloads = false)
 {
     return(new Repository(url, htmlUrl, cloneUrl, gitUrl, sshUrl, svnUrl, mirrorUrl, id, owner, name, fullName, description, homepage, language, @private, fork, forksCount, stargazersCount, defaultBranch, openIssuesCount, pushedAt, createdAt ?? DateTimeOffset.UtcNow, updatedAt ?? DateTimeOffset.UtcNow, permissions, parent, source, hasIssues, hasWiki, hasDownloads));
 }
 protected override void Initialize(RequestContext requestContext)
 {
     if (Repository == null) { Repository = new RepositoryPermissions(); }
     base.Initialize(requestContext);
 }