/// <summary> /// This operation is used to restore the specified file to a specific version. /// </summary> /// <param name="fileName">The site-relative path of the file which will be restored.</param> /// <param name="fileVersion">The version number of the file which will be restored.</param> /// <returns>The response message for restoring the specified file to a specific version.</returns> public RestoreVersionResponseRestoreVersionResult RestoreVersion(string fileName, string fileVersion) { try { fileVersion = fileVersion.Replace("@", string.Empty); RestoreVersionResponseRestoreVersionResult restoreVersionResult = this.service.RestoreVersion( fileName, fileVersion); this.VerifyTransport(); this.VerifySOAPVersion(this.service.SoapVersion); this.VerifyRestoreVersion(restoreVersionResult, SchemaValidation.LastRawResponseXml.OuterXml); return(restoreVersionResult); } catch (SoapException soapException) { this.VerifySOAPFaultDetails(soapException, SchemaValidation.LastRawResponseXml.OuterXml); throw; } catch (WebException) { this.VerifyServerFaults(); throw; } }
/// <summary> /// Verify the RestoreVersion operation related requirements. /// </summary> /// <param name="restoreVersionResult">The RestoreVersionResponseRestoreVersionResult object indicates /// RestoreVersion operation response.</param> /// <param name="soapBody">The string value indicates the SOAP body in RestoreVersion operation response.</param> private void VerifyRestoreVersion(RestoreVersionResponseRestoreVersionResult restoreVersionResult, string soapBody) { bool isSchemaVerified = SchemaValidation.ValidationResult.Equals(ValidationResult.Success); #region Verify MS-VERSS_R18701 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R18701"); // Verify MS-VERSS requirement: MS-VERSS_R18701 Site.CaptureRequirementIfIsTrue( isSchemaVerified, 18701, @"[In RestoreVersion][The schema of GetVersions is defined as:] <wsdl:operation name=""RestoreVersion""> <wsdl:input message=""tns:RestoreVersionSoapIn"" /> <wsdl:output message=""tns:RestoreVersionSoapOut"" /> </wsdl:operation>"); #endregion #region Verify MS-VERSS_R141 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R141"); // Verify MS-VERSS requirement: MS-VERSS_R141 Site.CaptureRequirementIfIsNotNull( restoreVersionResult, 141, @"[In RestoreVersion] [The protocol client sends a RestoreVersionSoapIn request message,] and the protocol server responds with a RestoreVersionSoapOut response message."); #endregion #region Verify MS-VERSS_R147 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R147"); bool isR147Verified = AdapterHelper.IsExistElementInSoapBody(soapBody, "RestoreVersionResponse"); // Verify MS-VERSS requirement: MS-VERSS_R147 Site.CaptureRequirementIfIsTrue( isR147Verified, 147, @"[In RestoreVersionSoapOut] The SOAP body contains a RestoreVersionResponse element."); #endregion #region Verify MS-VERSS_R151 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R151"); // Verify MS-VERSS requirement: MS-VERSS_R151 Site.CaptureRequirementIfIsTrue( isSchemaVerified, 151, @"[In RestoreVersionResponse][The schema of RestoreVersionResponse element is defined as:] <s:element name=""RestoreVersionResponse""> <s:complexType> <s:sequence> <s:element minOccurs=""1"" maxOccurs=""1"" name=""RestoreVersionResult""> <s:complexType> <s:sequence> <s:element name=""results"" minOccurs=""1"" maxOccurs=""1"" type=""tns:Results"" /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element>"); #endregion this.VerifyResultsComplexType(restoreVersionResult.results, isSchemaVerified); }
public void MSVERSS_S02_TC03_RestoreVersionWithoutEnforceCheckout() { // Enable the versioning of the list. bool setVersioning = this.sutControlAdapterInstance.SetVersioning(this.documentLibrary, true, true); Site.Assert.IsTrue( setVersioning, "SetVersioning operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", setVersioning); // Protocol server does not enforce that only checked out files can be modified. bool isSetServerEnforceCheckOut = this.sutControlAdapterInstance.SetEnforceCheckout(this.documentLibrary, false); Site.Assert.IsTrue( isSetServerEnforceCheckOut, "SetServerEnforceCheckOut operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isSetServerEnforceCheckOut); // Upload the first file into specific list. bool isAddFileSuccessful = this.sutControlAdapterInstance.AddFile(this.documentLibrary, this.fileName, TestSuiteHelper.UploadFileName); Site.Assert.IsTrue( isAddFileSuccessful, "AddFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isAddFileSuccessful); // Check out and check in first file to add the file versions. this.testSuiteHelper.AddOneFileVersion(this.fileName); // Call GetVersions operation using absolute fileName. GetVersionsResponseGetVersionsResult getVersionsResponse = this.protocolAdapterInstance.GetVersions(this.fileAbsoluteUrl.AbsoluteUri); // Verify the GetVersions results. this.testSuiteHelper.VerifyResultsInformation(getVersionsResponse.results, OperationName.GetVersions, true); // Get the current version. string currentVersionBeforeRestore = AdapterHelper.GetCurrentVersion(getVersionsResponse.results.result); // Get the previous version which is specific to be restored. string restoreVersion = AdapterHelper.GetPreviousVersion(getVersionsResponse.results.result); // Call RestoreVersion operation using absolute fileName and restore a specified file to a specific version. RestoreVersionResponseRestoreVersionResult restoreVersionNotCheckOutResponse = this.protocolAdapterInstance.RestoreVersion(this.fileAbsoluteUrl.AbsoluteUri, restoreVersion); // Verify the RestoreVersion results. this.testSuiteHelper.VerifyResultsInformation(restoreVersionNotCheckOutResponse.results, OperationName.RestoreVersion, true); // Get the current version in RestoreVersion response. string currentVersionAfterNotCheckOutRestore = AdapterHelper.GetCurrentVersion( restoreVersionNotCheckOutResponse.results.result); // Verify whether the current version after RestoreVersion is increased when the file is not checked out. bool isCurrentVersionIncreased = AdapterHelper.IsCurrentVersionIncreased( currentVersionBeforeRestore, currentVersionAfterNotCheckOutRestore); // Add the debug information Site.Log.Add( LogEntryKind.Debug, "Verify MS-VERSS_R185, if the file is not checked out, the current version before RestoreVersion is {0}," + " and after RestoreVersion is {1}", currentVersionBeforeRestore, currentVersionAfterNotCheckOutRestore); // Verify MS-VERSS requirement: MS-VERSS_R185 Site.CaptureRequirementIfIsTrue( isCurrentVersionIncreased, 185, @"[In RestoreVersion] If the file is not checked out before the restoration, the current version number of the file MUST still be increased, as with any other change."); // Check out the file. bool isCheckOutFile = this.listsSutControlAdaterInstance.CheckoutFile(this.fileAbsoluteUrl); Site.Assert.IsTrue( isCheckOutFile, "CheckOutFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isCheckOutFile); // Call GetVersions operation using absolute fileName. getVersionsResponse = this.protocolAdapterInstance.GetVersions(this.fileAbsoluteUrl.AbsoluteUri); // Get current version before RestoreVersion operation in GetVersions response. currentVersionBeforeRestore = AdapterHelper.GetCurrentVersion(getVersionsResponse.results.result); // Get the previous version which is specific to be restored. restoreVersion = AdapterHelper.GetPreviousVersion(getVersionsResponse.results.result); // Call RestoreVersion operation using absolute fileName and restore a specified file to a specific version. RestoreVersionResponseRestoreVersionResult restoreVersionIsCheckOutResponse = this.protocolAdapterInstance.RestoreVersion(this.fileAbsoluteUrl.AbsoluteUri, restoreVersion); // Get the current version in RestoreVersion response. string currentVersionAfterIsCheckOutRestore = AdapterHelper.GetCurrentVersion( restoreVersionIsCheckOutResponse.results.result); // Add the debug information Site.Log.Add( LogEntryKind.Debug, "Verify MS-VERSS_R186, if the file is checked out, the current version before RestoreVersion is {0}," + " and after RestoreVersion is {1}", currentVersionBeforeRestore, currentVersionAfterIsCheckOutRestore); // Verify MS-VERSS requirement: MS-VERSS_R186 Site.CaptureRequirementIfAreEqual <string>( currentVersionBeforeRestore, currentVersionAfterIsCheckOutRestore, 186, @"[In RestoreVersion] If the file is checked out, the current version number of the file after restoration MUST remain the same as before restoration."); // Check in file. bool isCheckInFile = this.listsSutControlAdaterInstance.CheckInFile( this.fileAbsoluteUrl, TestSuiteHelper.FileComments, ((int)VersionType.MinorCheckIn).ToString()); Site.Assert.IsTrue( isCheckInFile, "CheckInFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isCheckInFile); }
/// <summary> /// A common method used to verify that the client uses the RestoreVersion operation to successfully restore /// the file specified by a URL to a specific version when check out is enforced. /// </summary> /// <param name="url">The URL of a file.</param> private void RestoreVersionVerification(string url) { // Enable the versioning of the list. bool setVersioning = this.sutControlAdapterInstance.SetVersioning(this.documentLibrary, true, true); Site.Assert.IsTrue( setVersioning, "SetVersioning operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", setVersioning); // Upload the file into specific list. bool isAddFileSuccessful = this.sutControlAdapterInstance.AddFile(this.documentLibrary, this.fileName, TestSuiteHelper.UploadFileName); Site.Assert.IsTrue( isAddFileSuccessful, "AddFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isAddFileSuccessful); // Check out and check in file one time to create a new version of the file. this.testSuiteHelper.AddOneFileVersion(this.fileName); // Enforce the file to be checked out. bool setServerEnforceCheckOut = this.sutControlAdapterInstance.SetEnforceCheckout(this.documentLibrary, true); Site.Assert.IsTrue( setServerEnforceCheckOut, "SetServerEnforceCheckOut operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", setServerEnforceCheckOut); // Call GetVersions operation using relative fileName. GetVersionsResponseGetVersionsResult getVersionsResponse = this.protocolAdapterInstance.GetVersions( url); // Verify the GetVersions results. this.testSuiteHelper.VerifyResultsInformation(getVersionsResponse.results, OperationName.GetVersions, true); // Check out the specified file. bool isCheckOutFile = this.listsSutControlAdaterInstance.CheckoutFile(this.fileAbsoluteUrl); Site.Assert.IsTrue( isCheckOutFile, "CheckOutFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isCheckOutFile); // Get the current version of the file. string currentVersionBeforeRestore = AdapterHelper.GetCurrentVersion(getVersionsResponse.results.result); // Get the previous version which is specific to be restored. string restoreVersion = AdapterHelper.GetPreviousVersion(getVersionsResponse.results.result); // Call RestoreVersion operation using relative fileName and restore a specified file to a specific version. RestoreVersionResponseRestoreVersionResult restoreVersionReponse = this.protocolAdapterInstance.RestoreVersion( url, restoreVersion); // Check in the specified file. bool isCheckInFile = this.listsSutControlAdaterInstance.CheckInFile( this.fileAbsoluteUrl, TestSuiteHelper.FileComments, ((int)VersionType.MinorCheckIn).ToString()); Site.Assert.IsTrue( isCheckInFile, "CheckInFile operation returns {0}, TRUE means the operation was executed successfully," + " FALSE means the operation failed", isCheckInFile); // Verify the RestoreVersion results. this.testSuiteHelper.VerifyResultsInformation(restoreVersionReponse.results, OperationName.RestoreVersion, true); // Get the current version in RestoreVersion response. string currentVersionAfterRestore = AdapterHelper.GetCurrentVersion(restoreVersionReponse.results.result); // Verify whether the current version was increased by RestoreVersion. bool isCurrentVersionIncreased = AdapterHelper.IsCurrentVersionIncreased( currentVersionBeforeRestore, currentVersionAfterRestore); // Add the debug information Site.Log.Add( LogEntryKind.Debug, "Verify MS-VERSS_R182, the current version before RestoreVersion is {0}, and after RestoreVersion is {1}", currentVersionBeforeRestore, currentVersionAfterRestore); // Verify MS-VERSS requirement: MS-VERSS_R182 Site.CaptureRequirementIfIsTrue( isCurrentVersionIncreased, 182, @"[In RestoreVersion] After the restoration, the current version number of the file MUST still be increased, as with any other change."); }
/// <summary> /// Verify the RestoreVersion operation related requirements. /// </summary> /// <param name="restoreVersionResult">The RestoreVersionResponseRestoreVersionResult object indicates /// RestoreVersion operation response.</param> /// <param name="soapBody">The string value indicates the SOAP body in RestoreVersion operation response.</param> private void VerifyRestoreVersion(RestoreVersionResponseRestoreVersionResult restoreVersionResult, string soapBody) { bool isSchemaVerified = SchemaValidation.ValidationResult.Equals(ValidationResult.Success); #region Verify MS-VERSS_R18701 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R18701"); // Verify MS-VERSS requirement: MS-VERSS_R18701 Site.CaptureRequirementIfIsTrue( isSchemaVerified, 18701, @"[In RestoreVersion][The schema of GetVersions is defined as:] <wsdl:operation name=""RestoreVersion""> <wsdl:input message=""tns:RestoreVersionSoapIn"" /> <wsdl:output message=""tns:RestoreVersionSoapOut"" /> </wsdl:operation>"); #endregion #region Verify MS-VERSS_R141 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R141"); // Verify MS-VERSS requirement: MS-VERSS_R141 Site.CaptureRequirementIfIsNotNull( restoreVersionResult, 141, @"[In RestoreVersion] [The protocol client sends a RestoreVersionSoapIn request message,] and the protocol server responds with a RestoreVersionSoapOut response message."); #endregion #region Verify MS-VERSS_R147 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R147"); bool isR147Verified = AdapterHelper.IsExistElementInSoapBody(soapBody, "RestoreVersionResponse"); // Verify MS-VERSS requirement: MS-VERSS_R147 Site.CaptureRequirementIfIsTrue( isR147Verified, 147, @"[In RestoreVersionSoapOut] The SOAP body contains a RestoreVersionResponse element."); #endregion #region Verify MS-VERSS_R151 // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-VERSS_R151"); // Verify MS-VERSS requirement: MS-VERSS_R151 Site.CaptureRequirementIfIsTrue( isSchemaVerified, 151, @"[In RestoreVersionResponse][The schema of RestoreVersionResponse element is defined as:] <s:element name=""RestoreVersionResponse""> <s:complexType> <s:sequence> <s:element minOccurs=""1"" maxOccurs=""1"" name=""RestoreVersionResult""> <s:complexType> <s:sequence> <s:element name=""results"" minOccurs=""1"" maxOccurs=""1"" type=""tns:Results"" /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element>"); #endregion this.VerifyResultsComplexType(restoreVersionResult.results, isSchemaVerified); }