Пример #1
0
        /// <summary>
        /// Get the WorkFlow Template Item By specified Name
        /// </summary>
        /// <param name="templateName">A parameter represents the template name which will be used to find out the template item</param>
        /// <param name="templateData">A parameter represents response of GetTemplatesForItem operation.</param>
        /// <returns>A return represents the template item data.</returns>
        public static TemplateDataWorkflowTemplate GetWorkFlowTemplateItemByName(string templateName, TemplateData templateData)
        {
            if (string.IsNullOrEmpty(templateName) || null == templateData)
            {  
               string errMsg = string.Format(
                   "All Parameters should not be null or empty: templateName[{0}] getTemplatesForItemResult[{1}]",
                   string.IsNullOrEmpty(templateName) ? "NullOrEmpty" : "Valid",
                   null == templateData ? "Null" : "Valid");
               throw new ArgumentException(errMsg);
            }

            if (null == templateData.WorkflowTemplates)
            {
               site.Assert.Fail("Could not get the valid TemplateData from the response of GetTemplatesForItem operation.");
            }

            TemplateDataWorkflowTemplate[] templates = templateData.WorkflowTemplates;

            var expectedTemplateItems = from templateItem in templates
                                        where templateItem.Name.Equals(templateName, StringComparison.OrdinalIgnoreCase)
                                        select templateItem;

            TemplateDataWorkflowTemplate matchTemplateItem = null;
            int itemsCounter = expectedTemplateItems.Count();
            if (1 < itemsCounter)
            {
                site.Assert.Fail("The response of GetTemplatesForItem operation should contain only one matched TemplateData item.");
            }
            else if (0 == itemsCounter)
            {
                return matchTemplateItem;
            }
            else
            {
                matchTemplateItem = expectedTemplateItems.ElementAt(0);
            }

            return matchTemplateItem;
        }
Пример #2
0
        /// <summary>
        /// Get the association data from specified templateItem in response of GetTemplatesForItem operation.
        /// </summary>
        /// <param name="templateName">A parameter represents the template name which will be used to find out the template item</param>
        /// <param name="templateData">A parameter represents response of GetTemplatesForItem operation which contains the association data.</param>
        /// <returns>A return represents the association data.</returns>
        public static XmlNode GetAssociationDataFromTemplateItem(string templateName, TemplateData templateData)
        {
            TemplateDataWorkflowTemplate currentWorkflowTemplateItem = GetWorkFlowTemplateItemByName(templateName, templateData);
            if (null == currentWorkflowTemplateItem)
            {
                site.Assert.Fail(
                            "The response of getTemplatesForItem operation should contain template item with expected name[{0}]",
                            templateName);
            }

            return currentWorkflowTemplateItem.AssociationData;
        }
Пример #3
0
        /// <summary>
        /// This method is used to capture the TemplateData related requirements.
        /// </summary>
        /// <param name="templateData">A parameter represents the template data get from SUT.</param>
        private void CaptureTemplateDataRelatedRequirements(TemplateData templateData)
        {
            // The schema has been validated by full WSDL.
            // If it returns success, the schema is valid, capture related requirements.
            isSuccess = SchemaValidation.ValidationResult == ValidationResult.Success;
            
            // Verify MS-WWSP requirement: MS-WWSP_R34
            Site.CaptureRequirementIfIsTrue(
                isSuccess,
                34,
               @"[In TemplateData][The TemplateData schema is:] <s:element name=""TemplateData"" >
  <s:complexType>
    <s:sequence>
      <s:element name=""Web"" minOccurs=""1"" maxOccurs=""1"" >
        <s:complexType>
          <s:attribute name=""Title"" type=""s:string"" use=""required"" />
          <s:attribute name=""Url"" type=""s:string"" use=""required"" />
        </s:complexType>
      </s:element>
      <s:element name=""List"" minOccurs=""1"" maxOccurs=""1"" >
        <s:complexType>
          <s:attribute name=""Title"" type=""s:string"" use=""required"" />
          <s:attribute name=""Url"" type=""s:string"" use=""required"" />
        </s:complexType>
      </s:element>
      <s:element name=""WorkflowTemplates"" >
        <s:complexType>
          <s:sequence>
            <s:element name=""WorkflowTemplate"" minOccurs=""0"" maxOccurs=""unbounded"">
              <s:complexType>
                <s:sequence>
                  <s:element name=""WorkflowTemplateIdSet"" minOccurs=""1"" maxOccurs=""1"">
                    <s:complexType>
                      <s:attribute name=""TemplateId"" type=""s1:guid"" use=""required"" />
                      <s:attribute name=""BaseId"" type=""s1:guid"" use=""required"" />
                    </s:complexType>
                  </s:element>
                  <s:element name=""AssociationData"" minOccurs=""0"" maxOccurs=""1"" >
                    <s:complexType>
                      <s:sequence>
                        <s:any/>
                      </s:sequence>
                    </s:complexType>
                  </s:element>
                  <s:element name=""Metadata"" minOccurs=""1"" maxOccurs=""1"">
                    <s:complexType>
                      
                        <s:all>
                          <s:element name=""InitiationCategories"" minOccurs=""0"" maxOccurs=""1"">
                            <s:complexType>
                              <s:sequence>
                                <s:any/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name=""Instantiation_FormURN"" minOccurs=""0"" maxOccurs=""1"">
                            <s:complexType>
                              <s:sequence>
                                <s:any/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name=""Instantiation_FormURI"" minOccurs=""0"" maxOccurs=""1"">
                            <s:complexType>
                              <s:sequence>
                                <s:any/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name=""AssignmentStagesName"" minOccurs=""0"" maxOccurs=""1"">
                            <s:complexType>
                              <s:sequence>
                                <s:any/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                          <s:element name=""SigClientSettings"" minOccurs=""0"" maxOccurs=""1"">
                            <s:complexType>
                              <s:sequence>
                                <s:any/>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                        </s:all>
                      
                    </s:complexType>
                  </s:element>
                </s:sequence>
                <s:attribute name=""Name"" type=""s:string"" use=""required"" />
                <s:attribute name=""Description"" type=""s:string"" use=""required"" />
                <s:attribute name=""InstantiationUrl"" type=""s:string"" />
              </s:complexType>
            </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:sequence>
  </s:complexType>
</s:element>");

            // Capture R421
           if (Common.IsRequirementEnabled(421, this.Site))
           {
               var instantiationFormURIElements = from workflowTemplateItem in templateData.WorkflowTemplates
                                  where workflowTemplateItem.Metadata.Instantiation_FormURI != null
                                       && !string.IsNullOrEmpty(workflowTemplateItem.Metadata.Instantiation_FormURI.InnerText)
                                  select workflowTemplateItem.Metadata.Instantiation_FormURI;
               
               int numberOfexistingElements = instantiationFormURIElements.Count();
               this.Site.Log.Add(
                                LogEntryKind.Debug,
                                @"The actual value: instantiationFormURI Elements' number[{0}] for requirement #R421",
                                numberOfexistingElements);
                             
               this.Site.CaptureRequirementIfAreNotEqual(
                                            0,
                                            numberOfexistingElements,
                                            421,
                                            @"[In Appendix B: Product Behavior]Implementation does support this[Instantiation_FormURI] element.(Microsoft® SharePoint® Foundation 2010 and above follow this behavior.)");
           }

            // Get the association data which is included in current used workflow association item.
            string expectedworkflowTemplateName = Common.GetConfigurationPropertyValue("WorkflowAssociationName", Site);
            XmlNode currentAssociationData = AdapterHelper.GetAssociationDataFromTemplateItem(expectedworkflowTemplateName, templateData);
           
            // Verify the association data relate requirements.
            this.CaptureWorkflowAssociation(currentAssociationData);
        }