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(); } } }
public static void Initialize(TestContext testContext) { using (var ctx = TestCommon.CreateClientContext()) { _site1Id = Guid.NewGuid().ToString(); _site2Id = Guid.NewGuid().ToString(); _site1RelativeUrl = $"/sites/PNPPS_Test_{_site1Id}"; _site2RelativeUrl = $"/sites/PNPPS_Test_{_site2Id}"; _site1Url = $"{TestCommon.GetTenantRootUrl(ctx)}{_site1RelativeUrl}"; _site2Url = $"{TestCommon.GetTenantRootUrl(ctx)}{_site2RelativeUrl}"; using (var site1Ctx = OfficeDevPnP.Core.Sites.SiteCollection.CreateAsync(ctx, new OfficeDevPnP.Core.Sites.CommunicationSiteCollectionCreationInformation() { Url = _site1Url, Lcid = 1033, Title = "PnP PowerShell File Copy Test Site 1" }).GetAwaiter().GetResult()) { Folder folder = site1Ctx.Web.GetFolderByServerRelativeUrl(Site1RelativeFolderUrl); FileCreationInformation fci = new FileCreationInformation { Content = System.Text.Encoding.ASCII.GetBytes(TargetFileContents), Url = TargetFileName, Overwrite = true }; File fileToUpload = folder.Files.Add(fci); site1Ctx.Load(fileToUpload); fci.Url = TargetFileNameWithAmpersand; fci.Overwrite = true; fileToUpload = folder.Files.Add(fci); site1Ctx.Load(fileToUpload); fci.Url = TargetFileNameWithHashtag; fci.Overwrite = true; fileToUpload = folder.Files.Add(fci); site1Ctx.Load(fileToUpload); folder.EnsureFolder(TargetCopyFolderName); // Prereq for CopyFile_EmptyFolderBetweenSiteCollections_Test folder.EnsureFolder(EmptyFolderName); // Prereq for CopyFile_FolderWithSkipSourceFolderNameBetweenSiteCollections_Test var sourceFolder = folder.EnsureFolder(SourceFolderName); fileToUpload = sourceFolder.Files.Add(fci); site1Ctx.Load(fileToUpload); // Prereq for CopyFile_FolderWithFoldersAndEmptyFolderBetweenSiteCollections_Test var folderHirachyFolder0 = folder.EnsureFolder(SourceFolderWithFolders); var folderHirachyFolder1 = folderHirachyFolder0.EnsureFolder(TargetCopyFolderName); var folderHirachyFile0 = folderHirachyFolder0.Files.Add(fci); var folderHirachyFile1 = folderHirachyFolder1.Files.Add(fci); site1Ctx.Load(folderHirachyFile0); site1Ctx.Load(folderHirachyFile1); folderHirachyFolder1.EnsureFolder(EmptyFolderName); site1Ctx.ExecuteQueryRetry(); } OfficeDevPnP.Core.Sites.SiteCollection.CreateAsync(ctx, new OfficeDevPnP.Core.Sites.CommunicationSiteCollectionCreationInformation() { Url = _site2Url, Lcid = 1033, Title = "PnP PowerShell File Copy Test Site 2" }).GetAwaiter().GetResult(); } }
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"); } }