ExecuteCommand() публичный Метод

public ExecuteCommand ( string cmdletString ) : Collection
cmdletString string
Результат Collection
        public void GetEventReceiverTest()
        {
            using (var scope = new PSTestScope(true))
            {
                EventReceiverDefinition receiver = null;
                using (var ctx = TestCommon.CreateClientContext())
                {
                    receiver = ctx.Web.AddRemoteEventReceiver("TestEventReceiver", "https://testserver.com/testeventreceiver.svc", EventReceiverType.ListAdded, EventReceiverSynchronization.Asynchronous, true);
                }

                var results = scope.ExecuteCommand("Get-PnPEventReceiver");

                Assert.IsTrue(results.Any());

                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(EventReceiverDefinition));

                results = scope.ExecuteCommand("Get-PnPEventReceiver",
                    new CommandParameter("Identity", receiver.ReceiverId));

                Assert.IsTrue(results.Any());

                using (var ctx = TestCommon.CreateClientContext())
                {
                    receiver = ctx.Web.GetEventReceiverByName("TestEventReceiver");

                    receiver.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }

            }
        }
Пример #2
0
        public void GetWebPartPropertyTest()
        {
            using (var scope = new PSTestScope(true))
            {
                using (var ctx = TestCommon.CreateClientContext())
                {
                    var wps = ctx.Web.GetWebParts(serverRelativeHomePageUrl);

                    if (wps.Any())
                    {
                        var wp = wps.FirstOrDefault();
                        var results = scope.ExecuteCommand("Get-SPOWebPartProperty",
                            new CommandParameter("ServerRelativePageUrl", serverRelativeHomePageUrl),
                            new CommandParameter("Identity", wp.Id));

                        Assert.IsTrue(results.Count > 0);
                        Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Commands.PropertyBagValue));

                    }
                    else
                    {
                        Assert.Fail("No webparts on page.");
                    }

                }
            }
        }
Пример #3
0
        public void AddWebPartToWikiPageTest()
        {
            using (var scope = new PSTestScope(true))
            {
                using (var ctx = TestCommon.CreateClientContext())
                {
                    var results = scope.ExecuteCommand("Add-SPOWebPartToWikiPage",
                        new CommandParameter("ServerRelativePageUrl", serverRelativeHomePageUrl),
                        new CommandParameter("Path", "..\\..\\Resources\\webpart.xml"),
                        new CommandParameter("Row", 1),
                        new CommandParameter("Column", 1));

                    Assert.IsFalse(results.Any());

                    var wps = ctx.Web.GetWebParts(serverRelativeHomePageUrl);

                    foreach (var wp in wps)
                    {
                        if (wp.WebPart.Title == "Get started with your site")
                        {
                            wp.DeleteWebPart();
                            ctx.ExecuteQueryRetry();
                            break;
                        }
                    }
                }
            }
        }
Пример #4
0
        public void DisableFeatureTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                var isActive = ctx.Web.IsFeatureActive(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);

                if (!isActive)
                {
                    ctx.Web.ActivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }

                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Disable-PnPFeature",
                        new CommandParameter("Identity", Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID));
                }

                Assert.IsFalse(ctx.Web.IsFeatureActive(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID));

                if (isActive)
                {
                    ctx.Web.ActivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }
            }
        }
Пример #5
0
        public void GetFeatureTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                var isActive = ctx.Web.IsFeatureActive(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);

                if (!isActive)
                {
                    ctx.Web.ActivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPFeature",
                        new CommandParameter("Identity", Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID));
                    Assert.IsTrue(results.Any());

                }

                if (!isActive)
                {
                    ctx.Web.DeactivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }
            }
        }
        public void InvokeWebActionListAction()
        {
            using (var scope = new PSTestScope(true))
            {
                List<string> listNames = new List<string>();

                Action<List> listAction = list =>
                {
                    listNames.Add(list.Title);
                };

                var results = scope.ExecuteCommand("Invoke-SPOWebAction",
                    new CommandParameter("ListAction", listAction),
                    new CommandParameter("ListProperties", new[] { "Title" })
                );

                Assert.IsTrue(listNames.Count > 3, "Wrong count on lists");

                Assert.IsTrue(listNames.Contains("PnPTestList1"), "PnPTestList1 is missing");
                Assert.IsTrue(listNames.Contains("PnPTestList2"), "PnPTestList2 is missing");
                Assert.IsTrue(listNames.Contains("PnPTestList3"), "PnPTestList3 is missing");

                InvokeWebActionResult result = results.Last().BaseObject as InvokeWebActionResult;

                AssertInvokeActionResult(result,
                    processedWebCount: 1
                );

                Assert.IsTrue(result.ProcessedListCount > 3, "Wrong count on proccessed list");
            }
        }
Пример #7
0
        public void AddFieldFromXmlTest()
        {
            var xml = @"<Field Type=""Text"" Name=""PSCmdletTest"" DisplayName=""PSCmdletTest"" ID=""{27d81055-f208-41c9-a976-61c5473eed4a}"" Group=""Test"" Required=""FALSE"" StaticName=""PSCmdletTest"" />";

            using (var ctx = TestCommon.CreateClientContext())
            {
                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Add-SPOFieldFromXml",
                        new CommandParameter("FieldXml", xml));
                }

                var succeeded = false;
                try
                {
                    var field = ctx.Web.Fields.GetByInternalNameOrTitle("PSCmdletTest");
                    ctx.ExecuteQueryRetry();
                    succeeded = true;
                    field.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }
                catch { }

                Assert.IsTrue(succeeded);
            }
        }
Пример #8
0
        public void AddFieldTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Add-SPOField",
                        new CommandParameter("DisplayName", "PSCmdletTestField"),
                        new CommandParameter("InternalName", "PSCmdletTestField"),
                        new CommandParameter("Type", FieldType.Text),
                        new CommandParameter("Group", "Test Group"));
                }

                var succeeded = false;
                try
                {
                    var field = ctx.Web.Fields.GetByInternalNameOrTitle("PSCmdletTestField");
                    ctx.ExecuteQueryRetry();
                    succeeded = true;
                    field.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }
                catch { }

                Assert.IsTrue(succeeded);
            }
        }
        public void AddEventReceiverTest()
        {
            using (var scope = new PSTestScope(true))
            {
                scope.ExecuteCommand("Add-PnPEventReceiver",
                    new CommandParameter("Name", "TestEventReceiver"),
                    new CommandParameter("Url", "https://testserver.com/testeventreceiver.svc"),
                    new CommandParameter("EventReceiverType", EventReceiverType.ListAdded),
                    new CommandParameter("Synchronization", EventReceiverSynchronization.Asynchronous));

                using (var ctx = TestCommon.CreateClientContext())
                {
                    var receiver = ctx.Web.GetEventReceiverByName("TestEventReceiver");

                    Assert.IsNotNull(receiver);
                    Assert.IsTrue(receiver.ReceiverUrl == "https://testserver.com/testeventreceiver.svc");
                    Assert.IsTrue(receiver.EventType == EventReceiverType.ListAdded);
                    Assert.IsTrue(receiver.Synchronization == EventReceiverSynchronization.Asynchronous);

                    receiver.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }

            }
        }
Пример #10
0
 public void GetTimeZoneIdTest1()
 {
     using (var scope = new PSTestScope(false))
     {
         var results = scope.ExecuteCommand("Get-PnPTimeZoneId");
         Assert.IsTrue(results.Count > 0);
     }
 }
Пример #11
0
        public void GetTenantSiteTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Get-PnPTenantSite");

                Assert.IsTrue(results.Count > 0);
            }
        }
Пример #12
0
        public void GetTimeZoneIdTest2()
        {
            using (var scope = new PSTestScope(false))
            {
                var results = scope.ExecuteCommand("Get-PnPTimeZoneId", new CommandParameter("Match", "Stockholm"));

                Assert.IsTrue(results.Count == 1);
            }
        }
Пример #13
0
        public void GetWebTemplatesTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Get-PnPWebTemplates", new CommandParameter("Lcid", "1033"), new CommandParameter("CompatibilityLevel", "15"));

                Assert.IsTrue(results.Count > 0);
                Assert.IsTrue(results[0].BaseObject.GetType().Equals(typeof(Microsoft.Online.SharePoint.TenantAdministration.SPOTenantWebTemplate)));
            }
        }
        public void ApplyPnpTemplateFromFolder()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Apply-PnPProvisioningTemplate",
                    new CommandParameter("Path", @"dummy.pnp")
                    );

            }
        }
Пример #15
0
        public void GetWebTemplatesTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Get-SPOWebTemplates");

                Assert.IsTrue(results.Count > 0);
                Assert.IsTrue(results[0].BaseObject.GetType().Equals(typeof(Microsoft.Online.SharePoint.TenantAdministration.SPOTenantWebTemplate)));
            }
        }
Пример #16
0
        public void ConnectSPOnlineTest3()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Get-SPOContext");

                Assert.IsTrue(results.Count == 1);
                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.ClientContext));

            }
        }
Пример #17
0
        public void ConnectSPOnlineTest3()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Get-PnPContext");

                Assert.IsTrue(results.Count == 1);
                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(OfficeDevPnP.Core.PnPClientContext));

            }
        }
        public void CreatePnpTemplateFromFolder()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("New-PnPProvisioningTemplateFromFolder",
                    new CommandParameter("Out", @"dummy.pnp"),
                    new CommandParameter("Folder", @".\Dummy"),
                    new CommandParameter("Force")
                    );

            }
        }
Пример #19
0
        public void AddContentTypeToListTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPContentTypeToList",
                    new CommandParameter("ContentType", CTName2),
                    new CommandParameter("List", ListName));

                Assert.IsFalse(results.Any());

                Assert.IsTrue(ctList.ContentTypeExistsByName(CTName2));

            }
        }
Пример #20
0
 public void ConnectSPOnlineTest1()
 {
     using (var scope = new PSTestScope(false))
     {
         var creds = GetCredentials(ConfigurationManager.AppSettings["SPODevSiteUrl"]);
         if (creds != null)
         {
             var results = scope.ExecuteCommand("Connect-PnPOnline", new CommandParameter("Url", ConfigurationManager.AppSettings["SPODevSiteUrl"]));
             Assert.IsTrue(results.Count == 0);
         } else
         {
             Assert.Inconclusive("No Credential Manager Credentials present");
         }
     }
 }
Пример #21
0
        public void AddViewTest()
        {
            using (var scope = new PSTestScope(true))
            {

                var results = scope.ExecuteCommand("Add-SPOView",
                    new CommandParameter("List", "PnPTestList"),
                    new CommandParameter("Title", "TestView"),
                    new CommandParameter("Fields", new[] { "Title" }));

                Assert.IsTrue(results.Any());

                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.View));
            }
        }
Пример #22
0
        public void GetPropertyTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                using (var scope = new PSTestScope(true))
                {

                    var results = scope.ExecuteCommand("Get-PnPProperty",
                        new CommandParameter("ClientObject", ctx.Web),
                        new CommandParameter("Property", "Lists"));
                    Assert.IsTrue(results.Count == 1);
                    Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.ListCollection));
                }
            }
        }
Пример #23
0
        public void AddListItemTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var values = new Hashtable();
                values.Add("Title", "Test");

                var results = scope.ExecuteCommand("Add-SPOListItem",
                    new CommandParameter("List", "PnPTestList"),
                    new CommandParameter("Values", values));

                Assert.IsTrue(results.Any());

                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.ListItem));
            }
        }
Пример #24
0
        public void AddJavascriptBlockTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPJavascriptBlock",
                    new CommandParameter("Name", "TestJavascriptBlock"),
                    new CommandParameter("Script", "<script type='text/javascript'>alert('1')</script>"));

                using (var context = TestCommon.CreateClientContext())
                {
                    var actions = context.Web.GetCustomActions().Where(c => c.Location == "ScriptLink" && c.Name == "TestJavascriptBlock");
                    Assert.IsTrue(actions.Any());

                    actions.FirstOrDefault().DeleteObject();
                    context.ExecuteQueryRetry();
                }
            }
        }
Пример #25
0
        public void AddJavascriptLinkTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPJavascriptLink",
                    new CommandParameter("Key", "TestJavascriptLink"),
                    new CommandParameter("Url", "https://testserver.com/testtojavascriptlink.js"));

                using (var context = TestCommon.CreateClientContext())
                {
                    var actions = context.Web.GetCustomActions().Where(c => c.Location == "ScriptLink" && c.Name == "TestJavascriptLink");
                    Assert.IsTrue(actions.Any());

                    actions.FirstOrDefault().DeleteObject();
                    context.ExecuteQueryRetry();
                }
            }
        }
Пример #26
0
        public void AddContentTypeTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPContentType",
                    new CommandParameter("Name", CTName4),
                    new CommandParameter("Group", "UnitTestCTGroup"));

                Assert.IsTrue(results.Any());
                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.ContentType));

                using (var ctx = TestCommon.CreateClientContext())
                {
                    var ct = ctx.Web.GetContentTypeByName(CTName4);
                    ct.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }
            }
        }
Пример #27
0
        public void AddContentTypeWithIdTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPContentType",
                    new CommandParameter("Name", CTName4),
                    new CommandParameter("Description", "This is the description of the content type"),
                    new CommandParameter("ContentTypeID", "0x01010010AFE1111D664A55B9D45F9712E7B827"),
                    new CommandParameter("Group", "UnitTestCTGroup"));

                Assert.IsTrue(results.Any());
                Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Microsoft.SharePoint.Client.ContentType));

                using (var ctx = TestCommon.CreateClientContext())
                {
                    var ct = ctx.Web.GetContentTypeByName(CTName4);
                    ct.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }
            }
        }
Пример #28
0
        public void RemoveViewTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                var list = ctx.Web.GetListByTitle("PnPTestList");

                list.CreateView("TestView", ViewType.None, new[] { "Title" }, 30, false);


                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Remove-PnPView",
                                         new CommandParameter("List", "PnPTestList"),
                                         new CommandParameter("Identity", "TestView"),
                                         new CommandParameter("Force")
                                         );
                }

                var view = list.GetViewByName("TestView");

                Assert.IsNull(view);
            }
        }
Пример #29
0
        public void AddCustomActionTest()
        {
            using (var scope = new PSTestScope(true))
            {
                var results = scope.ExecuteCommand("Add-PnPCustomAction",
                    new CommandParameter("Name", "TestCustomAction"),
                    new CommandParameter("Title", "TestCustomAction"),
                    new CommandParameter("Description", "Test Custom Action Description"),
                    new CommandParameter("Group", "ActionsMenu"),
                    new CommandParameter("Location", "Microsoft.SharePoint.StandardMenu")
                    );

                using (var context = TestCommon.CreateClientContext())
                {
                    var actions = context.LoadQuery(context.Web.UserCustomActions.Where(ca => ca.Name == "TestCustomAction"));
                    context.ExecuteQueryRetry();

                    Assert.IsTrue(actions.Any());

                    actions.FirstOrDefault().DeleteObject();
                    context.ExecuteQueryRetry();
                }
            }
        }
        public void InvokeWebActionListActionWithShouldProcess()
        {
            using (var scope = new PSTestScope(true))
            {
                List <string> listNames = new List <string>();

                Action <List> listAction = list =>
                {
                    listNames.Add(list.Title);
                };

                Func <List, bool> shouldProcessListAction = list =>
                {
                    return(list.Title.Contains("PnPTestList"));
                };

                var results = scope.ExecuteCommand("Invoke-SPOWebAction",
                                                   new CommandParameter("ListAction", listAction),
                                                   new CommandParameter("ShouldProcessListAction", shouldProcessListAction),
                                                   new CommandParameter("ListProperties", new[] { "Title" })
                                                   );

                Assert.IsTrue(listNames.Count == 3, "Wrong count on lists");

                Assert.IsTrue(listNames.Contains("PnPTestList1"), "PnPTestList1 is missing");
                Assert.IsTrue(listNames.Contains("PnPTestList2"), "PnPTestList2 is missing");
                Assert.IsTrue(listNames.Contains("PnPTestList3"), "PnPTestList3 is missing");

                InvokeWebActionResult result = results.Last().BaseObject as InvokeWebActionResult;

                AssertInvokeActionResult(result,
                                         processedWebCount: 1,
                                         processedListCount: 3
                                         );
            }
        }
Пример #31
0
        public void GetFeatureTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                var isActive = ctx.Web.IsFeatureActive(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);

                if (!isActive)
                {
                    ctx.Web.ActivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPFeature",
                                                       new CommandParameter("Identity", Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID));
                    Assert.IsTrue(results.Any());
                }

                if (!isActive)
                {
                    ctx.Web.DeactivateFeature(Core.Constants.MINIMALDOWNLOADSTRATEGYFEATUREID);
                }
            }
        }
        public void GetFoldersFromList()
        {
            using (var scope = new PSTestScope(true))
            {
                var filePath = CreateUniqueCopyOfTemplateFile(@"Resources\PnPTestList.xml");
                try
                {
                    var results = scope.ExecuteCommand("Add-PnPListFoldersToProvisioningTemplate",
                                                       new CommandParameter("Path", filePath),
                                                       new CommandParameter("List", "PnPTestList"),
                                                       new CommandParameter("Recursive", false)
                                                       );

                    var template = GetTemplateFromXmlFile(filePath);
                    Assert.AreEqual(10, template.Lists[0].Folders.Count);

                    Assert.AreEqual(0, template.Lists[0].Folders[0].Folders.Count);
                }
                finally
                {
                    System.IO.File.Delete(filePath);
                }
            }
        }
Пример #33
0
        public void CopyFile_BetweenSiteCollectionsWithAmpersand_Test()
        {
            using (var scope = new PSTestScope(site1Url, true))
            {
                var    sourceUrl            = $"/sites/PNPPS_Test_{site1Id}/Shared%20Documents/{targetFileNameWithAmpersand}";
                var    destinationFolderUrl = $"/sites/PNPPS_Test_{site2Id}/Shared%20Documents";
                string destinationFileUrl   = $"/sites/PNPPS_Test_{site2Id}/Shared%20Documents/{targetFileNameWithAmpersand}";
                var    results = scope.ExecuteCommand("Copy-PnPFile",
                                                      new CommandParameter("SourceUrl", sourceUrl),
                                                      new CommandParameter("TargetUrl", destinationFolderUrl),
                                                      new CommandParameter("Force"));

                using (var ctx = TestCommon.CreateClientContext(site2Url))
                {
                    File initialFile = ctx.Web.GetFileByServerRelativeUrl(destinationFileUrl);
                    ctx.Load(initialFile);
                    ctx.ExecuteQuery();
                    if (!initialFile.Exists)
                    {
                        Assert.Fail("Copied file cannot be found");
                    }
                }
            }
        }
Пример #34
0
        public void GetFeatureTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                var isActive = ctx.Web.IsFeatureActive(Core.Constants.FeatureId_Web_MinimalDownloadStrategy);

                if (!isActive)
                {
                    ctx.Web.ActivateFeature(Core.Constants.FeatureId_Web_MinimalDownloadStrategy);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPFeature",
                                                       new CommandParameter("Identity", Core.Constants.FeatureId_Web_MinimalDownloadStrategy));
                    Assert.IsTrue(results.Any());
                }

                if (!isActive)
                {
                    ctx.Web.DeactivateFeature(Core.Constants.FeatureId_Web_MinimalDownloadStrategy);
                }
            }
        }
Пример #35
0
        public void AddTaxonomyField()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                // Get the first group
                var taxSession = ctx.Site.GetTaxonomySession();
                var termStore = taxSession.GetDefaultSiteCollectionTermStore();
                ctx.Load(termStore, ts => ts.Groups);
                ctx.ExecuteQueryRetry();

                var termGroup = termStore.Groups[0];
                ctx.Load(termGroup, tg => tg.TermSets);
                ctx.ExecuteQueryRetry();

                var termSet = termGroup.TermSets[0];
                ctx.Load(termSet, ts => ts.Id);
                ctx.ExecuteQueryRetry();
                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Add-SPOTaxonomyField",
                        new CommandParameter("DisplayName", "PSCmdletTestField"),
                        new CommandParameter("InternalName", "PSCmdletTestField"),
                        new CommandParameter("TaxonomyItemId", termSet.Id),
                        new CommandParameter("Group", "Test Group"));
                }

                var succeeded = false;
                try
                {
                    var field = ctx.Web.Fields.GetByInternalNameOrTitle("PSCmdletTestField");
                    ctx.ExecuteQueryRetry();
                    succeeded = true;
                    field.DeleteObject();
                    ctx.ExecuteQueryRetry();
                }
                catch { }

                Assert.IsTrue(succeeded);
            }
        }
        public void InvokeWebActionWithWhatIf()
        {
            using (var scope = new PSTestScope(true))
            {
                bool webActionFired      = false;
                bool webPostActionFired  = false;
                bool listActionFired     = false;
                bool listPostActionFired = false;
                bool listItemActionFired = false;

                Action <Web> webAction = web =>
                {
                    webActionFired = true;
                };

                Action <Web> webPostAction = web =>
                {
                    webPostActionFired = true;
                };

                Func <List, bool> shouldProcessListAction = list =>
                {
                    return(list.Title.Contains("PnPTestList"));
                };

                Action <List> listAction = list =>
                {
                    listActionFired = true;
                };

                Action <List> listPostAction = list =>
                {
                    listPostActionFired = true;
                };

                Action <ListItem> listItemAction = listItem =>
                {
                    listItemActionFired = true;
                };

                var results = scope.ExecuteCommand("Invoke-SPOWebAction",
                                                   new CommandParameter("WebAction", webAction),
                                                   new CommandParameter("PostWebAction", webPostAction),
                                                   new CommandParameter("ShouldProcessListAction", shouldProcessListAction),
                                                   new CommandParameter("ListAction", listAction),
                                                   new CommandParameter("PostListAction", listPostAction),
                                                   new CommandParameter("ListItemAction", listItemAction),
                                                   new CommandParameter("WhatIf", true)
                                                   );

                InvokeWebActionResult result = results.Last().BaseObject as InvokeWebActionResult;

                Assert.AreEqual(1, result.ProcessedWebCount, "Total proccessed web count does not match");

                Assert.IsFalse(webActionFired, "web action fired");
                Assert.IsFalse(webPostActionFired, "web post action fired");
                Assert.IsFalse(listActionFired, "list action fired");
                Assert.IsFalse(listPostActionFired, "list post action fired");
                Assert.IsFalse(listItemActionFired, "list item action fired");
            }
        }
Пример #37
0
        public void RemoveFieldTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                FieldCreationInformation fieldCI = new FieldCreationInformation(FieldType.Text)
                {
                    DisplayName = "PnPTestTextField",
                    Group = "PnP",
                    InternalName = "PnPTestTextField",
                    Required = false
                };

                ctx.Web.CreateField(fieldCI);

                using (var scope = new PSTestScope(true))
                {
                    scope.ExecuteCommand("Remove-SPOField",
                        new CommandParameter("Identity", "PnPTestTextField"),
                        new CommandParameter("Force"));

                }

                var succeeded = false;
                try
                {
                    var field = ctx.Web.Fields.GetByInternalNameOrTitle("PnPTestTextField");
                    ctx.ExecuteQueryRetry();
                }
                catch {
                    succeeded = true;
                }

                Assert.IsTrue(succeeded);

            }
        }
Пример #38
0
        public void AddAlert_WithNonDefaultProperties_Test()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                ctx.Web.EnsureProperties(w => w.CurrentUser.Id, w => w.CurrentUser.LoginName);
                var currentUser = ctx.Web.CurrentUser;
                // generate random alert title
                var randomizer = new Random();
                var alertTitle = randomizer.Next(int.MaxValue).ToString();
                var list       = ctx.Web.DefaultDocumentLibrary();
                list.EnsureProperties(l => l.Id);
                var listId      = list.Id;
                var currentTime = DateTime.Now;
                // note: SharePoint rounds the milliseconds away, so use a time without milliseconds for testing
                var alertTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Minute);

                // Execute cmd-let
                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Add-PnPAlert",
                                                       new CommandParameter("List", "Shared Documents"),
                                                       new CommandParameter("Title", alertTitle),
                                                       new CommandParameter("DeliveryMethod", AlertDeliveryChannel.Email), // cannot use SmS without having Frequency set to "Immediate"
                                                       new CommandParameter("ChangeType", AlertEventType.DeleteObject),
                                                       new CommandParameter("Frequency", AlertFrequency.Weekly),
                                                       new CommandParameter("Time", alertTime),
                                                       new CommandParameter("Filter", AlertFilter.SomeoneElseChangesAnItem)
                                                       );
                    Assert.IsNotNull(results);
                    Assert.IsTrue(results.Count > 0);
                }

                // get actual alert and check properties
                ctx.Web.EnsureProperties(w => w.CurrentUser.Alerts);
                var newAlerts = currentUser.Alerts.Where(a => a.Title == alertTitle);
                Assert.AreEqual(1, newAlerts.Count(), "Unexpected number of created alerts");
                var newAlert = newAlerts.First();
                newAlert.EnsureProperty(a => a.AlertTime);
                newAlert.EnsureProperty(a => a.Properties);
                newAlert.User.EnsureProperties(u => u.LoginName);
                newAlert.List.EnsureProperties(l => l.Id);
                ctx.ExecuteQueryRetry();

                try
                {
                    Assert.AreEqual(AlertFrequency.Weekly, newAlert.AlertFrequency);
                    Assert.AreEqual(AlertDeliveryChannel.Email, newAlert.DeliveryChannels);
                    Assert.AreEqual(AlertEventType.DeleteObject, newAlert.EventType);
                    Assert.AreEqual(AlertStatus.On, newAlert.Status);
                    Assert.AreEqual(AlertType.List, newAlert.AlertType);
                    Assert.AreEqual(currentUser.LoginName, newAlert.User.LoginName);
                    Assert.AreEqual(listId, newAlert.List.Id);

                    Assert.AreEqual(alertTime, newAlert.AlertTime);
                    Assert.AreEqual(1, newAlert.Properties.Count, "Unexpected number of properties");
                    Assert.IsTrue(newAlert.Properties.ContainsKey("filterindex"));
                    Assert.AreEqual("1", newAlert.Properties["filterindex"]);
                }
                finally
                {
                    // delete alert
                    currentUser.Alerts.DeleteAlert(newAlert.ID);
                    currentUser.Update();
                    ctx.ExecuteQueryRetry();
                }
            }
        }
Пример #39
0
        public void AddGetRemoveAlertTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                ctx.Web.EnsureProperties(w => w.CurrentUser.Id, w => w.CurrentUser.LoginName);
                var currentUser      = ctx.Web.CurrentUser;
                var randomizer       = new Random();
                var randomAlertTitle = randomizer.Next(int.MaxValue).ToString();
                var list             = ctx.Web.GetListByTitle("PnPTestList");
                list.EnsureProperties(l => l.Id);
                var  listId = list.Id;
                Guid alertId;

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Add-PnPAlert",
                                                       new CommandParameter("List", listId),
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.IsTrue(results.Count > 0);
                    Assert.IsTrue(results[0].BaseObject.GetType() == typeof(AlertCreationInformation));
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("List", listId),
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                    Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Alert));
                    var alert = results[0].BaseObject as Alert;
                    Assert.AreEqual(randomAlertTitle, alert.Title);
                    alertId = alert.ID;
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("List", listId));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Remove-PnPAlert",
                                                       new CommandParameter("Identity", alertId),
                                                       new CommandParameter("Force"));
                }

                // check that the alert has been deleted
                ctx.Web.EnsureProperties(w => w.CurrentUser.Alerts);
                var newAlerts = currentUser.Alerts.Where(a => a.Title == randomAlertTitle);
                Assert.AreEqual(0, newAlerts.Count(), "Alert is still present");
            }
        }