com.google.enterprise.connector.sharepoint.spiimpl.SPDocumentTest.java Source code

Java tutorial

Introduction

Here is the source code for com.google.enterprise.connector.sharepoint.spiimpl.SPDocumentTest.java

Source

// Copyright 2007 Google Inc.
//
// 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.connector.sharepoint.spiimpl;

import com.google.enterprise.connector.sharepoint.TestConfiguration;
import com.google.enterprise.connector.sharepoint.client.SPConstants;
import com.google.enterprise.connector.sharepoint.client.SharepointClientContext;
import com.google.enterprise.connector.sharepoint.client.SPConstants.FeedType;
import com.google.enterprise.connector.sharepoint.client.SPConstants.SPType;
import com.google.enterprise.connector.spi.Property;
import com.google.enterprise.connector.spi.RepositoryException;
import com.google.enterprise.connector.spi.SpiConstants;

import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.GetMethod;

import com.sun.jndi.toolkit.url.UrlUtil;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;

import junit.framework.TestCase;

public class SPDocumentTest extends TestCase {

    SPDocument doc;

    protected void setUp() throws Exception {
        super.setUp();
        SharepointClientContext spContext = TestConfiguration.initContext();
        List<SPDocument> allDocs = TestConfiguration.initState(spContext)
                .lookupList(TestConfiguration.Site1_URL, TestConfiguration.Site1_List1_GUID).getCrawlQueue();
        assertTrue(allDocs.size() > 0);
        this.doc = allDocs.get(0);
        assertNotNull(this.doc);
        this.doc.setSharepointClientContext(spContext);
        this.doc.setContentDwnldURL(doc.getUrl());

        // TODO(jlacey): Replace this use of UrlUtil, which generates a
        // warning on Java 7 when not using a bootclasspath. Also, this
        // code is either pointless or it's a smoke test that belongs in a
        // test method.
        String str = UrlUtil.encode(doc.getUrl(), "UTF-8");
        String charset = new GetMethod(str).getParams().getUriCharset();
        URI uri = new URI(doc.getUrl(), true, charset);
    }

    public void testCompare() {
        final SPDocument tmpdoc1 = new SPDocument("1", "HTTP://MYCOMP.COM", Calendar.getInstance(),
                SPConstants.NO_AUTHOR, SPConstants.NO_OBJTYPE, SPConstants.PARENT_WEB_TITLE, FeedType.CONTENT_FEED,
                SPType.SP2007);
        final SPDocument tmpdoc2 = new SPDocument("2", "HTTP://MYCOMP.COM", Calendar.getInstance(),
                SPConstants.NO_AUTHOR, SPConstants.NO_OBJTYPE, SPConstants.PARENT_WEB_TITLE, FeedType.CONTENT_FEED,
                SPType.SP2007);
        final List<SPDocument> testSet = new ArrayList<SPDocument>();
        testSet.add(tmpdoc1);
        testSet.add(tmpdoc2);
        Collections.sort(testSet);
        System.out.println(testSet);
    }

    public final void testFindProperty() throws Exception {
        final Property prop = this.doc.findProperty(SpiConstants.PROPNAME_DOCID);
        assertNotNull(prop);
    }

    public final void testDownloadContents() throws Exception {
        final SPDocument.SPContent content = this.doc.downloadContents();
        assertEquals(content.getStatus(), SPConstants.CONNECTIVITY_SUCCESS);
    }

    public final void testDownloadContentsForMsgFile() throws Exception {
        this.doc.setContentDwnldURL(TestConfiguration.Site1_List_Item_MSG_File_URL);
        final SPDocument.SPContent content = this.doc.downloadContents();
        assertEquals(content.getStatus(), SPConstants.CONNECTIVITY_SUCCESS);
        assertEquals("application/vnd.ms-outlook", content.getContentType());
    }

    public final void testStatusCodeForInvalidUrl() throws Exception {
        // A temporary test document is needed since we need to use a content
        // feed when retrieving the property HTTP_STATUS_CODE. If we used a
        // metadata-and-url, SPDocument will return a null for HTTP_STATUS_CODE.
        SPDocument testDoc = new SPDocument(doc.getDocId(), doc.getDisplayUrl(), doc.getLastMod(), doc.getAuthor(),
                doc.getObjType(), doc.getParentWebTitle(), FeedType.CONTENT_FEED, doc.getSPType());
        testDoc.setSharepointClientContext(doc.getSharepointClientContext());
        testDoc.setContentDwnldURL(TestConfiguration.Site1_List_Item_MSG_File_URL + ".invalid.txt");
        assertNull(testDoc.getContent());

        final Property prop = testDoc.findProperty(SPConstants.HTTP_STATUS_CODE);
        assertNotNull(prop);
        assertEquals("404", prop.nextValue().toString());
        assertNull(prop.nextValue());
    }

    public final void testDownloadContentsForInvalidUrl() throws Exception {
        this.doc.setContentDwnldURL(TestConfiguration.Site1_List_Item_MSG_File_URL + ".invalid.txt");
        final SPDocument.SPContent content = this.doc.downloadContents();
        assertEquals("404", content.getStatus());
        assertEquals(404, content.getStatusCode());
    }

    public void testGetPropertyNamesWithoutExcludedMetadata() throws Exception {
        Set<String> documentMetadata;
        documentMetadata = this.doc.getPropertyNames();
        assertTrue(documentMetadata.contains(SPConstants.PARENT_WEB_TITLE));
    }

    public void testGetPropertyNamesWithExcludedMetadata() throws Exception {
        this.doc.getSharepointClientContext().getExcluded_metadata().add(Pattern.compile(".*title$"));
        Set<String> documentMetadata = this.doc.getPropertyNames();
        assertFalse(documentMetadata.contains(SPConstants.PARENT_WEB_TITLE));
    }
}