Package com.google.enterprise.connector.servlet

Source Code of com.google.enterprise.connector.servlet.GetConnectorInstanceListTest

// Copyright 2011 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.servlet;

import com.google.enterprise.connector.common.StringUtils;
import com.google.enterprise.connector.instantiator.Configuration;
import com.google.enterprise.connector.manager.Context;
import com.google.enterprise.connector.manager.Manager;
import com.google.enterprise.connector.test.ConnectorTestUtils;

import junit.framework.TestCase;

import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

/**
* Tests {@link GetConnectorInstanceList} Servlet.
*/
public class GetConnectorInstanceListTest extends TestCase {
  private static final Logger LOGGER =
      Logger.getLogger(GetConnectorInstanceListTest.class.getName());

  private String connectorName = "connector1";
  private String connectorType = "TestConnectorA";
  private File connectorDir = new File(Context.DEFAULT_JUNIT_COMMON_DIR_PATH
      + "connectors/" + connectorType);
  private Manager manager;
  private MockHttpServletRequest req;
  private MockHttpServletResponse res;

  @Override
  protected void setUp() {
    // Clear out any old connector state files.
    ConnectorTestUtils.deleteAllFiles(connectorDir);

    // Create a stand alone context with real ProductionManager.
    Context.refresh();
    Context context = Context.getInstance();
    context.setStandaloneContext(Context.DEFAULT_JUNIT_CONTEXT_LOCATION,
        Context.DEFAULT_JUNIT_COMMON_DIR_PATH);
    context.setFeeding(false);
    context.start();
    manager = context.getManager();

    req = new MockHttpServletRequest();
    res = new MockHttpServletResponse();
  }

  @Override
  protected void tearDown() {
    // Clear out any old connector state files.
    ConnectorTestUtils.deleteAllFiles(connectorDir);
  }

  /** Test with no connector instances. */
  public void testNoConnectors() throws Exception {
    String expectedResult =
        "<CmResponse>\n  <StatusId>5215</StatusId>\n</CmResponse>\n";
    doTest(expectedResult);
  }

  /**
   * Test with connector instance, no Schedule and namespaces.
   */
  public void testWithConnectorNoScheduleAndNamespaces() throws Exception {
    String expectedResult =
        "<CmResponse>\n"
        + "  <StatusId>0</StatusId>\n"
        + "  <ConnectorInstances>\n"
        + "    <ConnectorInstance>\n"
        + "      <ConnectorName>connector1</ConnectorName>\n"
        + "      <ConnectorType>TestConnectorA</ConnectorType>\n"
        + "      <Status>0</Status>\n"
        + "      <ConnectorSchedules version=\"3\">#:500:300000:0-0"
        + "</ConnectorSchedules>\n"
        + "      <ConnectorSchedule version=\"1\">:500:0-0"
        + "</ConnectorSchedule>\n"
        + "    </ConnectorInstance>\n"
        + "  </ConnectorInstances>\n"
        + "</CmResponse>\n";

    addConnector(null);
    doTest(expectedResult);
  }

  /**
   * Test with connector instance with Schedule.
   */
  public void testWithConnector() throws Exception {
    String expectedResult =
        "<CmResponse>\n"
        + "  <StatusId>0</StatusId>\n"
        + "  <ConnectorInstances>\n"
        + "    <ConnectorInstance>\n"
        + "      <ConnectorName>connector1</ConnectorName>\n"
        + "      <ConnectorType>TestConnectorA</ConnectorType>\n"
        + "      <Status>0</Status>\n"
        + "      <ConnectorSchedules version=\"3\">#connector1:200:300000:1-12"
        + "</ConnectorSchedules>\n"
        + "      <ConnectorSchedule version=\"1\">connector1:200:1-12"
        + "</ConnectorSchedule>\n"
        + "      <GlobalNamespace>ThinkGlobally</GlobalNamespace>\n"
        + "      <LocalNamespace>ActLocally</LocalNamespace>\n"
        + "    </ConnectorInstance>\n"
        + "  </ConnectorInstances>\n"
        + "</CmResponse>\n";

    Map<String, String> additionalConfigData = new HashMap<String, String>();
    additionalConfigData.put("googleGlobalNamespace", "ThinkGlobally");
    additionalConfigData.put("googleLocalNamespace", "ActLocally");
    addConnector(additionalConfigData);
    manager.setSchedule(connectorName, "#connector1:200:300000:1-12");
    doTest(expectedResult);
  }

  private void addConnector(Map<String, String> additionalConfig)
      throws Exception {
    // Use the manager directly to create a connector.
    HashMap<String, String> configData = new HashMap<String, String>();
    configData.put("Username", "bob");
    configData.put("Password", "pwd");
    configData.put("Color", "red");
    configData.put("RepositoryFile", "MockRepositoryEventLog1.txt");
    if (additionalConfig != null) {
      configData.putAll(additionalConfig);
    }
    manager.setConnectorConfiguration(connectorName,
        new Configuration(connectorType, configData, null),
        "en", false);
  }

  private void doTest(String expectedResult) throws Exception {
    new GetConnectorInstanceList().doGet(req, res);
    StringBuffer result = new StringBuffer(res.getContentAsString());
    ConnectorTestUtils.removeManagerVersion(result);
    removeConnectorVersion(result);
    assertEquals(result.toString(),
        StringUtils.normalizeNewlines(expectedResult),
        StringUtils.normalizeNewlines(result.toString()));
  }

  /**
   * Removes the connector manager version string from the buffer.
   * This allows the tests that compare actual output to expected
   * output to function across versions, jvms, and platforms.
   */
  private void removeConnectorVersion(StringBuffer buffer) {
    int start = buffer.indexOf("      <" + ServletUtil.XMLTAG_VERSION + ">");
    if (start >= 0) {
      buffer.delete(start, buffer.indexOf("\n", start) + 1);
    }
  }
}
TOP

Related Classes of com.google.enterprise.connector.servlet.GetConnectorInstanceListTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.