| // Copyright 2012 Google Inc. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.enterprise.adaptor.sharepoint; |
| |
| import static com.google.enterprise.adaptor.sharepoint.SharePointAdaptor.SiteDataStubFactory; |
| import static org.junit.Assert.*; |
| |
| import com.google.enterprise.adaptor.Config; |
| import com.google.enterprise.adaptor.DocId; |
| import com.google.enterprise.adaptor.DocIdPusher; |
| import com.google.enterprise.adaptor.Metadata; |
| |
| import org.apache.axis2.AxisFault; |
| import org.apache.axis2.databinding.types.UnsignedInt; |
| import org.junit.*; |
| import org.junit.rules.ExpectedException; |
| |
| import java.io.*; |
| import java.nio.charset.Charset; |
| import java.rmi.RemoteException; |
| import java.util.concurrent.atomic.AtomicLong; |
| |
| /** |
| * Test cases for {@link SharePointAdaptor}. |
| */ |
| public class SharePointAdaptorTest { |
| private final Charset charset = Charset.forName("UTF-8"); |
| private Config config; |
| private SharePointAdaptor adaptor; |
| |
| @Rule |
| public ExpectedException thrown = ExpectedException.none(); |
| |
| /** |
| * The first time SiteDataStub is created it initializes some Axis2 |
| * structures. Do this in a separately so that the timing for this |
| * initalization does not count toward the first real test run. It looks like |
| * a bug when a faster test takes longer, just because it ran first. |
| */ |
| @BeforeClass |
| public static void initSiteDataStub() throws AxisFault { |
| new UnsupportedSiteDataStub(""); |
| } |
| |
| @Before |
| public void setup() { |
| config = new Config(); |
| new SharePointAdaptor().initConfig(config); |
| config.overrideKey("sharepoint.server", "http://localhost:1"); |
| config.overrideKey("sharepoint.username", "fakeuser"); |
| config.overrideKey("sharepoint.password", "fakepass"); |
| } |
| |
| @After |
| public void teardown() { |
| if (adaptor != null) { |
| adaptor.destroy(); |
| } |
| } |
| |
| @Test |
| public void testConstructor() { |
| new SharePointAdaptor(); |
| } |
| |
| @Test |
| public void testNullSiteDataStubFactory() { |
| thrown.expect(NullPointerException.class); |
| new SharePointAdaptor(null); |
| } |
| |
| @Test |
| public void testInitDestroy() throws IOException { |
| adaptor = new SharePointAdaptor(new UnsupportedSiteDataStubFactory()); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| adaptor.destroy(); |
| adaptor = null; |
| } |
| |
| @Test |
| public void testGetDocContentWrongServer() throws IOException { |
| class WrongServerSiteDataStub extends UnsupportedSiteDataStub { |
| private final String endpoint; |
| |
| public WrongServerSiteDataStub(String endpoint) |
| throws AxisFault { |
| super(endpoint); |
| this.endpoint = endpoint; |
| } |
| |
| @Override |
| public SiteDataStub.GetSiteAndWebResponse getSiteAndWeb( |
| SiteDataStub.GetSiteAndWeb request) { |
| assertEquals(endpoint, "http://localhost:1/_vti_bin/SiteData.asmx"); |
| assertEquals("http://wronghost:1/", request.getStrUrl()); |
| SiteDataStub.GetSiteAndWebResponse response |
| = new SiteDataStub.GetSiteAndWebResponse(); |
| response.setGetSiteAndWebResult(new UnsignedInt(1)); |
| return response; |
| } |
| } |
| |
| adaptor = new SharePointAdaptor(new SiteDataStubFactory() { |
| @Override |
| public SiteDataStub newSiteDataStub(String endpoint) throws AxisFault { |
| return new WrongServerSiteDataStub(endpoint); |
| } |
| }); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| GetContentsRequest request = new GetContentsRequest( |
| new DocId("http://wronghost:1/")); |
| GetContentsResponse response = new GetContentsResponse(baos); |
| adaptor.getDocContent(request, response); |
| assertTrue(response.isNotFound()); |
| } |
| |
| @Test |
| public void testGetDocContentVirtualServer() throws IOException { |
| final String getContentVirtualServer |
| = "<VirtualServer>" |
| + "<Metadata URL=\"http://localhost:1/\" />" |
| + "<ContentDatabases>" |
| + "<ContentDatabase ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "</ContentDatabases>" |
| + "<Policies AnonymousGrantMask=\"0\" AnonymousDenyMask=\"0\">" |
| + "<PolicyUser LoginName=\"NT AUTHORITY\\LOCAL SERVICE\"" |
| + " Sid=\"S-1-5-19\" GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\spuser1\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\Administrator\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " GrantMask=\"9223372036854775807\" DenyMask=\"0\"/>" |
| + "</Policies></VirtualServer>"; |
| final String getContentContentDatabase |
| = "<ContentDatabase>" |
| + "<Metadata ChangeId=\"1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727" |
| + "056594000000;603\"" |
| + " ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "<Sites>" |
| + "<Site URL=\"http://localhost:1\"" |
| + " ID=\"{bb3bb2dd-6ea7-471b-a361-6fb67988755c}\" />" |
| + "<Site URL=\"http://localhost:1/sites/SiteCollection\"" |
| + " ID=\"{5cbcd3b1-fca9-48b2-92db-3b5de26f837d}\" />" |
| + "</Sites></ContentDatabase>"; |
| class VirtualServerSiteDataStub extends UnsupportedSiteDataStub { |
| public VirtualServerSiteDataStub(String endpoint) throws AxisFault { |
| super(endpoint); |
| } |
| |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) { |
| if (SiteDataStub.ObjectType.VirtualServer |
| .equals(request.getObjectType())) { |
| assertEquals(true, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentVirtualServer); |
| return response; |
| } else if (SiteDataStub.ObjectType.ContentDatabase |
| .equals(request.getObjectType())) { |
| assertEquals(true, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}", |
| request.getObjectId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentContentDatabase); |
| return response; |
| } else { |
| fail("Unknown object type: " + request.getObjectType()); |
| throw new AssertionError(); |
| } |
| } |
| } |
| |
| adaptor = new SharePointAdaptor(new SiteDataStubFactory() { |
| @Override |
| public SiteDataStub newSiteDataStub(String endpoint) throws AxisFault { |
| return new VirtualServerSiteDataStub(endpoint); |
| } |
| }); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| GetContentsResponse response = new GetContentsResponse(baos); |
| adaptor.getDocContent(new GetContentsRequest(new DocId("")), response); |
| String responseString = new String(baos.toByteArray(), charset); |
| final String golden = "<!DOCTYPE html>\n" |
| + "<html><head><title>VirtualServer http://localhost:1/</title></head>" |
| + "<body><h1>VirtualServer http://localhost:1/</h1>" |
| + "<p>Sites</p><ul>" |
| + "<li><a href=\"http://localhost/http://localhost:1\">" |
| + "http://localhost:1</a></li>" |
| + "<li>" |
| + "<a href=\"http://localhost/http://localhost:1/sites/SiteCollection\"" |
| + ">" |
| + "http://localhost:1/sites/SiteCollection</a></li>" |
| + "</ul></body></html>"; |
| assertEquals(golden, responseString); |
| } |
| |
| @Test |
| public void testGetDocContentSiteCollection() throws IOException { |
| final String getContentSiteCollection |
| = "<Web>" |
| + "<Metadata URL=\"http://localhost:1\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\"" |
| + " Created=\"2011-10-14 18:59:25Z\"" |
| + " ID=\"{b2ea1067-3a54-4ab7-a459-c8ec864b97eb}\"" |
| + " Title=\"chinese1\" Description=\"\"" |
| + " Author=\"GDC-PSL\\administrator\" Language=\"1033\"" |
| + " CRC=\"558566148\" NoIndex=\"False\" DefaultHomePage=\"\"" |
| + " ExternalSecurity=\"False\"" |
| + " ScopeID=\"{01abac8c-66c8-4fed-829c-8dd02bbf40dd}\"" |
| + " AllowAnonymousAccess=\"False\" AnonymousViewListItems=\"False\"" |
| + " AnonymousPermMask=\"0\" />" |
| + "<Users>" |
| + "<User ID=\"1\" Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " Name=\"GDC-PSL\\administrator\"" |
| + " LoginName=\"GDC-PSL\\administrator\" Email=\"\" Notes=\"\"" |
| + " IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "<User ID=\"2\" Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " Name=\"spuser1\" LoginName=\"GDC-PSL\\spuser1\" Email=\"\"" |
| + " Notes=\"\" IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "</Users>" |
| + "<ACL><permissions>" |
| + "<permission memberid='2' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions>" |
| + "</ACL>" |
| + "<Webs>" |
| + "<Web URL=\"http://localhost:1/somesite\"" |
| + " ID=\"{ee63e7d0-da23-4553-9f14-359f1cc1bf1c}\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\" />" |
| + "</Webs><Lists>" |
| + "<List ID=\"{133fcb96-7e9b-46c9-b5f3-09770a35ad8a}\"" |
| + " LastModified=\"2012-05-15 18:21:38Z\"" |
| + " DefaultViewUrl=\"/Lists/Announcements/AllItems.aspx\" />" |
| + "<List ID=\"{648f6636-3d90-4565-86b9-2dd7611fc855}\"" |
| + " LastModified=\"2012-05-15 19:07:40Z\"" |
| + " DefaultViewUrl=\"/Shared Documents/Forms/AllItems.aspx\" />" |
| + "</Lists>" |
| + "<FPFolder><Folders>" |
| + "<Folder URL=\"Lists\" ID=\"{c2c6cfcc-439e-4372-8a7a-87bec657eebf}\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\" />" |
| + "</Folders><Files>" |
| + "<File URL=\"default.aspx\"" |
| + " ID=\"{1bdad8a3-376d-448c-b9c3-de91a6152687}\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\" />" |
| + "</Files></FPFolder></Web>"; |
| class SiteCollectionSiteDataStub extends UnsupportedSiteDataStub { |
| private final String endpoint; |
| |
| public SiteCollectionSiteDataStub(String endpoint) throws AxisFault { |
| super(endpoint); |
| this.endpoint = endpoint; |
| } |
| |
| @Override |
| public SiteDataStub.GetSiteAndWebResponse getSiteAndWeb( |
| SiteDataStub.GetSiteAndWeb request) { |
| assertEquals(endpoint, "http://localhost:1/_vti_bin/SiteData.asmx"); |
| assertEquals("http://localhost:1/sites/SiteCollection", |
| request.getStrUrl()); |
| SiteDataStub.GetSiteAndWebResponse response |
| = new SiteDataStub.GetSiteAndWebResponse(); |
| response.setGetSiteAndWebResult(new UnsignedInt(0)); |
| response.setStrSite("http://localhost:1/sites/SiteCollection"); |
| response.setStrWeb("http://localhost:1/sites/SiteCollection"); |
| return response; |
| } |
| |
| @Override |
| public SiteDataStub.GetURLSegmentsResponse getURLSegments( |
| SiteDataStub.GetURLSegments request) { |
| assertEquals(endpoint, |
| "http://localhost:1/sites/SiteCollection/_vti_bin/SiteData.asmx"); |
| assertEquals("http://localhost:1/sites/SiteCollection", |
| request.getStrURL()); |
| SiteDataStub.GetURLSegmentsResponse response |
| = new SiteDataStub.GetURLSegmentsResponse(); |
| response.setGetURLSegmentsResult(true); |
| // Leave everything else null. |
| return response; |
| } |
| |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) { |
| assertEquals(SiteDataStub.ObjectType.Site, request.getObjectType()); |
| assertEquals(true, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals(null, request.getObjectId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentSiteCollection); |
| return response; |
| } |
| } |
| |
| adaptor = new SharePointAdaptor(new SiteDataStubFactory() { |
| @Override |
| public SiteDataStub newSiteDataStub(String endpoint) throws AxisFault { |
| return new SiteCollectionSiteDataStub(endpoint); |
| } |
| }); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| GetContentsRequest request = new GetContentsRequest( |
| new DocId("http://localhost:1/sites/SiteCollection")); |
| GetContentsResponse response = new GetContentsResponse(baos); |
| adaptor.getDocContent(request, response); |
| String responseString = new String(baos.toByteArray(), charset); |
| final String golden = "<!DOCTYPE html>\n" |
| + "<html><head><title>Site chinese1</title></head>" |
| + "<body><h1>Site chinese1</h1>" |
| + "<p>Sites</p>" |
| + "<ul><li><a href=\"http://localhost/http://localhost:1/somesite\">" |
| + "http://localhost:1/somesite</a></li></ul>" |
| + "<p>Lists</p>" |
| + "<ul><li><a href=\"http://localhost/http://localhost:1/Lists/Announce" |
| + "ments/AllItems.aspx\">/Lists/Announcements/AllItems.aspx</a></li>" |
| + "<li><a href=\"http://localhost/http://localhost:1/Shared%20Documents" |
| + "/Forms/AllItems.aspx\">/Shared Documents/Forms/AllItems.aspx</a>" |
| + "</li></ul>" |
| + "<p>Folders</p>" |
| + "<ul><li><a href=\"http://localhost/http://localhost:1/sites/SiteColl" |
| + "ection/Lists\">Lists</a></li></ul>" |
| + "<p>Files</p>" |
| + "<ul><li><a href=\"http://localhost/http://localhost:1/sites/SiteColl" |
| + "ection/default.aspx\">default.aspx</a></li></ul>" |
| + "</body></html>"; |
| assertEquals(golden, responseString); |
| } |
| |
| @Test |
| public void testGetDocContentListItem() throws IOException { |
| final String getContentListItemResponse |
| = "<Item>" |
| + "<Metadata>" |
| + "<scope id=\"{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}\"><permissions>" |
| + "<permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></scope>" |
| + "</Metadata>" |
| + "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'" |
| + " xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'" |
| + " xmlns:rs='urn:schemas-microsoft-com:rowset'" |
| + " xmlns:z='#RowsetSchema'>" |
| + "<s:Schema id='RowsetSchema'>" |
| + "<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>" |
| + "<s:AttributeType name='ows_ContentTypeId' rs:name='Content Type ID'" |
| + " rs:number='1'>" |
| + "<s:datatype dt:type='int' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Title' rs:name='Title' rs:number='2'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationComments'" |
| + " rs:name='Approver Comments' rs:number='3'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_File_x0020_Type' rs:name='File Type'" |
| + " rs:number='4'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Additional_x0020_Info'" |
| + " rs:name='Additional Info' rs:number='5'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ContentType' rs:name='Content Type'" |
| + " rs:number='6'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ID' rs:name='ID' rs:number='7'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Modified' rs:name='Modified'" |
| + " rs:number='8'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created' rs:name='Created' rs:number='9'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Author' rs:name='Created By'" |
| + " rs:number='10'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Editor' rs:name='Modified By'" |
| + " rs:number='11'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__HasCopyDestinations'" |
| + " rs:name='Has Copy Destinations' rs:number='12'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__CopySource' rs:name='Copy Source'" |
| + " rs:number='13'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_owshiddenversion'" |
| + " rs:name='owshiddenversion' rs:number='14'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowVersion'" |
| + " rs:name='Workflow Version' rs:number='15'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersion' rs:name='UI Version'" |
| + " rs:number='16'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersionString' rs:name='Version'" |
| + " rs:number='17'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Attachments' rs:name='Attachments'" |
| + " rs:number='18'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationStatus'" |
| + " rs:name='Approval Status' rs:number='19'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitleNoMenu' rs:name='Title'" |
| + " rs:number='20'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitle' rs:name='Title'" |
| + " rs:number='21'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_SelectTitle' rs:name='Select'" |
| + " rs:number='22'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_InstanceID' rs:name='Instance ID'" |
| + " rs:number='23'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Order' rs:name='Order' rs:number='24'>" |
| + "<s:datatype dt:type='float' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_GUID' rs:name='GUID' rs:number='25'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowInstanceID'" |
| + " rs:name='Workflow Instance ID' rs:number='26'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileRef' rs:name='URL Path'" |
| + " rs:number='27'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileDirRef' rs:name='Path'" |
| + " rs:number='28'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Last_x0020_Modified' rs:name='Modified'" |
| + " rs:number='29'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created_x0020_Date' rs:name='Created'" |
| + " rs:number='30'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FSObjType' rs:name='Item Type'" |
| + " rs:number='31'>" |
| + "<s:datatype dt:type='ui1' dt:lookup='true' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_PermMask'" |
| + " rs:name='Effective Permissions Mask' rs:number='32'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileLeafRef' rs:name='Name'" |
| + " rs:number='33'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_UniqueId' rs:name='Unique Id'" |
| + " rs:number='34'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ProgId' rs:name='ProgId' rs:number='35'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ScopeId' rs:name='ScopeId'" |
| + " rs:number='36'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_HTML_x0020_File_x0020_Type'" |
| + " rs:name='HTML File Type' rs:number='37'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableStart'" |
| + " rs:name='Edit Menu Table Start' rs:number='38'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableEnd'" |
| + " rs:name='Edit Menu Table End' rs:number='39'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilenameNoMenu' rs:name='Name'" |
| + " rs:number='40'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilename' rs:name='Name'" |
| + " rs:number='41'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_DocIcon' rs:name='Type' rs:number='42'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ServerUrl' rs:name='Server Relative URL'" |
| + " rs:number='43'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_EncodedAbsUrl'" |
| + " rs:name='Encoded Absolute URL' rs:number='44'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_BaseName' rs:name='File Name'" |
| + " rs:number='45'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_MetaInfo' rs:name='Property Bag'" |
| + " rs:number='46'>" |
| + "<s:datatype dt:type='int' dt:lookup='true' dt:maxLength='2147483646'" |
| + " />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__Level' rs:name='Level' rs:number='47'>" |
| + "<s:datatype dt:type='ui1' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__IsCurrentVersion'" |
| + " rs:name='Is Current Version' rs:number='48'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "</s:ElementType></s:Schema><scopes>" |
| + "<scope id='{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}' >" |
| + "<permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "<scope id='{2e29615c-59e7-493b-b08a-3642949cc069}' >" |
| + "<permission memberid='1' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "</scopes>" |
| + "<rs:data ItemCount=\"1\">" |
| + "<z:row ows_ContentTypeId='0x0100442459C9B5E59C4F9CFDC789A220FC92'" |
| + " ows_Title='Inside Folder' ows_ContentType='Item' ows_ID='2'" |
| + " ows_Modified='2012-05-04T21:24:32Z'" |
| + " ows_Created='2012-05-01T22:14:06Z'" |
| + " ows_Author='1073741823;#System Account'" |
| + " ows_Editor='1073741823;#System Account' ows_owshiddenversion='4'" |
| + " ows_WorkflowVersion='1' ows__UIVersion='512'" |
| + " ows__UIVersionString='1.0' ows_Attachments='1'" |
| + " ows__ModerationStatus='0' ows_LinkTitleNoMenu='Inside Folder'" |
| + " ows_LinkTitle='Inside Folder' ows_SelectTitle='2'" |
| + " ows_Order='200.000000000000'" |
| + " ows_GUID='{2C5BEF60-18FA-42CA-B472-7B5E1EC405A5}'" |
| + " ows_FileRef='2;#sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "2_.000'" |
| + " ows_FileDirRef='2;#sites/SiteCollection/Lists/Custom List/Test Fold" |
| + "er'" |
| + " ows_Last_x0020_Modified='2;#2012-05-01T22:14:06Z'" |
| + " ows_Created_x0020_Date='2;#2012-05-01T22:14:06Z'" |
| + " ows_FSObjType='2;#0' ows_PermMask='0x7fffffffffffffff'" |
| + " ows_FileLeafRef='2;#2_.000'" |
| + " ows_UniqueId='2;#{E7156244-AC2F-4402-AA74-7A365726CD02}'" |
| + " ows_ProgId='2;#'" |
| + " ows_ScopeId='2;#{2E29615C-59E7-493B-B08A-3642949CC069}'" |
| + " ows__EditMenuTableStart='2_.000' ows__EditMenuTableEnd='2'" |
| + " ows_LinkFilenameNoMenu='2_.000' ows_LinkFilename='2_.000'" |
| + " ows_ServerUrl='/sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "2_.000'" |
| + " ows_EncodedAbsUrl='http://localhost:1/sites/SiteCollection/Lists/Cu" |
| + "stom%20List/Test%20Folder/2_.000'" |
| + " ows_BaseName='2_' ows_MetaInfo='2;#' ows__Level='1'" |
| + " ows__IsCurrentVersion='1' ows_ServerRedirected='0'/>" |
| + "</rs:data>" |
| + "</xml></Item>"; |
| final String getContentListItemAttachmentsResponse |
| = "<Item Count=\"1\">" |
| + "<Attachment URL=\"http://localhost:1/sites/SiteCollection/Lists/Cust" |
| + "om List/Attachments/2/1046000.pdf\" />" |
| + "</Item>"; |
| SiteDataStub siteDataStub = new UnsupportedSiteDataStub("") { |
| @Override |
| public SiteDataStub.GetURLSegmentsResponse getURLSegments( |
| SiteDataStub.GetURLSegments request) { |
| assertEquals("http://localhost:1/sites/SiteCollection/Lists/Custom List" |
| + "/Test Folder/2_.000", request.getStrURL()); |
| SiteDataStub.GetURLSegmentsResponse response |
| = new SiteDataStub.GetURLSegmentsResponse(); |
| response.setGetURLSegmentsResult(true); |
| response.setStrListID("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}"); |
| response.setStrItemID("2"); |
| return response; |
| } |
| |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) { |
| if (SiteDataStub.ObjectType.ListItem.equals(request.getObjectType())) { |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}", |
| request.getObjectId()); |
| assertEquals("2", request.getItemId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentListItemResponse); |
| return response; |
| } else if (SiteDataStub.ObjectType.ListItemAttachments |
| .equals(request.getObjectType())) { |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}", |
| request.getObjectId()); |
| assertEquals("2", request.getItemId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentListItemAttachmentsResponse); |
| return response; |
| } else { |
| fail("Unexpected object type: " + request.getObjectType()); |
| throw new AssertionError(); |
| } |
| } |
| }; |
| SiteDataStubFactory siteDataStubFactory |
| = new SingleSiteDataStubFactory(siteDataStub); |
| adaptor = new SharePointAdaptor(siteDataStubFactory); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| GetContentsRequest request = new GetContentsRequest( |
| new DocId("http://localhost:1/sites/SiteCollection/Lists/Custom List/" |
| + "Test Folder/2_.000")); |
| GetContentsResponse response = new GetContentsResponse(baos); |
| adaptor.new SiteDataClient("http://localhost:1/sites/SiteCollection", |
| siteDataStubFactory).getDocContent(request, response); |
| String responseString = new String(baos.toByteArray(), charset); |
| final String golden |
| = "<!DOCTYPE html>\n" |
| + "<html><head><title>List Item Inside Folder</title></head>" |
| + "<body><h1>List Item Inside Folder</h1>" |
| + "<p>Attachments</p><ul>" |
| + "<li><a href=\"http://localhost/http://localhost:1/sites/SiteCollecti" |
| + "on/Lists/Custom%20List/Attachments/2/1046000.pdf\">" |
| + "http://localhost:1/sites/SiteCollection/Lists/Custom List/Attachment" |
| + "s/2/1046000.pdf</a></li>" |
| + "</ul></body></html>"; |
| final Metadata goldenMetadata; |
| { |
| Metadata meta = new Metadata(); |
| meta.add("Attachments", "1"); |
| meta.add("Author", "System Account"); |
| meta.add("BaseName", "2_"); |
| meta.add("ContentType", "Item"); |
| meta.add("ContentTypeId", "0x0100442459C9B5E59C4F9CFDC789A220FC92"); |
| meta.add("Created", "2012-05-01T22:14:06Z"); |
| meta.add("Created_x0020_Date", "2012-05-01T22:14:06Z"); |
| meta.add("Editor", "System Account"); |
| meta.add("EncodedAbsUrl", "http://localhost:1/sites/SiteCollection/Lists/" |
| + "Custom%20List/Test%20Folder/2_.000"); |
| meta.add("FSObjType", "0"); |
| meta.add("FileDirRef", |
| "sites/SiteCollection/Lists/Custom List/Test Folder"); |
| meta.add("FileLeafRef", "2_.000"); |
| meta.add("FileRef", |
| "sites/SiteCollection/Lists/Custom List/Test Folder/2_.000"); |
| meta.add("GUID", "{2C5BEF60-18FA-42CA-B472-7B5E1EC405A5}"); |
| meta.add("ID", "2"); |
| meta.add("Last_x0020_Modified", "2012-05-01T22:14:06Z"); |
| meta.add("LinkFilename", "2_.000"); |
| meta.add("LinkFilenameNoMenu", "2_.000"); |
| meta.add("LinkTitle", "Inside Folder"); |
| meta.add("LinkTitleNoMenu", "Inside Folder"); |
| meta.add("Modified", "2012-05-04T21:24:32Z"); |
| meta.add("Order", "200.000000000000"); |
| meta.add("PermMask", "0x7fffffffffffffff"); |
| meta.add("ScopeId", "{2E29615C-59E7-493B-B08A-3642949CC069}"); |
| meta.add("SelectTitle", "2"); |
| meta.add("ServerRedirected", "0"); |
| meta.add("ServerUrl", |
| "/sites/SiteCollection/Lists/Custom List/Test Folder/2_.000"); |
| meta.add("Title", "Inside Folder"); |
| meta.add("UniqueId", "{E7156244-AC2F-4402-AA74-7A365726CD02}"); |
| meta.add("WorkflowVersion", "1"); |
| meta.add("_EditMenuTableEnd", "2"); |
| meta.add("_EditMenuTableStart", "2_.000"); |
| meta.add("_IsCurrentVersion", "1"); |
| meta.add("_Level", "1"); |
| meta.add("_ModerationStatus", "0"); |
| meta.add("_UIVersion", "512"); |
| meta.add("_UIVersionString", "1.0"); |
| meta.add("owshiddenversion", "4"); |
| goldenMetadata = meta.unmodifiableView(); |
| } |
| assertEquals(golden, responseString); |
| assertEquals(goldenMetadata, response.getMetadata()); |
| } |
| |
| @Test |
| public void testGetDocContentFolder() throws IOException { |
| final String getContentListItemResponse |
| = "<Item><Metadata>" |
| + "<scope id=\"{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}\">" |
| + "<permissions><permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></scope>" |
| + "</Metadata>" |
| + "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'" |
| + " xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'" |
| + " xmlns:rs='urn:schemas-microsoft-com:rowset'" |
| + " xmlns:z='#RowsetSchema'>" |
| + "<s:Schema id='RowsetSchema'>" |
| + "<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>" |
| + "<s:AttributeType name='ows_ContentTypeId' rs:name='Content Type ID'" |
| + " rs:number='1'>" |
| + "<s:datatype dt:type='int' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Title' rs:name='Title' rs:number='2'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationComments'" |
| + " rs:name='Approver Comments' rs:number='3'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_File_x0020_Type' rs:name='File Type'" |
| + " rs:number='4'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Additional_x0020_Info'" |
| + " rs:name='Additional Info' rs:number='5'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ContentType' rs:name='Content Type'" |
| + " rs:number='6'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ID' rs:name='ID' rs:number='7'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Modified' rs:name='Modified'" |
| + " rs:number='8'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created' rs:name='Created' rs:number='9'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Author' rs:name='Created By'" |
| + " rs:number='10'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Editor' rs:name='Modified By'" |
| + " rs:number='11'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__HasCopyDestinations'" |
| + " rs:name='Has Copy Destinations' rs:number='12'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__CopySource' rs:name='Copy Source'" |
| + " rs:number='13'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_owshiddenversion'" |
| + " rs:name='owshiddenversion' rs:number='14'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowVersion'" |
| + " rs:name='Workflow Version' rs:number='15'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersion' rs:name='UI Version'" |
| + " rs:number='16'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersionString' rs:name='Version'" |
| + " rs:number='17'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Attachments' rs:name='Attachments'" |
| + " rs:number='18'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationStatus'" |
| + " rs:name='Approval Status' rs:number='19'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitleNoMenu' rs:name='Title'" |
| + " rs:number='20'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitle' rs:name='Title'" |
| + " rs:number='21'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_SelectTitle' rs:name='Select'" |
| + " rs:number='22'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_InstanceID' rs:name='Instance ID'" |
| + " rs:number='23'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Order' rs:name='Order' rs:number='24'>" |
| + "<s:datatype dt:type='float' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_GUID' rs:name='GUID' rs:number='25'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowInstanceID'" |
| + " rs:name='Workflow Instance ID' rs:number='26'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileRef' rs:name='URL Path'" |
| + " rs:number='27'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileDirRef' rs:name='Path'" |
| + " rs:number='28'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Last_x0020_Modified' rs:name='Modified'" |
| + " rs:number='29'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created_x0020_Date' rs:name='Created'" |
| + " rs:number='30'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FSObjType' rs:name='Item Type'" |
| + " rs:number='31'>" |
| + "<s:datatype dt:type='ui1' dt:lookup='true' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_PermMask'" |
| + " rs:name='Effective Permissions Mask' rs:number='32'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileLeafRef' rs:name='Name'" |
| + " rs:number='33'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_UniqueId' rs:name='Unique Id'" |
| + " rs:number='34'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ProgId' rs:name='ProgId' rs:number='35'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ScopeId' rs:name='ScopeId'" |
| + " rs:number='36'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_HTML_x0020_File_x0020_Type'" |
| + " rs:name='HTML File Type' rs:number='37'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableStart'" |
| + " rs:name='Edit Menu Table Start' rs:number='38'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableEnd'" |
| + " rs:name='Edit Menu Table End' rs:number='39'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilenameNoMenu' rs:name='Name'" |
| + " rs:number='40'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilename' rs:name='Name'" |
| + " rs:number='41'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_DocIcon' rs:name='Type' rs:number='42'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ServerUrl' rs:name='Server Relative URL'" |
| + " rs:number='43'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_EncodedAbsUrl'" |
| + " rs:name='Encoded Absolute URL' rs:number='44'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_BaseName' rs:name='File Name'" |
| + " rs:number='45'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_MetaInfo' rs:name='Property Bag'" |
| + " rs:number='46'>" |
| + "<s:datatype dt:type='int' dt:lookup='true' dt:maxLength='2147483646'" |
| + " />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__Level' rs:name='Level' rs:number='47'>" |
| + "<s:datatype dt:type='ui1' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__IsCurrentVersion'" |
| + " rs:name='Is Current Version' rs:number='48'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "</s:ElementType></s:Schema><scopes>" |
| + "<scope id='{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}' >" |
| + "<permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "<scope id='{2e29615c-59e7-493b-b08a-3642949cc069}' >" |
| + "<permission memberid='1' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "</scopes>" |
| + "<rs:data ItemCount=\"1\">" |
| + "<z:row" |
| + " ows_ContentTypeId='0x01200077DD29735CE61148A73F540231F24430'" |
| + " ows_Title='Test Folder' ows_ContentType='Folder' ows_ID='1'" |
| + " ows_Modified='2012-05-01T22:13:47Z'" |
| + " ows_Created='2012-05-01T22:13:47Z'" |
| + " ows_Author='1073741823;#System Account'" |
| + " ows_Editor='1073741823;#System Account' ows_owshiddenversion='1'" |
| + " ows_WorkflowVersion='1' ows__UIVersion='512'" |
| + " ows__UIVersionString='1.0' ows_Attachments='0'" |
| + " ows__ModerationStatus='0' ows_LinkTitleNoMenu='Test Folder'" |
| + " ows_LinkTitle='Test Folder' ows_SelectTitle='1'" |
| + " ows_Order='100.000000000000'" |
| + " ows_GUID='{C099F4ED-6E96-4A00-B94A-EE443061EE49}'" |
| + " ows_FileRef='1;#sites/SiteCollection/Lists/Custom List/Test Folder'" |
| + " ows_FileDirRef='1;#sites/SiteCollection/Lists/Custom List'" |
| + " ows_Last_x0020_Modified='1;#2012-05-02T21:13:17Z'" |
| + " ows_Created_x0020_Date='1;#2012-05-01T22:13:47Z'" |
| + " ows_FSObjType='1;#1' ows_PermMask='0x7fffffffffffffff'" |
| + " ows_FileLeafRef='1;#Test Folder'" |
| + " ows_UniqueId='1;#{CE33B6B7-9F5E-4224-8D77-9C42E6290FE6}'" |
| + " ows_ProgId='1;#'" |
| + " ows_ScopeId='1;#{2E29615C-59E7-493B-B08A-3642949CC069}'" |
| + " ows__EditMenuTableStart='Test Folder' ows__EditMenuTableEnd='1'" |
| + " ows_LinkFilenameNoMenu='Test Folder' ows_LinkFilename='Test Folder'" |
| + " ows_ServerUrl='/sites/SiteCollection/Lists/Custom List/Test Folder'" |
| + " ows_EncodedAbsUrl='http://localhost:1/sites/SiteCollection/Lists/Cu" |
| + "stom%20List/Test%20Folder'" |
| + " ows_BaseName='Test Folder' ows_MetaInfo='1;#' ows__Level='1'" |
| + " ows__IsCurrentVersion='1' ows_ServerRedirected='0'/>" |
| + "</rs:data>" |
| + "</xml></Item>"; |
| final String getContentListResponse |
| = "<List>" |
| + "<Metadata ID=\"{6f33949a-b3ff-4b0c-ba99-93cb518ac2c0}\"" |
| + " LastModified=\"2012-05-04 21:24:32Z\" Title=\"Custom List\"" |
| + " DefaultTitle=\"True\" Description=\"\" BaseType=\"GenericList\"" |
| + " BaseTemplate=\"GenericList\"" |
| + " DefaultViewUrl=\"/sites/SiteCollection/Lists/Custom List/AllItems.a" |
| + "spx\"" |
| + " DefaultViewItemUrl=\"/sites/SiteCollection/Lists/Custom List/DispFo" |
| + "rm.aspx\"" |
| + " RootFolder=\"Lists/Custom List\" Author=\"System Account\"" |
| + " ItemCount=\"7\" ReadSecurity=\"1\" AllowAnonymousAccess=\"False\"" |
| + " AnonymousViewListItems=\"False\" AnonymousPermMask=\"0\"" |
| + " CRC=\"1334405648\" NoIndex=\"False\"" |
| + " ScopeID=\"{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}\" />" |
| + "<ACL><permissions>" |
| + "<permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></ACL>" |
| + "<Views>" |
| + "<View URL=\"Lists/Custom List/AllItems.aspx\"" |
| + " ID=\"{18b67349-78bd-49a2-ba1a-cdbc048adf0b}\" Title=\"All Items\"" |
| + " />" |
| + "</Views>" |
| + "<Schema>" |
| + "<Field Name=\"Title\" Title=\"Title\" Type=\"Text\" />" |
| + "<Field Name=\"Additional_x0020_Info\" Title=\"Additional Info\"" |
| + " Type=\"Text\" />" |
| + "<Field Name=\"ContentType\" Title=\"Content Type\" Type=\"Choice\"" |
| + " />" |
| + "<Field Name=\"ID\" Title=\"ID\" Type=\"Counter\" />" |
| + "<Field Name=\"Modified\" Title=\"Modified\" Type=\"DateTime\" />" |
| + "<Field Name=\"Created\" Title=\"Created\" Type=\"DateTime\" />" |
| + "<Field Name=\"Author\" Title=\"Created By\" Type=\"User\" />" |
| + "<Field Name=\"Editor\" Title=\"Modified By\" Type=\"User\" />" |
| + "<Field Name=\"_UIVersionString\" Title=\"Version\" Type=\"Text\" />" |
| + "<Field Name=\"Attachments\" Title=\"Attachments\"" |
| + " Type=\"Attachments\" />" |
| + "<Field Name=\"Edit\" Title=\"Edit\" Type=\"Computed\" />" |
| + "<Field Name=\"LinkTitleNoMenu\" Title=\"Title\" Type=\"Computed\" />" |
| + "<Field Name=\"LinkTitle\" Title=\"Title\" Type=\"Computed\" />" |
| + "<Field Name=\"DocIcon\" Title=\"Type\" Type=\"Computed\" />" |
| + "</Schema></List>"; |
| final String getContentFolderResponse |
| = "<Folder><Metadata>" |
| + "<scope id=\"{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}\">" |
| + "<permissions><permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></scope>" |
| + "</Metadata>" |
| + "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'" |
| + " xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'" |
| + " xmlns:rs='urn:schemas-microsoft-com:rowset'" |
| + " xmlns:z='#RowsetSchema'>" |
| + "<s:Schema id='RowsetSchema'>" |
| + "<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>" |
| + "<s:AttributeType name='ows_ContentTypeId' rs:name='Content Type ID'" |
| + " rs:number='1'>" |
| + "<s:datatype dt:type='int' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Title' rs:name='Title' rs:number='2'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationComments'" |
| + " rs:name='Approver Comments' rs:number='3'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_File_x0020_Type' rs:name='File Type'" |
| + " rs:number='4'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Additional_x0020_Info'" |
| + " rs:name='Additional Info' rs:number='5'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ContentType' rs:name='Content Type'" |
| + " rs:number='6'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ID' rs:name='ID' rs:number='7'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Modified' rs:name='Modified'" |
| + " rs:number='8'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created' rs:name='Created' rs:number='9'>" |
| + "<s:datatype dt:type='datetime' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Author' rs:name='Created By'" |
| + " rs:number='10'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Editor' rs:name='Modified By'" |
| + " rs:number='11'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__HasCopyDestinations'" |
| + " rs:name='Has Copy Destinations' rs:number='12'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__CopySource' rs:name='Copy Source'" |
| + " rs:number='13'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_owshiddenversion'" |
| + " rs:name='owshiddenversion' rs:number='14'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowVersion'" |
| + " rs:name='Workflow Version' rs:number='15'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersion' rs:name='UI Version'" |
| + " rs:number='16'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__UIVersionString' rs:name='Version'" |
| + " rs:number='17'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Attachments' rs:name='Attachments'" |
| + " rs:number='18'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__ModerationStatus'" |
| + " rs:name='Approval Status' rs:number='19'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitleNoMenu' rs:name='Title'" |
| + " rs:number='20'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkTitle' rs:name='Title'" |
| + " rs:number='21'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_SelectTitle' rs:name='Select'" |
| + " rs:number='22'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_InstanceID' rs:name='Instance ID'" |
| + " rs:number='23'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Order' rs:name='Order' rs:number='24'>" |
| + "<s:datatype dt:type='float' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_GUID' rs:name='GUID' rs:number='25'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_WorkflowInstanceID'" |
| + " rs:name='Workflow Instance ID' rs:number='26'>" |
| + "<s:datatype dt:type='string' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileRef' rs:name='URL Path'" |
| + " rs:number='27'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileDirRef' rs:name='Path'" |
| + " rs:number='28'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Last_x0020_Modified' rs:name='Modified'" |
| + " rs:number='29'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_Created_x0020_Date' rs:name='Created'" |
| + " rs:number='30'>" |
| + "<s:datatype dt:type='datetime' dt:lookup='true' dt:maxLength='8' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FSObjType' rs:name='Item Type'" |
| + " rs:number='31'>" |
| + "<s:datatype dt:type='ui1' dt:lookup='true' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_PermMask'" |
| + " rs:name='Effective Permissions Mask' rs:number='32'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_FileLeafRef' rs:name='Name'" |
| + " rs:number='33'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_UniqueId' rs:name='Unique Id'" |
| + " rs:number='34'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ProgId' rs:name='ProgId' rs:number='35'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ScopeId' rs:name='ScopeId'" |
| + " rs:number='36'>" |
| + "<s:datatype dt:type='string' dt:lookup='true' dt:maxLength='38' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_HTML_x0020_File_x0020_Type'" |
| + " rs:name='HTML File Type' rs:number='37'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableStart'" |
| + " rs:name='Edit Menu Table Start' rs:number='38'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__EditMenuTableEnd'" |
| + " rs:name='Edit Menu Table End' rs:number='39'>" |
| + "<s:datatype dt:type='i4' dt:maxLength='4' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilenameNoMenu' rs:name='Name'" |
| + " rs:number='40'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_LinkFilename' rs:name='Name'" |
| + " rs:number='41'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_DocIcon' rs:name='Type' rs:number='42'>" |
| + "<s:datatype dt:type='string' dt:maxLength='512' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_ServerUrl' rs:name='Server Relative URL'" |
| + " rs:number='43'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_EncodedAbsUrl'" |
| + " rs:name='Encoded Absolute URL' rs:number='44'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_BaseName' rs:name='File Name'" |
| + " rs:number='45'>" |
| + "<s:datatype dt:type='string' dt:maxLength='1073741823' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows_MetaInfo' rs:name='Property Bag'" |
| + " rs:number='46'>" |
| + "<s:datatype dt:type='int' dt:lookup='true' dt:maxLength='2147483646'" |
| + " />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__Level' rs:name='Level' rs:number='47'>" |
| + "<s:datatype dt:type='ui1' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "<s:AttributeType name='ows__IsCurrentVersion'" |
| + " rs:name='Is Current Version' rs:number='48'>" |
| + "<s:datatype dt:type='boolean' dt:maxLength='1' />" |
| + "</s:AttributeType>" |
| + "</s:ElementType></s:Schema><scopes>" |
| + "<scope id='{f9cb02b3-7f29-4cac-804f-ba6e14f1eb39}' >" |
| + "<permission memberid='1' mask='206292717568' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "<scope id='{2e29615c-59e7-493b-b08a-3642949cc069}' >" |
| + "<permission memberid='1' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</scope>" |
| + "</scopes>" |
| + "<rs:data ItemCount=\"2\">" |
| + "<z:row" |
| + " ows_ContentTypeId='0x0100442459C9B5E59C4F9CFDC789A220FC92'" |
| + " ows_Title='Inside Folder' ows_ContentType='Item' ows_ID='2'" |
| + " ows_Modified='2012-05-04T21:24:32Z'" |
| + " ows_Created='2012-05-01T22:14:06Z'" |
| + " ows_Author='1073741823;#System Account'" |
| + " ows_Editor='1073741823;#System Account' ows_owshiddenversion='4'" |
| + " ows_WorkflowVersion='1' ows__UIVersion='512'" |
| + " ows__UIVersionString='1.0' ows_Attachments='1'" |
| + " ows__ModerationStatus='0' ows_LinkTitleNoMenu='Inside Folder'" |
| + " ows_LinkTitle='Inside Folder' ows_SelectTitle='2'" |
| + " ows_Order='200.000000000000'" |
| + " ows_GUID='{2C5BEF60-18FA-42CA-B472-7B5E1EC405A5}'" |
| + " ows_FileRef='2;#sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "2_.000'" |
| + " ows_FileDirRef='2;#sites/SiteCollection/Lists/Custom List/Test Fold" |
| + "er'" |
| + " ows_Last_x0020_Modified='2;#2012-05-01T22:14:06Z'" |
| + " ows_Created_x0020_Date='2;#2012-05-01T22:14:06Z'" |
| + " ows_FSObjType='2;#0' ows_PermMask='0x7fffffffffffffff'" |
| + " ows_FileLeafRef='2;#2_.000'" |
| + " ows_UniqueId='2;#{E7156244-AC2F-4402-AA74-7A365726CD02}'" |
| + " ows_ProgId='2;#'" |
| + " ows_ScopeId='2;#{2E29615C-59E7-493B-B08A-3642949CC069}'" |
| + " ows__EditMenuTableStart='2_.000' ows__EditMenuTableEnd='2'" |
| + " ows_LinkFilenameNoMenu='2_.000' ows_LinkFilename='2_.000'" |
| + " ows_ServerUrl='/sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "2_.000'" |
| + " ows_EncodedAbsUrl='http://localhost:1/sites/SiteCollection/Lists/Cu" |
| + "stom%20List/Test%20Folder/2_.000'" |
| + " ows_BaseName='2_' ows_MetaInfo='2;#' ows__Level='1'" |
| + " ows__IsCurrentVersion='1' ows_ServerRedirected='0'/>" |
| + "<z:row" |
| + " ows_ContentTypeId='0x01200077DD29735CE61148A73F540231F24430'" |
| + " ows_Title='testing' ows_ContentType='Folder' ows_ID='5'" |
| + " ows_Modified='2012-05-02T21:13:16Z'" |
| + " ows_Created='2012-05-02T21:13:16Z'" |
| + " ows_Author='1073741823;#System Account'" |
| + " ows_Editor='1073741823;#System Account' ows_owshiddenversion='1'" |
| + " ows_WorkflowVersion='1' ows__UIVersion='512'" |
| + " ows__UIVersionString='1.0' ows_Attachments='0'" |
| + " ows__ModerationStatus='0' ows_LinkTitleNoMenu='testing'" |
| + " ows_LinkTitle='testing' ows_SelectTitle='5'" |
| + " ows_Order='500.000000000000'" |
| + " ows_GUID='{D803788D-7A3A-4222-AC66-BFD261412A28}'" |
| + " ows_FileRef='5;#sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "testing'" |
| + " ows_FileDirRef='5;#sites/SiteCollection/Lists/Custom List/Test Fold" |
| + "er'" |
| + " ows_Last_x0020_Modified='5;#2012-05-04T17:49:23Z'" |
| + " ows_Created_x0020_Date='5;#2012-05-02T21:13:17Z'" |
| + " ows_FSObjType='5;#1' ows_PermMask='0x7fffffffffffffff'" |
| + " ows_FileLeafRef='5;#testing'" |
| + " ows_UniqueId='5;#{C2590C9A-C4E0-4411-BBB2-03ABC60AB073}'" |
| + " ows_ProgId='5;#'" |
| + " ows_ScopeId='5;#{2E29615C-59E7-493B-B08A-3642949CC069}'" |
| + " ows__EditMenuTableStart='testing' ows__EditMenuTableEnd='5'" |
| + " ows_LinkFilenameNoMenu='testing' ows_LinkFilename='testing'" |
| + " ows_ServerUrl='/sites/SiteCollection/Lists/Custom List/Test Folder/" |
| + "testing'" |
| + " ows_EncodedAbsUrl='http://localhost:1/sites/SiteCollection/Lists/Cu" |
| + "stom%20List/Test%20Folder/testing'" |
| + " ows_BaseName='testing' ows_MetaInfo='5;#' ows__Level='1'" |
| + " ows__IsCurrentVersion='1' ows_ServerRedirected='0'/>" |
| + "</rs:data>" |
| + "</xml></Folder>"; |
| SiteDataStub siteDataStub = new UnsupportedSiteDataStub("") { |
| @Override |
| public SiteDataStub.GetURLSegmentsResponse getURLSegments( |
| SiteDataStub.GetURLSegments request) { |
| assertEquals("http://localhost:1/sites/SiteCollection/Lists/Custom List" |
| + "/Test Folder", request.getStrURL()); |
| SiteDataStub.GetURLSegmentsResponse response |
| = new SiteDataStub.GetURLSegmentsResponse(); |
| response.setGetURLSegmentsResult(true); |
| response.setStrListID("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}"); |
| response.setStrItemID("1"); |
| return response; |
| } |
| |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) { |
| if (SiteDataStub.ObjectType.ListItem.equals(request.getObjectType())) { |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}", |
| request.getObjectId()); |
| assertEquals("1", request.getItemId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentListItemResponse); |
| return response; |
| } else if (SiteDataStub.ObjectType.List |
| .equals(request.getObjectType())) { |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}", |
| request.getObjectId()); |
| assertEquals(null, request.getItemId()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentListResponse); |
| return response; |
| } else if (SiteDataStub.ObjectType.Folder |
| .equals(request.getObjectType())) { |
| assertEquals(false, request.getSecurityOnly()); |
| assertEquals("{6F33949A-B3FF-4B0C-BA99-93CB518AC2C0}", |
| request.getObjectId()); |
| assertEquals(null, request.getItemId()); |
| assertEquals("/Test Folder", request.getFolderUrl()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentFolderResponse); |
| return response; |
| } else { |
| fail("Unexpected object type: " + request.getObjectType()); |
| throw new AssertionError(); |
| } |
| } |
| }; |
| SiteDataStubFactory siteDataStubFactory |
| = new SingleSiteDataStubFactory(siteDataStub); |
| adaptor = new SharePointAdaptor(siteDataStubFactory); |
| adaptor.init(new MockAdaptorContext(config, null)); |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| GetContentsRequest request = new GetContentsRequest( |
| new DocId("http://localhost:1/sites/SiteCollection/Lists/Custom List/" |
| + "Test Folder")); |
| GetContentsResponse response = new GetContentsResponse(baos); |
| adaptor.new SiteDataClient("http://localhost:1/sites/SiteCollection", |
| siteDataStubFactory).getDocContent(request, response); |
| String responseString = new String(baos.toByteArray(), charset); |
| final String golden |
| = "<!DOCTYPE html>\n" |
| + "<html><head><title>Folder /Test Folder</title></head>" |
| + "<body><h1>Folder /Test Folder</h1>" |
| + "<p>List items</p>" |
| + "<ul>" |
| + "<li><a href=\"http://localhost/http://localhost:1/sites/SiteCollecti" |
| + "on/Lists/Custom%20List/Test%20Folder/2_.000\">Inside Folder</a></li>" |
| + "<li><a href=\"http://localhost/http://localhost:1/sites/SiteCollecti" |
| + "on/Lists/Custom%20List/Test%20Folder/testing\">testing</a></li>" |
| + "</ul></body></html>"; |
| final Metadata goldenMetadata; |
| { |
| Metadata meta = new Metadata(); |
| meta.add("Attachments", "0"); |
| meta.add("Author", "System Account"); |
| meta.add("BaseName", "Test Folder"); |
| meta.add("ContentType", "Folder"); |
| meta.add("ContentTypeId", "0x01200077DD29735CE61148A73F540231F24430"); |
| meta.add("Created", "2012-05-01T22:13:47Z"); |
| meta.add("Created_x0020_Date", "2012-05-01T22:13:47Z"); |
| meta.add("Editor", "System Account"); |
| meta.add("EncodedAbsUrl", "http://localhost:1/sites/SiteCollection/Lists/" |
| + "Custom%20List/Test%20Folder"); |
| meta.add("FSObjType", "1"); |
| meta.add("FileDirRef", "sites/SiteCollection/Lists/Custom List"); |
| meta.add("FileLeafRef", "Test Folder"); |
| meta.add("FileRef", "sites/SiteCollection/Lists/Custom List/Test Folder"); |
| meta.add("GUID", "{C099F4ED-6E96-4A00-B94A-EE443061EE49}"); |
| meta.add("ID", "1"); |
| meta.add("Last_x0020_Modified", "2012-05-02T21:13:17Z"); |
| meta.add("LinkFilename", "Test Folder"); |
| meta.add("LinkFilenameNoMenu", "Test Folder"); |
| meta.add("LinkTitle", "Test Folder"); |
| meta.add("LinkTitleNoMenu", "Test Folder"); |
| meta.add("Modified", "2012-05-01T22:13:47Z"); |
| meta.add("Order", "100.000000000000"); |
| meta.add("PermMask", "0x7fffffffffffffff"); |
| meta.add("ScopeId", "{2E29615C-59E7-493B-B08A-3642949CC069}"); |
| meta.add("SelectTitle", "1"); |
| meta.add("ServerRedirected", "0"); |
| meta.add("ServerUrl", |
| "/sites/SiteCollection/Lists/Custom List/Test Folder"); |
| meta.add("Title", "Test Folder"); |
| meta.add("UniqueId", "{CE33B6B7-9F5E-4224-8D77-9C42E6290FE6}"); |
| meta.add("WorkflowVersion", "1"); |
| meta.add("_EditMenuTableEnd", "1"); |
| meta.add("_EditMenuTableStart", "Test Folder"); |
| meta.add("_IsCurrentVersion", "1"); |
| meta.add("_Level", "1"); |
| meta.add("_ModerationStatus", "0"); |
| meta.add("_UIVersion", "512"); |
| meta.add("_UIVersionString", "1.0"); |
| meta.add("owshiddenversion", "1"); |
| goldenMetadata = meta.unmodifiableView(); |
| } |
| assertEquals(golden, responseString); |
| assertEquals(goldenMetadata, response.getMetadata()); |
| } |
| |
| @Test |
| public void testGetDocIds() throws IOException, InterruptedException { |
| adaptor = new SharePointAdaptor(new UnsupportedSiteDataStubFactory()); |
| AccumulatingDocIdPusher pusher = new AccumulatingDocIdPusher(); |
| adaptor.init(new MockAdaptorContext(config, pusher)); |
| assertEquals(0, pusher.getRecords().size()); |
| adaptor.getDocIds(pusher); |
| assertEquals(1, pusher.getRecords().size()); |
| assertEquals(new DocIdPusher.Record.Builder(new DocId("")).build(), |
| pusher.getRecords().get(0)); |
| } |
| |
| @Test |
| public void testModifiedGetDocIds() throws IOException, InterruptedException { |
| final String getContentVirtualServer |
| = "<VirtualServer>" |
| + "<Metadata URL=\"http://localhost:1/\" />" |
| + "<ContentDatabases>" |
| + "<ContentDatabase ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "<ContentDatabase ID=\"{3ac1e3b3-2326-7341-4afe-16751eafbc51}\" />" |
| + "</ContentDatabases>" |
| + "<Policies AnonymousGrantMask=\"0\" AnonymousDenyMask=\"0\">" |
| + "<PolicyUser LoginName=\"NT AUTHORITY\\LOCAL SERVICE\"" |
| + " Sid=\"S-1-5-19\" GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\spuser1\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\Administrator\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " GrantMask=\"9223372036854775807\" DenyMask=\"0\"/>" |
| + "</Policies></VirtualServer>"; |
| final String getContentVirtualServer2 |
| = "<VirtualServer>" |
| + "<Metadata URL=\"http://localhost:1/\" />" |
| + "<ContentDatabases>" |
| + "<ContentDatabase ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "</ContentDatabases>" |
| + "<Policies AnonymousGrantMask=\"0\" AnonymousDenyMask=\"0\">" |
| + "<PolicyUser LoginName=\"NT AUTHORITY\\LOCAL SERVICE\"" |
| + " Sid=\"S-1-5-19\" GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\spuser1\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " GrantMask=\"4611686224789442657\" DenyMask=\"0\"/>" |
| + "<PolicyUser LoginName=\"GDC-PSL\\Administrator\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " GrantMask=\"9223372036854775807\" DenyMask=\"0\"/>" |
| + "</Policies></VirtualServer>"; |
| final String getContentContentDatabase4fb |
| = "<ContentDatabase>" |
| + "<Metadata ChangeId=\"1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727" |
| + "056594000000;603\"" |
| + " ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "</ContentDatabase>"; |
| final String getContentContentDatabase3ac |
| = "<ContentDatabase>" |
| + "<Metadata ChangeId=\"1;0;3ac1e3b3-2326-7341-4afe-16751eafbc51;634882" |
| + "028739000000;224\"" |
| + " ID=\"{3ac1e3b3-2326-7341-4afe-16751eafbc51}\" />" |
| + "</ContentDatabase>"; |
| final String getChangesContentDatabase4fb |
| = "<SPContentDatabase Change=\"Unchanged\" ItemCount=\"0\">" |
| + "<ContentDatabase>" |
| + "<Metadata ChangeId=\"1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727" |
| + "056594000000;603\"" |
| + " ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "</ContentDatabase></SPContentDatabase>"; |
| final AtomicLong atomicState = new AtomicLong(); |
| final AtomicLong atomicNumberGetChangesCalls = new AtomicLong(0); |
| SiteDataStub siteDataStub = new UnsupportedSiteDataStub("") { |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) throws RemoteException { |
| long state = atomicState.get(); |
| if (state == 0) { |
| throw new RemoteException("fake IO error"); |
| } else if (state == 1) { |
| if (SiteDataStub.ObjectType.VirtualServer |
| .equals(request.getObjectType())) { |
| assertEquals(true, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentVirtualServer); |
| return response; |
| } else if (SiteDataStub.ObjectType.ContentDatabase |
| .equals(request.getObjectType())) { |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| if ("{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}" |
| .equals(request.getObjectId())) { |
| response.setGetContentResult(getContentContentDatabase4fb); |
| } else if ("{3ac1e3b3-2326-7341-4afe-16751eafbc51}" |
| .equals(request.getObjectId())) { |
| response.setGetContentResult(getContentContentDatabase3ac); |
| } else { |
| throw new AssertionError(); |
| } |
| assertEquals(false, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| return response; |
| } else { |
| throw new AssertionError(); |
| } |
| } else if (state == 2) { |
| assertEquals(SiteDataStub.ObjectType.VirtualServer, |
| request.getObjectType()); |
| assertEquals(true, request.getRetrieveChildItems()); |
| assertEquals(false, request.getSecurityOnly()); |
| SiteDataStub.GetContentResponse response |
| = new SiteDataStub.GetContentResponse(); |
| response.setGetContentResult(getContentVirtualServer2); |
| return response; |
| } else { |
| throw new AssertionError(); |
| } |
| } |
| |
| @Override |
| public SiteDataStub.GetChangesResponse getChanges( |
| SiteDataStub.GetChanges request) { |
| long state = atomicState.get(); |
| if (state == 0) { |
| throw new AssertionError(); |
| } else if (state == 2) { |
| atomicNumberGetChangesCalls.getAndIncrement(); |
| assertEquals(SiteDataStub.ObjectType.ContentDatabase, |
| request.getObjectType()); |
| assertEquals("{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}", |
| request.getContentDatabaseId()); |
| assertEquals( |
| "1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727056594000000;603", |
| request.getLastChangeId()); |
| SiteDataStub.GetChangesResponse response |
| = new SiteDataStub.GetChangesResponse(); |
| response.setLastChangeId("1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;63" |
| + "4727056594000000;603"); |
| response.setCurrentChangeId(response.getLastChangeId()); |
| response.setGetChangesResult(getChangesContentDatabase4fb); |
| return response; |
| } else { |
| throw new AssertionError(); |
| } |
| } |
| }; |
| SiteDataStubFactory siteDataStubFactory |
| = new SingleSiteDataStubFactory(siteDataStub); |
| adaptor = new SharePointAdaptor(siteDataStubFactory); |
| AccumulatingDocIdPusher pusher = new AccumulatingDocIdPusher(); |
| adaptor.init(new MockAdaptorContext(config, pusher)); |
| |
| // Error getting content databases, so content databases remains unchanged |
| // (empty). |
| atomicState.set(0); |
| adaptor.getModifiedDocIds(pusher); |
| assertEquals(0, pusher.getRecords().size()); |
| assertEquals(0, atomicNumberGetChangesCalls.get()); |
| |
| // Find new content databases and get their current change id. |
| atomicState.set(1); |
| adaptor.getModifiedDocIds(pusher); |
| assertEquals(1, pusher.getRecords().size()); |
| assertEquals(new DocIdPusher.Record.Builder(new DocId("")) |
| .setCrawlImmediately(true).build(), |
| pusher.getRecords().get(0)); |
| assertEquals(0, atomicNumberGetChangesCalls.get()); |
| pusher.reset(); |
| |
| // Discover one content database disappeared; get changes for other content |
| // database. |
| atomicState.set(2); |
| adaptor.getModifiedDocIds(pusher); |
| assertEquals(1, pusher.getRecords().size()); |
| assertEquals(new DocIdPusher.Record.Builder(new DocId("")) |
| .setCrawlImmediately(true).build(), |
| pusher.getRecords().get(0)); |
| assertEquals(1, atomicNumberGetChangesCalls.get()); |
| } |
| |
| @Test |
| public void testModifiedGetDocIdsClient() throws IOException, |
| InterruptedException { |
| final String getChangesContentDatabase |
| = "<SPContentDatabase Change=\"Unchanged\" ItemCount=\"1\">" |
| + "<ContentDatabase>" |
| + "<Metadata ChangeId=\"1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727" |
| + "056594000000;603\"" |
| + " ID=\"{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}\" />" |
| + "</ContentDatabase>" |
| + "<SPSite Change=\"Unchanged\" ItemCount=\"1\">" |
| + "<Messages><Message>1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;63472702" |
| + "8976500000;600 Microsoft.SharePoint.SPChangeItem Add Done </Message>" |
| + "</Messages>" |
| + "<Site>" |
| + "<Metadata URL=\"http://localhost:1\"" |
| + " ID=\"{bb3bb2dd-6ea7-471b-a361-6fb67988755c}\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\" PortalURL=\"\"" |
| + " UserProfileGUID=\"\"" |
| + " RootWebId=\"{b2ea1067-3a54-4ab7-a459-c8ec864b97eb}\"" |
| + " ChangeId=\"1;0;4fb7dea1-2912-4927-9eda-1ea2f0977cf8;634727056594000" |
| + "000;603\" />" |
| + "<Groups><Group><Group ID=\"3\" Name=\"chinese1 Owners\"" |
| + " Description=\"Use this group to give people full control permission" |
| + "s to the SharePoint site: chinese1\" OwnerID=\"3\"" |
| + " OwnerIsUser=\"False\" />" |
| + "<Users>" |
| + "<User ID=\"1\" Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " Name=\"GDC-PSL\\administrator\"" |
| + " LoginName=\"GDC-PSL\\administrator\" Email=\"\" Notes=\"\"" |
| + " IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "<User ID=\"2\" Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " Name=\"spuser1\" LoginName=\"GDC-PSL\\spuser1\" Email=\"\"" |
| + " Notes=\"\" IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "</Users></Group>" |
| + "<Group><Group ID=\"4\" Name=\"chinese1 Visitors\"" |
| + " Description=\"Use this group to give people read permissions to the" |
| + " SharePoint site: chinese1\"" |
| + " OwnerID=\"3\" OwnerIsUser=\"False\" />" |
| + "<Users /></Group>" |
| + "<Group><Group ID=\"5\" Name=\"chinese1 Members\"" |
| + " Description=\"Use this group to give people contribute permissions " |
| + "to the SharePoint site: chinese1\"" |
| + " OwnerID=\"3\" OwnerIsUser=\"False\" />" |
| + "<Users /></Group></Groups>" |
| + "</Site>" |
| + "<SPWeb Change=\"Unchanged\" ItemCount=\"1\">" |
| + "<Web><Metadata URL=\"http://localhost:1\"" |
| + " LastModified=\"2012-05-15 19:07:39Z\"" |
| + " Created=\"2011-10-14 18:59:25Z\"" |
| + " ID=\"{b2ea1067-3a54-4ab7-a459-c8ec864b97eb}\" Title=\"chinese1\"" |
| + " Description=\"\" Author=\"GDC-PSL\\administrator\"" |
| + " Language=\"1033\" CRC=\"558566148\" NoIndex=\"False\"" |
| + " DefaultHomePage=\"default.aspx\" ExternalSecurity=\"False\"" |
| + " ScopeID=\"{01abac8c-66c8-4fed-829c-8dd02bbf40dd}\"" |
| + " AllowAnonymousAccess=\"False\" AnonymousViewListItems=\"False\"" |
| + " AnonymousPermMask=\"0\" />" |
| + "<Users><User ID=\"1\"" |
| + " Sid=\"S-1-5-21-736914693-3137354690-2813686979-500\"" |
| + " Name=\"GDC-PSL\\administrator\"" |
| + " LoginName=\"GDC-PSL\\administrator\" Email=\"\" Notes=\"\"" |
| + " IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "<User ID=\"2\" Sid=\"S-1-5-21-736914693-3137354690-2813686979-1130\"" |
| + " Name=\"spuser1\" LoginName=\"GDC-PSL\\spuser1\" Email=\"\"" |
| + " Notes=\"\" IsSiteAdmin=\"True\" IsDomainGroup=\"False\" />" |
| + "</Users>" |
| + "<ACL><permissions>" |
| + "<permission memberid='2' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></ACL>" |
| + "<Webs /><Lists />" |
| + "</Web>" |
| + "<SPList Change=\"Unchanged\" ItemCount=\"1\">" |
| + "<List><Metadata ID=\"{133fcb96-7e9b-46c9-b5f3-09770a35ad8a}\"" |
| + " LastModified=\"2012-05-15 18:21:38Z\" Title=\"Announcements\"" |
| + " DefaultTitle=\"True\"" |
| + " Description=\"Use the Announcements list to post messages on the ho" |
| + "me page of your site.\"" |
| + " BaseType=\"GenericList\" BaseTemplate=\"Announcements\"" |
| + " DefaultViewUrl=\"/Lists/Announcements/AllItems.aspx\"" |
| + " DefaultViewItemUrl=\"/Lists/Announcements/DispForm.aspx\"" |
| + " RootFolder=\"Lists/Announcements\" Author=\"System Account\"" |
| + " ItemCount=\"2\" ReadSecurity=\"1\" AllowAnonymousAccess=\"False\"" |
| + " AnonymousViewListItems=\"False\" AnonymousPermMask=\"0\"" |
| + " CRC=\"751515778\" NoIndex=\"False\"" |
| + " ScopeID=\"{01abac8c-66c8-4fed-829c-8dd02bbf40dd}\" />" |
| + "<ACL><permissions>" |
| + "<permission memberid='2' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></ACL>" |
| + "<Views><View URL=\"Lists/Announcements/AllItems.aspx\"" |
| + " ID=\"{54f41f88-ddf6-404c-bdf9-a104eabcd1a9}\" Title=\"All items\"" |
| + " /></Views>" |
| + "<Schema>" |
| + "<Field Name=\"ID\" Title=\"ID\" Type=\"Counter\" />" |
| + "<Field Name=\"ContentType\" Title=\"Content Type\" Type=\"Text\" />" |
| + "<Field Name=\"Title\" Title=\"Title\" Type=\"Text\" />" |
| + "<Field Name=\"Modified\" Title=\"Modified\" Type=\"DateTime\" />" |
| + "<Field Name=\"Created\" Title=\"Created\" Type=\"DateTime\" />" |
| + "<Field Name=\"Author\" Title=\"Created By\" Type=\"User\" />" |
| + "<Field Name=\"Editor\" Title=\"Modified By\" Type=\"User\" />" |
| + "<Field Name=\"_UIVersionString\" Title=\"Version\" Type=\"Text\" />" |
| + "<Field Name=\"Attachments\" Title=\"Attachments\"" |
| + " Type=\"Attachments\" />" |
| + "<Field Name=\"Edit\" Title=\"Edit\" Type=\"Computed\" />" |
| + "<Field Name=\"LinkTitleNoMenu\" Title=\"Title\" Type=\"Computed\" />" |
| + "<Field Name=\"LinkTitle\" Title=\"Title\" Type=\"Computed\" />" |
| + "<Field Name=\"DocIcon\" Title=\"Type\" Type=\"Computed\" />" |
| + "<Field Name=\"Body\" Title=\"Body\" Type=\"Note\" />" |
| + "<Field Name=\"Expires\" Title=\"Expires\" Type=\"DateTime\" />" |
| + "</Schema> </List>" |
| + "<SPListItem Change=\"Add\" ItemCount=\"0\" UpdateSecurity=\"False\"" |
| + " Id=\"{5085be94-b5c1-45c8-a047-d0f03344fe31}\"" |
| + " ParentId=\"{133fcb96-7e9b-46c9-b5f3-09770a35ad8a}_\"" |
| + " InternalUrl=\"/siteurl=/siteid={bb3bb2dd-6ea7-471b-a361-6fb67988755" |
| + "c}/weburl=/webid={b2ea1067-3a54-4ab7-a459-c8ec864b97eb}/listid={13" |
| + "3fcb96-7e9b-46c9-b5f3-09770a35ad8a}/folderurl=/itemid=2\"" |
| + " DisplayUrl=\"/Lists/Announcements/DispForm.aspx?ID=2\"" |
| + " ServerUrl=\"http://localhost:1\" CRC=\"0\" Url=\"2_.000\">" |
| + "<ListItem>" |
| + "<z:row xmlns:z='#RowsetSchema' ows_ID='2'" |
| + " ows_ContentTypeId='0x010400FDF586FAF309684984C89E7FB272808F'" |
| + " ows_ContentType='Announcement' ows_Title='Test Announcement'" |
| + " ows_Modified='2012-05-15T18:21:38Z'" |
| + " ows_Created='2012-05-15T18:21:38Z'" |
| + " ows_Author='1073741823;#System Account'" |
| + " ows_Editor='1073741823;#System Account' ows_owshiddenversion='1'" |
| + " ows_WorkflowVersion='1' ows__UIVersion='512'" |
| + " ows__UIVersionString='1.0' ows_Attachments='0'" |
| + " ows__ModerationStatus='0' ows_LinkTitleNoMenu='Test Announcement'" |
| + " ows_LinkTitle='Test Announcement' ows_SelectTitle='2'" |
| + " ows_Order='200.000000000000'" |
| + " ows_GUID='{986A1401-9DE7-4CD5-8CC0-9BBC64D5F146}'" |
| + " ows_FileRef='2;#Lists/Announcements/2_.000'" |
| + " ows_FileDirRef='2;#Lists/Announcements'" |
| + " ows_Last_x0020_Modified='2;#2012-05-15T18:21:38Z'" |
| + " ows_Created_x0020_Date='2;#2012-05-15T18:21:38Z'" |
| + " ows_FSObjType='2;#0' ows_PermMask='0x7fffffffffffffff'" |
| + " ows_FileLeafRef='2;#2_.000'" |
| + " ows_UniqueId='2;#{5085BE94-B5C1-45C8-A047-D0F03344FE31}'" |
| + " ows_ProgId='2;#'" |
| + " ows_ScopeId='2;#{01ABAC8C-66C8-4FED-829C-8DD02BBF40DD}'" |
| + " ows__EditMenuTableStart='2_.000' ows__EditMenuTableEnd='2'" |
| + " ows_LinkFilenameNoMenu='2_.000' ows_LinkFilename='2_.000'" |
| + " ows_ServerUrl='/Lists/Announcements/2_.000'" |
| + " ows_EncodedAbsUrl='http://localhost:1/Lists/Announcements/2_.000'" |
| + " ows_BaseName='2_' ows_MetaInfo='2;#' ows__Level='1'" |
| + " ows__IsCurrentVersion='1'" |
| + " ows_Body='This is the body of the announcement.'" |
| + " ows_ServerRedirected='0'/>" |
| + "<permissions>" |
| + "<permission memberid='2' mask='9223372036854775807' />" |
| + "<permission memberid='3' mask='9223372036854775807' />" |
| + "<permission memberid='4' mask='756052856929' />" |
| + "<permission memberid='5' mask='1856436900591' />" |
| + "</permissions></ListItem></SPListItem>" |
| + "</SPList>" |
| + "</SPWeb>" |
| + "</SPSite>" |
| + "</SPContentDatabase>"; |
| SiteDataStubFactory siteDataStubFactory |
| = new SingleSiteDataStubFactory(new UnsupportedSiteDataStub("")); |
| adaptor = new SharePointAdaptor(siteDataStubFactory); |
| AccumulatingDocIdPusher pusher = new AccumulatingDocIdPusher(); |
| adaptor.init(new MockAdaptorContext(config, pusher)); |
| SharePointAdaptor.SiteDataClient client = adaptor.new SiteDataClient( |
| "http://localhost:1/sites/SiteCollection", siteDataStubFactory); |
| |
| SiteDataStub.SPContentDatabase result |
| = parseChanges(client, getChangesContentDatabase); |
| |
| client.getModifiedDocIds(result, pusher); |
| assertEquals(1, pusher.getRecords().size()); |
| assertEquals(new DocIdPusher.Record.Builder(new DocId( |
| "http://localhost:1/Lists/Announcements/2_.000")) |
| .setCrawlImmediately(true).build(), pusher.getRecords().get(0)); |
| } |
| |
| private SiteDataStub.SPContentDatabase parseChanges( |
| SharePointAdaptor.SiteDataClient client, String xml) { |
| String xmlns = "http://schemas.microsoft.com/sharepoint/soap/"; |
| xml = xml.replace("<SPContentDatabase ", |
| "<SPContentDatabase xmlns='" + xmlns + "' "); |
| try { |
| return SiteDataStub.SPContentDatabase.Factory.parse( |
| client.createXmlStreamReader(xml)); |
| } catch (Exception ex) { |
| throw new RuntimeException(ex); |
| } |
| } |
| |
| private static class UnsupportedSiteDataStubFactory |
| implements SiteDataStubFactory { |
| @Override |
| public SiteDataStub newSiteDataStub(String endpoint) { |
| throw new UnsupportedOperationException(); |
| } |
| } |
| |
| private static class SingleSiteDataStubFactory |
| implements SiteDataStubFactory { |
| private final SiteDataStub siteDataStub; |
| |
| public SingleSiteDataStubFactory(SiteDataStub siteDataStub) { |
| this.siteDataStub = siteDataStub; |
| } |
| |
| @Override |
| public SiteDataStub newSiteDataStub(String endpoint) throws AxisFault { |
| return siteDataStub; |
| } |
| } |
| |
| /** |
| * Throw UnsupportedOperationException for all calls that would issue a SOAP |
| * request. |
| */ |
| private static class UnsupportedSiteDataStub extends SiteDataStub { |
| public UnsupportedSiteDataStub(String endpoint) throws AxisFault { |
| super(endpoint); |
| } |
| |
| @Override |
| public SiteDataStub.GetListItemsResponse getListItems( |
| SiteDataStub.GetListItems request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetWebResponse getWeb(SiteDataStub.GetWeb request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.EnumerateFolderResponse enumerateFolder( |
| SiteDataStub.EnumerateFolder request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetContentResponse getContent( |
| SiteDataStub.GetContent request) throws RemoteException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetSiteResponse getSite(SiteDataStub.GetSite request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetListCollectionResponse getListCollection( |
| SiteDataStub.GetListCollection request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetSiteAndWebResponse getSiteAndWeb( |
| SiteDataStub.GetSiteAndWeb request) throws RemoteException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetChangesExResponse getChangesEx( |
| SiteDataStub.GetChangesEx request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetSiteUrlResponse getSiteUrl( |
| SiteDataStub.GetSiteUrl request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetAttachmentsResponse getAttachments( |
| SiteDataStub.GetAttachments request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetListResponse getList(SiteDataStub.GetList request) { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetChangesResponse getChanges( |
| SiteDataStub.GetChanges request) throws RemoteException { |
| throw new UnsupportedOperationException(); |
| } |
| |
| @Override |
| public SiteDataStub.GetURLSegmentsResponse getURLSegments( |
| SiteDataStub.GetURLSegments request) throws RemoteException { |
| throw new UnsupportedOperationException(); |
| } |
| } |
| } |