public async Task DeleteTeam()
        {
            CSEntryChange cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Add;
            cs.CreateAttributeAdd("displayName", "mytestteam");
            cs.CreateAttributeAdd("owner", UnitTestControl.Users.GetRange(0, 1).Select(t => t.Id).ToList <object>());

            string teamid = await TeamTests.SubmitCSEntryChange(cs);

            cs                        = CSEntryChange.Create();
            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Delete;
            cs.AnchorAttributes.Add(AnchorAttribute.Create("id", teamid));

            await TeamTests.SubmitCSEntryChange(cs);

            try
            {
                var team = await GraphHelperGroups.GetGroup(UnitTestControl.Client, teamid, CancellationToken.None);

                Assert.Fail("The team was not deleted");
            }
            catch (ServiceException ex)
            {
                if (ex.StatusCode != System.Net.HttpStatusCode.NotFound)
                {
                    Assert.Fail("The team was not deleted");
                }
            }
        }
        private static async Task <string> CreateAndValidateTeam(string displayName, List <string> members = null, List <string> owners = null)
        {
            CSEntryChange cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Add;
            cs.CreateAttributeAdd("displayName", displayName);

            if (members != null && members.Count > 0)
            {
                cs.CreateAttributeAdd("member", members.ToList <object>());
            }

            if (owners != null && owners.Count > 0)
            {
                cs.CreateAttributeAdd("owner", owners.ToList <object>());
            }

            string teamid = await SubmitCSEntryChange(cs);

            if (members != null)
            {
                var actualMembers = (await GraphHelperGroups.GetGroupMembers(UnitTestControl.Client, teamid, CancellationToken.None)).Select(t => t.Id).ToList();
                CollectionAssert.AreEquivalent(members, actualMembers);
            }

            if (owners != null)
            {
                var actualOwners = (await GraphHelperGroups.GetGroupOwners(UnitTestControl.Client, teamid, CancellationToken.None)).Select(t => t.Id).ToList();
                CollectionAssert.AreEquivalent(owners, actualOwners);
            }

            return(teamid);
        }
        public async Task ReplaceTeamOwners()
        {
            List <string> members = UnitTestControl.Users.Take(1).Select(t => t.Id).ToList();
            List <string> owners  = UnitTestControl.Users.GetRange(1, 100).Select(t => t.Id).ToList();

            string teamid = await GroupTests.CreateAndValidateTeam("mytestteam", members, owners);

            var cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Update;
            cs.AnchorAttributes.Add(AnchorAttribute.Create("id", teamid));

            var ownersToDelete = owners;
            var ownersToAdd    = UnitTestControl.Users.GetRange(101, 100).Select(t => t.Id).ToList();

            cs.CreateAttributeUpdate("owner", ownersToAdd.ToList <object>(), ownersToDelete.ToList <object>());

            var teamResult = await teamExportProvider.PutCSEntryChangeAsync(cs);

            Assert.IsTrue(teamResult.ErrorCode == MAExportError.Success);

            var actual = (await GraphHelperGroups.GetGroupOwners(UnitTestControl.Client, teamid, CancellationToken.None)).Select(t => t.Id).ToList();

            CollectionAssert.AreEquivalent(ownersToAdd, actual);
        }
        public async Task CreateTeamTestDeniedPermissions()
        {
            string mailNickname = $"ut-{Guid.NewGuid()}";

            CSEntryChange cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Add;
            cs.CreateAttributeAdd("displayName", "mytestteam");
            cs.CreateAttributeAdd("description", "my description");
            cs.CreateAttributeAdd("mailNickname", mailNickname);
            cs.CreateAttributeAdd("owner", UnitTestControl.Users.GetRange(0, 1).Select(t => t.Id).ToList <object>());

            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateChannels", false);
            cs.CreateAttributeAdd("memberSettings_allowDeleteChannels", false);
            cs.CreateAttributeAdd("memberSettings_allowAddRemoveApps", false);
            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateRemoveTabs", false);
            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateRemoveConnectors", false);
            cs.CreateAttributeAdd("guestSettings_allowCreateUpdateChannels", false);
            cs.CreateAttributeAdd("guestSettings_allowDeleteChannels", false);
            cs.CreateAttributeAdd("messagingSettings_allowUserEditMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowUserDeleteMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowOwnerDeleteMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowTeamMentions", false);
            cs.CreateAttributeAdd("messagingSettings_allowChannelMentions", false);
            cs.CreateAttributeAdd("funSettings_allowGiphy", false);
            cs.CreateAttributeAdd("funSettings_giphyContentRating", "Moderate");
            cs.CreateAttributeAdd("funSettings_allowStickersAndMemes", false);
            cs.CreateAttributeAdd("funSettings_allowCustomMemes", false);
            cs.CreateAttributeAdd("visibility", "Public");

            string teamid = await TeamTests.SubmitCSEntryChange(cs);

            var team = await GraphHelperTeams.GetTeam(UnitTestControl.BetaClient, teamid, CancellationToken.None);

            var group = await GraphHelperGroups.GetGroup(UnitTestControl.Client, teamid, CancellationToken.None);

            Assert.AreEqual("mytestteam", group.DisplayName);
            Assert.AreEqual("my description", group.Description);
            Assert.AreEqual(mailNickname, group.MailNickname);
            Assert.AreEqual("Public", group.Visibility, true);

            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(false, team.MemberSettings.AllowDeleteChannels);
            Assert.AreEqual(false, team.MemberSettings.AllowAddRemoveApps);
            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateRemoveTabs);
            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateRemoveConnectors);
            Assert.AreEqual(false, team.GuestSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(false, team.GuestSettings.AllowDeleteChannels);
            Assert.AreEqual(false, team.MessagingSettings.AllowUserEditMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowUserDeleteMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowOwnerDeleteMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowTeamMentions);
            Assert.AreEqual(false, team.MessagingSettings.AllowChannelMentions);
            Assert.AreEqual(false, team.FunSettings.AllowGiphy);
            Assert.AreEqual(GiphyRatingType.Moderate, team.FunSettings.GiphyContentRating);
            Assert.AreEqual(false, team.FunSettings.AllowStickersAndMemes);
            Assert.AreEqual(false, team.FunSettings.AllowCustomMemes);
        }
Example #5
0
        public async Task CreatePrivateChannelTest()
        {
            string teamid = await CreateTeamWithMembers(10, 10);

            List <DirectoryObject> owners = await GraphHelperGroups.GetGroupOwners(UnitTestControl.Client, teamid, CancellationToken.None);

            await Task.Delay(TimeSpan.FromDays(1));

            string ownerid = owners.First().Id;

            owners.RemoveAt(0);
            List <string> ownerIds = owners.Select(t => t.Id).ToList();

            CSEntryChange channel = CSEntryChange.Create();

            channel.ObjectType             = "privateChannel";
            channel.ObjectModificationType = ObjectModificationType.Add;
            channel.CreateAttributeAdd("team", teamid);
            channel.CreateAttributeAdd("displayName", "my test channel");
            channel.CreateAttributeAdd("description", "my description");
            channel.CreateAttributeAdd("isFavoriteByDefault", true);
            channel.CreateAttributeAdd("owner", ownerid);
            channel.CreateAttributeAdd("member", ownerIds.ToList <object>());

            CSEntryChangeResult channelResult = await channelExportProvider.PutCSEntryChangeAsync(channel);

            string channelid = channelResult.GetAnchorValueOrDefault <string>("id");

            Assert.IsTrue(channelResult.ErrorCode == MAExportError.Success);

            Beta.Channel newChannel = await GetChannelFromTeam(teamid, channelid);

            Assert.AreEqual("my test channel", newChannel.DisplayName);
            Assert.AreEqual("my description", newChannel.Description);
            Assert.AreEqual(Beta.ChannelMembershipType.Private, newChannel.MembershipType);

            var members = await GraphHelperTeams.GetChannelMembers(UnitTestControl.BetaClient, teamid, channelid, CancellationToken.None);

            Assert.IsTrue(members.Any(t => t.Id == ownerid && (t.Roles?.Contains("owner") ?? false)));

            CollectionAssert.AreEquivalent(ownerIds, members.Where(t => t.Roles == null).Select(t => t.Id).ToList());

            // 2020-05-15 This currently doesn't come in with a GET request
            // https://github.com/microsoftgraph/microsoft-graph-docs/issues/6792

            //Assert.AreEqual(true, newChannel.IsFavoriteByDefault);
        }
        public async Task UpdateGroupAttributes()
        {
            string displayName1  = "displayName 1";
            string description1  = "description 1";
            string mailNickname1 = $"ut-{Guid.NewGuid()}";

            string displayName2  = "displayName 2";
            string description2  = "description 2";
            string mailNickname2 = $"ut-{Guid.NewGuid()}";

            CSEntryChange cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Add;
            cs.CreateAttributeAdd("displayName", displayName1);
            cs.CreateAttributeAdd("description", description1);
            cs.CreateAttributeAdd("mailNickname", mailNickname1);
            cs.CreateAttributeAdd("owner", UnitTestControl.Users.GetRange(0, 1).Select(t => t.Id).ToList <object>());

            string teamid = await SubmitCSEntryChange(cs);

            await Task.Delay(TimeSpan.FromSeconds(30));

            var team = await GraphHelperGroups.GetGroup(UnitTestControl.Client, teamid, CancellationToken.None);

            Assert.AreEqual(displayName1, team.DisplayName);
            Assert.AreEqual(description1, team.Description);
            Assert.AreEqual(mailNickname1, team.MailNickname);

            cs            = CSEntryChange.Create();
            cs.ObjectType = "team";
            cs.AnchorAttributes.Add(AnchorAttribute.Create("id", teamid));
            cs.ObjectModificationType = ObjectModificationType.Update;
            cs.CreateAttributeReplace("displayName", displayName2);
            cs.CreateAttributeReplace("description", description2);
            cs.CreateAttributeReplace("mailNickname", mailNickname2);
            await SubmitCSEntryChange(cs);

            team = await GraphHelperGroups.GetGroup(UnitTestControl.Client, teamid, CancellationToken.None);

            Assert.AreEqual(displayName2, team.DisplayName);
            Assert.AreEqual(description2, team.Description);
            Assert.AreEqual(mailNickname2, team.MailNickname);
        }
Example #7
0
        public static async Task Cleanup()
        {
            List <Exception> exceptions = new List <Exception>();

            foreach (string teamid in teamsToDelete)
            {
                try
                {
                    await GraphHelperGroups.DeleteGroup(UnitTestControl.Client, teamid, context.Token);
                }
                catch (Exception ex)
                {
                    exceptions.Add(ex);
                }
            }

            if (exceptions.Count > 0)
            {
                throw new AggregateException("One or more groups could not be cleaned up", exceptions);
            }
        }
        public async Task CreateTeamTestUpdatePermissions()
        {
            CSEntryChange cs = CSEntryChange.Create();

            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Add;
            cs.CreateAttributeAdd("displayName", "mytestteam");
            cs.CreateAttributeAdd("owner", UnitTestControl.Users.GetRange(0, 1).Select(t => t.Id).ToList <object>());
            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateChannels", false);
            cs.CreateAttributeAdd("memberSettings_allowDeleteChannels", false);
            cs.CreateAttributeAdd("memberSettings_allowAddRemoveApps", false);
            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateRemoveTabs", false);
            cs.CreateAttributeAdd("memberSettings_allowCreateUpdateRemoveConnectors", false);
            cs.CreateAttributeAdd("guestSettings_allowCreateUpdateChannels", false);
            cs.CreateAttributeAdd("guestSettings_allowDeleteChannels", false);
            cs.CreateAttributeAdd("messagingSettings_allowUserEditMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowUserDeleteMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowOwnerDeleteMessages", false);
            cs.CreateAttributeAdd("messagingSettings_allowTeamMentions", false);
            cs.CreateAttributeAdd("messagingSettings_allowChannelMentions", false);
            cs.CreateAttributeAdd("funSettings_allowGiphy", false);
            cs.CreateAttributeAdd("funSettings_giphyContentRating", "Moderate");
            cs.CreateAttributeAdd("funSettings_allowStickersAndMemes", false);
            cs.CreateAttributeAdd("funSettings_allowCustomMemes", false);

            string teamid = await TeamTests.SubmitCSEntryChange(cs);

            var team = await GraphHelperTeams.GetTeam(UnitTestControl.BetaClient, teamid, CancellationToken.None);

            var group = await GraphHelperGroups.GetGroup(UnitTestControl.Client, teamid, CancellationToken.None);

            Assert.AreEqual("mytestteam", group.DisplayName);
            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(false, team.MemberSettings.AllowDeleteChannels);
            Assert.AreEqual(false, team.MemberSettings.AllowAddRemoveApps);
            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateRemoveTabs);
            Assert.AreEqual(false, team.MemberSettings.AllowCreateUpdateRemoveConnectors);
            Assert.AreEqual(false, team.GuestSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(false, team.GuestSettings.AllowDeleteChannels);
            Assert.AreEqual(false, team.MessagingSettings.AllowUserEditMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowUserDeleteMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowOwnerDeleteMessages);
            Assert.AreEqual(false, team.MessagingSettings.AllowTeamMentions);
            Assert.AreEqual(false, team.MessagingSettings.AllowChannelMentions);
            Assert.AreEqual(false, team.FunSettings.AllowGiphy);
            Assert.AreEqual(GiphyRatingType.Moderate, team.FunSettings.GiphyContentRating);
            Assert.AreEqual(false, team.FunSettings.AllowStickersAndMemes);
            Assert.AreEqual(false, team.FunSettings.AllowCustomMemes);

            cs                        = CSEntryChange.Create();
            cs.ObjectType             = "team";
            cs.ObjectModificationType = ObjectModificationType.Update;
            cs.AnchorAttributes.Add(AnchorAttribute.Create("id", teamid));
            cs.CreateAttributeReplace("memberSettings_allowCreateUpdateChannels", true);
            cs.CreateAttributeReplace("memberSettings_allowDeleteChannels", true);
            cs.CreateAttributeReplace("memberSettings_allowAddRemoveApps", true);
            cs.CreateAttributeReplace("memberSettings_allowCreateUpdateRemoveTabs", true);
            cs.CreateAttributeReplace("memberSettings_allowCreateUpdateRemoveConnectors", true);
            cs.CreateAttributeReplace("guestSettings_allowCreateUpdateChannels", true);
            cs.CreateAttributeReplace("guestSettings_allowDeleteChannels", true);
            cs.CreateAttributeReplace("messagingSettings_allowUserEditMessages", true);
            cs.CreateAttributeReplace("messagingSettings_allowUserDeleteMessages", true);
            cs.CreateAttributeReplace("messagingSettings_allowOwnerDeleteMessages", true);
            cs.CreateAttributeReplace("messagingSettings_allowTeamMentions", true);
            cs.CreateAttributeReplace("messagingSettings_allowChannelMentions", true);
            cs.CreateAttributeReplace("funSettings_allowGiphy", true);
            cs.CreateAttributeReplace("funSettings_giphyContentRating", "Strict");
            cs.CreateAttributeReplace("funSettings_allowStickersAndMemes", true);
            cs.CreateAttributeReplace("funSettings_allowCustomMemes", true);

            await TeamTests.SubmitCSEntryChange(cs);

            team = await GraphHelperTeams.GetTeam(UnitTestControl.BetaClient, teamid, CancellationToken.None);

            Assert.AreEqual(true, team.MemberSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(true, team.MemberSettings.AllowDeleteChannels);
            Assert.AreEqual(true, team.MemberSettings.AllowAddRemoveApps);
            Assert.AreEqual(true, team.MemberSettings.AllowCreateUpdateRemoveTabs);
            Assert.AreEqual(true, team.MemberSettings.AllowCreateUpdateRemoveConnectors);
            Assert.AreEqual(true, team.GuestSettings.AllowCreateUpdateChannels);
            Assert.AreEqual(true, team.GuestSettings.AllowDeleteChannels);
            Assert.AreEqual(true, team.MessagingSettings.AllowUserEditMessages);
            Assert.AreEqual(true, team.MessagingSettings.AllowUserDeleteMessages);
            Assert.AreEqual(true, team.MessagingSettings.AllowOwnerDeleteMessages);
            Assert.AreEqual(true, team.MessagingSettings.AllowTeamMentions);
            Assert.AreEqual(true, team.MessagingSettings.AllowChannelMentions);
            Assert.AreEqual(true, team.FunSettings.AllowGiphy);
            Assert.AreEqual(GiphyRatingType.Strict, team.FunSettings.GiphyContentRating);
            Assert.AreEqual(true, team.FunSettings.AllowStickersAndMemes);
            Assert.AreEqual(true, team.FunSettings.AllowCustomMemes);
        }