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;
                }
            }
        }
    }
}

 

目录
打赏
0
0
0
0
17
分享
相关文章
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
利用Apipost轻松实现用户充值系统的API自动化测试
API在现代软件开发中扮演着连接不同系统与模块的关键角色,其测试的重要性日益凸显。传统API测试面临效率低、覆盖率不足及难以融入自动化工作流等问题。Apipost提供了一站式API自动化测试解决方案,支持零代码拖拽编排、全场景覆盖,并可无缝集成CI/CD流程。通过可视化界面,研发与测试人员可基于同一数据源协作,大幅提升效率。同时,Apipost支持动态数据提取、性能压测等功能,满足复杂测试需求。文档还以用户充值系统为例,详细介绍了从创建测试用例到生成报告的全流程,帮助用户快速上手并提升测试质量。
避免15个常见的API测试错误
API测试是现代软件开发中的关键环节,但测试人员常陷入15个常见错误,如忽略文档、遗漏错误响应、缺乏自动化等。这些问题可能导致API的可靠性、安全性及性能下降。本文详细解析这些错误并提供解决建议。Apipost作为全方位工具,支持自动化测试、动态数据处理与安全性验证,助力高效测试,确保API在各种场景下稳定运行。通过避免这些陷阱,团队可显著提升API质量。
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
96 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
100 4
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
淘宝商品详情高级版 (item_get_pro)API如何测试
要测试淘宝商品详情高级版API(item_get_pro),需先阅读API文档,注册开放平台账号,创建应用获取密钥,搭建测试环境,选择测试工具。测试时设计用例,配置工具,发送请求,验证响应,记录日志。注意安全和数据格式。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等