public void EnsureNonNullOrg()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                Assert.ThrowsAsync <ArgumentException>(() => client.AddRepository(1, null, "Repo Name"));
            }
示例#2
0
        internal TookanClient(IConnection connection)
        {
            var apiConnection = new ApiConnection(connection);

            Agents = new AgentsClient(apiConnection);
            Teams  = new TeamsClient(apiConnection);
        }
示例#3
0
            public async Task EnsuresNonNullArguments()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllChildTeams(1, null));
            }
示例#4
0
        /// <inheritdoc/>
        public async Task <IListResult <Person> > GetUsersAsync(string email            = "", string displayName = "",
                                                                IEnumerable <string> id = default, string orgId  = "", int max = 100)
        {
            var roomParams = new List <KeyValuePair <string, string> >();

            if (id != null && id.Any() && IdIsAcceptableLength(id))
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(id), string.Join(",", id)));
            }

            if (max != 100)
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(max), max.ToString()));
            }

            if (!string.IsNullOrEmpty(email))
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(email), email));
            }

            if (!string.IsNullOrEmpty(displayName))
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(displayName), displayName));
            }

            if (!string.IsNullOrEmpty(orgId))
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(orgId), orgId));
            }

            var path = await GetPathWithQueryAsync(WxTeamsConstants.PeopleUrl, roomParams);

            return(await TeamsClient.GetResultsAsync <Person>(path));
        }
示例#5
0
        /// <inheritdoc/>
        public async Task <IListResult <ResourceGroupMembership> > GetResourceGroupMembershipsAsync(int max            = 100, string licenseId = "", string personId = "",
                                                                                                    string personOrgId = "", ResourceMembershipStatus?status = null)
        {
            var resourceParams = new List <KeyValuePair <string, string> >();

            if (max != 100)
            {
                resourceParams.Add(new KeyValuePair <string, string>(nameof(max), max.ToString()));
            }

            if (!string.IsNullOrEmpty(licenseId))
            {
                resourceParams.Add(new KeyValuePair <string, string>(nameof(licenseId), licenseId));
            }

            if (!string.IsNullOrEmpty(personId))
            {
                resourceParams.Add(new KeyValuePair <string, string>(nameof(personId), personId));
            }

            if (!string.IsNullOrEmpty(personOrgId))
            {
                resourceParams.Add(new KeyValuePair <string, string>(nameof(personOrgId), personOrgId));
            }

            if (status != null)
            {
                resourceParams.Add(new KeyValuePair <string, string>(nameof(status), status.ToString()));
            }

            var path = await GetPathWithQueryAsync(WxTeamsConstants.ResourceMembershipsUrl, resourceParams);

            return(await TeamsClient.GetResultsAsync <ResourceGroupMembership>(path));
        }
        public BitbucketClient(
            Connection apiConnection,
            Connection internalConnection,
            Connection versionOneApiConnection,
            Connection webConnection,
            IProxyResolver proxyResolver
            )
        {
            ApiConnection = apiConnection;
            var client = new BitbucketRestClient(apiConnection)
            {
                ProxyResolver = proxyResolver
            };
            var internalClient = new BitbucketRestClient(internalConnection)
            {
                ProxyResolver = proxyResolver
            };
            var versionOneClient = new BitbucketRestClient(versionOneApiConnection)
            {
                ProxyResolver = proxyResolver
            };
            var webClient = new BitbucketRestClient(webConnection)
            {
                ProxyResolver = proxyResolver
            };

            RepositoriesClient = new RepositoriesClient(client, versionOneClient, ApiConnection);
            UserClient         = new UserClient(client, ApiConnection);
            PullRequestsClient = new PullRequestsClient(client, internalClient, webClient, versionOneClient, ApiConnection);
            TeamsClient        = new TeamsClient(client, ApiConnection);
        }
示例#7
0
            public void EnsuresNonNullArguments()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                Assert.Throws <ArgumentNullException>(() => client.Update(1, null));
            }
            public void EnsureNonNullRepo()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                AssertEx.Throws <ArgumentException>(() => client.AddRepository(1, "org name", null));
            }
示例#9
0
        /// <inheritdoc/>
        public async Task <IListResult <RoomMembership> > GetMembershipsAssociatedWithAsync(string userIdOrEmail, int max = 100)
        {
            var membershipParams = BuildMembershipQuery(max, userIdOrEmail, null);
            var path             = await GetPathWithQueryAsync(WxTeamsConstants.MembershipsUrl, membershipParams);

            return(await TeamsClient.GetResultsAsync <RoomMembership>(path));
        }
示例#10
0
        /// <inheritdoc/>
        public async Task <IListResult <RoomMembership> > GetRoomMembershipsAsync(string roomId, int max = 100)
        {
            var membershipParams = BuildMembershipQuery(max, null, roomId);
            var path             = await GetPathWithQueryAsync(WxTeamsConstants.MembershipsUrl, membershipParams);

            return(await TeamsClient.GetResultsAsync <RoomMembership>(path));
        }
示例#11
0
            public async Task EnsuresNonEmptyLogin()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                await Assert.ThrowsAsync <ArgumentException>(() => client.GetMembership(1, ""));
            }
示例#12
0
            public void EnsuresNonNullLogin()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                Assert.ThrowsAsync <ArgumentNullException>(() => client.GetMembership(1, null));
            }
示例#13
0
            public void EnsuresNonEmptyLogin()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                AssertEx.Throws <ArgumentException>(() => client.IsMember(1, ""));
            }
示例#14
0
        /// <inheritdoc/>
        public async Task <IListResult <Room> > GetRoomsAsync(int max       = 100, string teamId  = "",
                                                              RoomType?type = null, SortBy?sortBy = null)
        {
            var roomParams = new List <KeyValuePair <string, string> >();

            if (max != 100)
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(max), max.ToString()));
            }

            if (!string.IsNullOrEmpty(teamId))
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(teamId), teamId));
            }

            if (type != null)
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(type), type.ToString().ToLower()));
            }

            if (sortBy != null)
            {
                roomParams.Add(new KeyValuePair <string, string>(nameof(sortBy), sortBy.ToString().ToLower()));
            }

            var path = await GetPathWithQueryAsync(WxTeamsConstants.RoomsUrl, roomParams);

            return(await TeamsClient.GetResultsAsync <Room>(path));
        }
示例#15
0
            public async Task EnsuresNonNullArguments()
            {
                var teams = new TeamsClient(Substitute.For<IApiConnection>());

                await Assert.ThrowsAsync<ArgumentNullException>(() => teams.GetAll(null));
                await Assert.ThrowsAsync<ArgumentNullException>(() => teams.GetAll("orgName", null));
            }
示例#16
0
        /// <inheritdoc/>
        public async Task <Room> UpdateRoomAsync(string roomId, string title)
        {
            var props = new RoomParams {
                Title = title
            };

            return(await TeamsClient.PutResultAsync <Room, RoomParams>($"{WxTeamsConstants.RoomsUrl}/{roomId}", props));
        }
示例#17
0
            public async Task RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);
                await client.RemoveMembership(1, "user");

                connection.Connection.Received().Delete(Arg.Is <Uri>(u => u.ToString() == "teams/1/memberships/user"));
            }
示例#18
0
            public async Task RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);
                await client.RemoveRepository(1, "org", "repo");

                connection.Connection.Received().Delete(Arg.Is <Uri>(u => u.ToString() == "teams/1/repos/org/repo"));
            }
示例#19
0
            public async Task EnsuresNonNullArguments()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                AssertEx.Throws <ArgumentNullException>(async() => await
                                                        client.UpdateTeam(1, null));
            }
示例#20
0
        /// <inheritdoc/>
        public async Task <Team> UpdateTeamAsync(string teamId, string name)
        {
            var teamParams = new TeamParams {
                Name = name
            };

            return(await TeamsClient.PutResultAsync <Team, TeamParams>($"{WxTeamsConstants.TeamsUrl}/{teamId}", teamParams));
        }
示例#21
0
        /// <inheritdoc/>
        public async Task <Room> CreateRoomAsync(string title, string teamId = null)
        {
            var props = new RoomParams {
                Title = title, TeamId = teamId
            };

            return(await TeamsClient.PostResultAsync <Room, RoomParams>(WxTeamsConstants.RoomsUrl, props));
        }
示例#22
0
        /// <inheritdoc/>
        public async Task <Team> CreateTeamAsync(string name)
        {
            var teamParams = new TeamParams {
                Name = name
            };

            return(await TeamsClient.PostResultAsync <Team, TeamParams>(WxTeamsConstants.TeamsUrl, teamParams));
        }
示例#23
0
        /// <inheritdoc/>
        public async Task <TeamMembership> UpdateTeamMembership(string membershipId, bool isModerator)
        {
            var props = new MembershipParams {
                IsModerator = isModerator
            };

            return(await TeamsClient.PutResultAsync <TeamMembership, MembershipParams>($"{WxTeamsConstants.TeamMembershipsUrl}/{membershipId}", props));
        }
示例#24
0
            public async Task EnsuresNonNullArguments()
            {
                var teams = new TeamsClient(Substitute.For <IApiConnection>());

                await Assert.ThrowsAsync <ArgumentNullException>(() => teams.GetAll(null));

                await Assert.ThrowsAsync <ArgumentNullException>(() => teams.GetAll("orgName", null));
            }
示例#25
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.GetRepositories(1);

                connection.Received().GetAll <Repository>(Arg.Is <Uri>(u => u.ToString() == "teams/1/repos/"));
            }
示例#26
0
            public async Task EnsuresNonNullOrEmptyArguments()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetMembershipDetails(1, null));

                await Assert.ThrowsAsync <ArgumentException>(() => client.GetMembershipDetails(1, ""));
            }
示例#27
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.GetMembers(1);

                connection.Received().GetAll <User>(Arg.Is <Uri>(u => u.ToString() == "teams/1/members"));
            }
示例#28
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.GetAll("orgName");

                connection.Received().GetAll <Team>(Arg.Is <Uri>(u => u.ToString() == "orgs/orgName/teams"));
            }
示例#29
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.AddMember(1, "user");

                connection.Received().Put(Arg.Is <Uri>(u => u.ToString() == "teams/1/members/user"));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                client.GetAll("orgName");

                connection.Received().GetAll<Team>(Arg.Is<Uri>(u => u.ToString() == "orgs/orgName/teams"));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                client.GetMembers(1);

                connection.Received().GetAll<User>(Arg.Is<Uri>(u => u.ToString() == "teams/1/members"));
            }
            public void RequestsTheCorrectlUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                client.Get(1);

                connection.Received().Get<Team>(Arg.Is<Uri>(u => u.ToString() == "teams/1"), null);
            }
示例#33
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.Delete(1);

                connection.Received().Delete(Arg.Is <Uri>(u => u.ToString() == "teams/1"));
            }
示例#34
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For <IApiConnection>();
                var client     = new TeamsClient(connection);

                client.AddRepository(1, "org", "repo");

                connection.Received().Put(Arg.Is <Uri>(u => u.ToString() == "teams/1/repos/org/repo"));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                var team = new UpdateTeam("Octokittens");

                client.UpdateTeam(1, team);

                connection.Received().Patch<Team>(Arg.Is<Uri>(u => u.ToString() == "teams/1"), team);
            }
            public async Task EnsuresNonNullArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.CreateTeam("", new NewTeam("superstars")));
                AssertEx.Throws<ArgumentException>(async () => await
                    client.CreateTeam("name", null));
            }
            public void EnsuresNonNullArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                var team = new NewTeam("superstars");

                Assert.Throws<ArgumentNullException>(() => client.Create(null, team));
                Assert.Throws<ArgumentException>(() => client.Create("", team));
                Assert.Throws<ArgumentNullException>(() => client.Create("name", null));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                var team = new NewTeam("Octokittens");

                client.Create("orgName", team);

                connection.Received().Post<Team>(Arg.Is<Uri>(u => u.ToString() == "orgs/orgName/teams"), team);
            }
            public void EnsureNonNullRepo()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                AssertEx.Throws<ArgumentException>(() => client.AddRepository(1, "org name", null));

            }
            public async Task EnsuresNonNullOrEmptyArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                // Check owner arguments.
                await Assert.ThrowsAsync<ArgumentNullException>(() => client.RemoveRepository(1, null, "repoName"));
                await Assert.ThrowsAsync<ArgumentException>(() => client.RemoveRepository(1, "", "repoName"));

                // Check repo arguments.
                await Assert.ThrowsAsync<ArgumentNullException>(() => client.RemoveRepository(1, "ownerName", null));
                await Assert.ThrowsAsync<ArgumentException>(() => client.RemoveRepository(1, "ownerName", ""));
            }
            public void EnsureNonNullOrg()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                Assert.ThrowsAsync<ArgumentException>(() => client.AddRepository(1, null, "Repo Name"));
            }
            public void EnsuresNonNullArguments()
            {
                var teams = new TeamsClient(Substitute.For<IApiConnection>());

                Assert.Throws<ArgumentNullException>(() => teams.GetAll(null));
            }
            public async Task AllowsEmptyBody()
            {
                var connection = Substitute.For<IConnection>();

                var apiConnection = new ApiConnection(connection);

                var client = new TeamsClient(apiConnection);

                await client.AddMembership(1, "user");

                connection.Received().Put<Dictionary<string, string>>(
                    Arg.Is<Uri>(u => u.ToString() == "teams/1/memberships/user"),
                    Arg.Is<object>(u => u == RequestBody.Empty));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                client.RemoveRepository(1, "org", "repo");

                connection.Received().Delete(Arg.Is<Uri>(u => u.ToString() == "teams/1/repos/org/repo"));
            }
            public void EnsuresNonNullOrEmptyArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                Assert.ThrowsAsync<ArgumentException>(() => client.AddRepository(1, "org name", null));

                // Check owner arguments.
                Assert.ThrowsAsync<ArgumentNullException>(() => client.IsRepositoryManagedByTeam(1, null, "repoName"));
                Assert.ThrowsAsync<ArgumentException>(() => client.IsRepositoryManagedByTeam(1, "", "repoName"));

                // Check repo arguments.
                Assert.ThrowsAsync<ArgumentNullException>(() => client.IsRepositoryManagedByTeam(1, "ownerName", null));
                Assert.ThrowsAsync<ArgumentException>(() => client.IsRepositoryManagedByTeam(1, "ownerName", ""));
            }
            public async Task EnsuresNonNullArguments()
            {
                var teams = new TeamsClient(Substitute.For<IApiConnection>());

                AssertEx.Throws<ArgumentNullException>(async () => await teams.GetAllTeams(null));
            }
            public async Task EnsuresNonNullArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.UpdateTeam(1, null));
            }
示例#48
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                client.GetAllRepositories(1);

                connection.Received().GetAll<Repository>(
                    Arg.Is<Uri>(u => u.ToString() == "teams/1/repos"),
                    null,
                    "application/vnd.github.ironman-preview+json",
                    Args.ApiOptions);
            }
            public async Task RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();

                var client = new TeamsClient(connection);

                await client.AddMembership(1, "user");

                connection.Received().Put<Dictionary<string, string>>(
                    Arg.Is<Uri>(u => u.ToString() == "teams/1/memberships/user"),
                    Args.Object);
            }
示例#50
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                client.GetAllForCurrent();

                connection.Received().GetAll<Team>(
                    Arg.Is<Uri>(u => u.ToString() == "user/teams"),
                    Args.ApiOptions);
            }
示例#51
0
            public void AddOrUpdatePermission()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                var newPermission = new RepositoryPermissionRequest(Permission.Admin);

                client.AddRepository(1, "org", "repo", newPermission);

                connection.Connection.Received().Put<HttpStatusCode>(Arg.Is<Uri>(u => u.ToString() == "teams/1/repos/org/repo"), Arg.Any<object>(), "", "application/vnd.github.ironman-preview+json");
            }
示例#52
0
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                client.GetRepositories(1);

                connection.Received().GetAll<Repository>(Arg.Is<Uri>(u => u.ToString() == "teams/1/repos/"));
            }
            public void EnsuresNonNullArguments()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                Assert.Throws<ArgumentNullException>(() => client.Update(1, null));
            }
            public void EnsuresNonEmptyLogin()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                AssertEx.Throws<ArgumentException>(() => client.IsMember(1, ""));
            }
            public void RequestsTheCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);
                client.RemoveMember(1, "user");

                connection.Received().Delete(Arg.Is<Uri>(u => u.ToString() == "teams/1/members/user"));
            }
            public async Task EnsuresNonNullOrEmptyLogin()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                await Assert.ThrowsAsync<ArgumentNullException>(() => client.RemoveMembership(1, null));
                await Assert.ThrowsAsync<ArgumentException>(() => client.RemoveMembership(1, ""));
            }
            public void EnsuresNonNullLogin()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new TeamsClient(connection);

                Assert.ThrowsAsync<ArgumentNullException>(() => client.GetMembership(1, null));
            }