SharePoint API测试系列——Manage SharePoint Site Policy & Expiration Email with CSOM API

简介: 转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对CSOM(Not SSOM) Site Policy & Expiration Email的API的调用过程进行封装,做成tool,界面如下: 代码如下: using System; using System.

转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

对CSOM(Not SSOM) Site Policy & Expiration Email的API的调用过程进行封装,做成tool,界面如下:

代码如下:

using System;
using System.Windows.Forms;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.InformationPolicy;

namespace CSOMForm
{
    public partial class MainForm : System.Windows.Forms.Form
    {
        public MainForm()
        {
            InitializeComponent();        
        }

        private void start_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Get all the site policies and add them into the combox.
                var projectPolicies = GetAllSitePolicies(context, web);
                try
                {
                    sitePolicies_comboBox.Items.Clear();
                    foreach (ProjectPolicy projectPolicy in projectPolicies)
                    {
                        sitePolicies_comboBox.Items.Add(projectPolicy.Name);
                    }
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.AppendText(ex.ToString() + System.Environment.NewLine);
                }
            }
        }

        //Get all site policies from the server.
        private ClientObjectList<ProjectPolicy> GetAllSitePolicies(ClientContext context, Web web)
        {
            //API test GetProjectPolicies.
            var projectPolicies = ProjectPolicy.GetProjectPolicies(context, web);
            context.Load(projectPolicies);
            context.ExecuteQuery();
            return projectPolicies;
        }

        //The method to get the current applied site policy from the server.
        private ProjectPolicy GetCurrentAppliedSitePolicy(ClientContext context, Web web)
        {
            //API test GetCurrentlyAppliedProjectPolicyOnWeb.
            ProjectPolicy policy = ProjectPolicy.GetCurrentlyAppliedProjectPolicyOnWeb(context, web);
            context.Load(policy,
                            p => p.Name,
                            p => p.Description,
                            p => p.EmailSubject,
                            p => p.EmailBody,
                            p => p.EmailBodyWithTeamMailbox);
            context.ExecuteQuery();
            return policy;
        }


        //Apply the policy selected to the site.
        private void ApplyProjectPolicy_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    //API test ApplyProjectPolicy.
                    ProjectPolicy.ApplyProjectPolicy(context, web, selectedPolicy);
                    returnDisplay_richTextBox.Text = "The policy we selected has been applied to the site. The current policy applied is:" + System.Environment.NewLine;
                    //API test GetCurrentAppliedSitePolicy.
                    ProjectPolicy AppliedPolicy = GetCurrentAppliedSitePolicy(context, web);
                    context.Load(AppliedPolicy);
                    context.ExecuteQuery();
                    //API test Name.
                    returnDisplay_richTextBox.AppendText(AppliedPolicy.Name.ToString() + System.Environment.NewLine);
                    //API test Description.
                    returnDisplay_richTextBox.AppendText(AppliedPolicy.Description.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = "You may not have a project policy yet. Please check it." + System.Environment.NewLine;
                    returnDisplay_richTextBox.AppendText(ex.ToString());
                }
            }
        }

        /*
            Close the site.
            The site must have a policy applied and the site is open.
        */
        private void closeProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Close the site.
                try
                {
                    //API test CloseProject.
                    ProjectPolicy.CloseProject(context, web);
                    //API test IsProjectClosed.
                    returnDisplay_richTextBox.Text = "The site's project is now closed: ";
                    var ifClosed = ProjectPolicy.IsProjectClosed(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(ifClosed.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void doesProjectHavePolicy_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test DoesProjectHavePolicy.
                    ClientResult<bool> result = ProjectPolicy.DoesProjectHavePolicy(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "DoesProjectHavePolicy: ";
                    returnDisplay_richTextBox.AppendText(result.Value.ToString());
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void openProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Open the site.
                try
                {
                    //API test OpenProject.
                    ProjectPolicy.OpenProject(context, web);
                    //API test IsProjectClosed.
                    returnDisplay_richTextBox.Text = "The site's project is now closed: ";
                    var ifOpen = ProjectPolicy.IsProjectClosed(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(ifOpen.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void getProjectCloseDate_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test GetProjectCloseDate.
                    returnDisplay_richTextBox.Text = "The project's close date is: ";
                    var projectCloseDate = ProjectPolicy.GetProjectCloseDate(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(projectCloseDate.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void getProjectExpirationDate_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test GetProjectExpirationDate.
                    returnDisplay_richTextBox.Text = "The project's expiration date is: ";
                    var projectExpireDate = ProjectPolicy.GetProjectExpirationDate(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(projectExpireDate.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void postponeProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test PostponeProject.
                    ProjectPolicy.PostponeProject(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The project has been postponed.";  
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailSubject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailSubject.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailSubject = emailSubject_textBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy,p => p.EmailSubject);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailSubject is now: " + selectedPolicy.EmailSubject.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailBody_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailBody.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailBody = emailBody_richTextBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy, p => p.EmailBody);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailBody is now: " + selectedPolicy.EmailBody.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailBodyWithTeamMailbox_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailBodyWithTeamMailbox.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailBodyWithTeamMailbox = emailBodyWithTeamMailbox_richTextBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy, p => p.EmailBodyWithTeamMailbox);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailBodyWithTeamMailbox is now: " + selectedPolicy.EmailBodyWithTeamMailbox.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }
    }
}

 

相关文章
|
10天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
11天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
14 2
|
11天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
13 3
|
11天前
|
Java 测试技术 API
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
10 2
|
12天前
|
XML 测试技术 API
Python的API自动化测试
【4月更文挑战第17天】使用Python进行API自动化测试,可选框架如unittest、pytest。结合requests库发送HTTP请求,编写测试用例描述场景,使用断言验证响应。通过参数化测试提高覆盖率,集成CI工具实现自动化。记录测试结果,如用pytest和requests编写简单测试脚本。利用Postman、Allure和mocking技术优化测试流程。持续维护测试用例以应对API变化。
27 2
|
2月前
|
安全 测试技术 API
|
2月前
|
JSON 测试技术 API
Postman Newman 实现 API 自动化测试的快速指南
Newman 是一款专为 Postman 打造的命令行工具,旨在通过自动运行 Postman 集合和环境,实现 API 测试的自动化。它使得开发者无需打开 Postman 图形界面,即可直接在命令行中执行测试用例。
|
2月前
|
缓存 负载均衡 Java
Python实现API接口并发测试
Python实现API接口并发测试
66 0
|
2月前
|
架构师 前端开发 测试技术
|
3月前
|
JSON JavaScript 前端开发
提升 API 测试效率:Postman Tests 详解
Postman 不仅是一个强大的 API 开发工具,它还提供了创建自动化测试脚本的能力,这些脚本可以用于检验API请求得到的响应是否符合预期。这些测试脚本被称为 “Tests”,支持使用 JavaScript 编程语言进行编写,并且 Postman 提供了一系列的断言库来帮助你检查包括但不限于状态码、响应内容以及响应时间在内的响应数据。