Package com.google.jstestdriver

Source Code of com.google.jstestdriver.CommandTaskTest

/*
* Copyright 2009 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.jstestdriver;

import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.inject.internal.Sets;
import com.google.jstestdriver.JsTestDriverClientTest.FakeResponseStream;
import com.google.jstestdriver.JsonCommand.CommandType;
import com.google.jstestdriver.browser.BrowserFileSet;
import com.google.jstestdriver.hooks.FileInfoScheme;
import com.google.jstestdriver.model.JstdTestCase;
import com.google.jstestdriver.model.NullPathPrefix;
import com.google.jstestdriver.util.NullStopWatch;

/**
* @author jeremiele@google.com (Jeremie Lenfant-Engelmann)
*/
public class CommandTaskTest extends TestCase {
  private final String baseUrl = "http://localhost/";
  private final Gson gson = new Gson();

  public void testConvertJsonResponseToObject() throws Exception {
    MockServer server = new MockServer();
    String id = "1";

    server.expect(baseUrl + "heartbeat?id=1", "OK");
    server.expect(baseUrl + "fileSet?POST?{data=[], action=serverFileCheck}", "[]");
    server.expect(
        baseUrl
            + "fileSet?POST?{id=1, data="
            + gson.toJson(new JstdTestCase(Collections.<FileInfo>emptyList(), Collections
                .<FileInfo>emptyList(), Collections.<FileInfo>emptyList(), null))
            + ", action=browserFileCheck}", gson.toJson(new BrowserFileSet()));
    server.expect(baseUrl + "cmd?POST?{data={mooh}, id=1}", "");
    BrowserInfo browserInfo = new BrowserInfo();
    browserInfo.setId(Long.parseLong(id));
    browserInfo.setUploadSize(10);
    server.expect(baseUrl + "cmd?listBrowsers", gson.toJson(Lists.newArrayList(browserInfo)));
    server.expect(baseUrl + "cmd?id=1", "{\"response\":{\"response\":\"response\","
        + "\"browser\":{\"name\":\"browser\"},\"error\":\"error\",\"executionTime\":123},"
        + "\"last\":true}");

    Map<String, String> params = new LinkedHashMap<String, String>();

    params.put("data", "{mooh}");
    params.put("id", id);
    FakeResponseStream stream = new FakeResponseStream();
    CommandTask task =
        createCommandTask(server, params, stream, new MockFileLoader(), true);

    task.run(new JstdTestCase(Collections.<FileInfo>emptyList(), Collections.<FileInfo>emptyList(), java.util.Collections.<FileInfo> emptyList(), null));
    Response response = stream.getResponse();

    assertEquals("response", response.getResponse());
    assertEquals("browser", response.getBrowser().getName());
    assertEquals("error", response.getError());
    assertEquals(123L, response.getExecutionTime());
  }

  public void testUploadFiles() throws Exception {
    String id = "1";
    MockServer server = new MockServer();
    FileInfo fileInfo = new FileInfo("foo.js", 1232, -1, false, false, null, "foo.js");
    List<FileInfo> fileList = Arrays.asList(fileInfo);
    JstdTestCase testCase = new JstdTestCase(Collections.<FileInfo>emptyList(), fileList, Collections.<FileInfo>emptyList(), "");

    server.expect(baseUrl + "heartbeat?id=1", "OK");
    server.expect(baseUrl + "fileSet?POST?{data=" + gson.toJson(testCase)
        + ", action=serverFileCheck}", "[]");
    server.expect(baseUrl + "fileSet?POST?{id=1, data=" + gson.toJson(testCase)
      + ", action=browserFileCheck}", gson.toJson(new BrowserFileSet()));
    server.expect(baseUrl + "cmd?POST?{data={mooh}, id=1}", "");
    server.expect(baseUrl + "cmd?id=1", "{\"response\":{\"response\":\"response\","
        + "\"browser\":{\"name\":\"browser\"},\"error\":\"error\",\"executionTime\":123},"
        + "\"last\":true}");
    BrowserInfo browserInfo = new BrowserInfo();
    browserInfo.setId(Long.parseLong(id));
    browserInfo.setUploadSize(10);
    server.expect(baseUrl + "cmd?listBrowsers", gson.toJson(Lists.newArrayList(browserInfo)));
    Map<String, String> params = new LinkedHashMap<String, String>();

    params.put("data", "{mooh}");
    params.put("id", "1");
    FakeResponseStream stream = new FakeResponseStream();
    MockFileLoader fileReader = new MockFileLoader();
    fileReader.addExpectation(fileInfo, "foobar");
    CommandTask task = createCommandTask(server, params,
        stream, fileReader, true);

    task.run(new JstdTestCase(Collections.<FileInfo>emptyList(), Lists.newArrayList(fileInfo), java.util.Collections.<FileInfo> emptyList(), ""));
    Response response = stream.getResponse();

    assertEquals("response", response.getResponse());
    assertEquals("browser", response.getBrowser().getName());
    assertEquals("error", response.getError());
    assertEquals(123L, response.getExecutionTime());
  }

  public void testUploadServeOnlyFiles() throws Exception {
    String id = "1";
    MockServer server = new MockServer();

    // test file data.
    FileInfo loadInfo = new FileInfo("foo.js", 0, -1, false, false, null, "foo.js");
    String loadInfoContents = "foobar";

    FileInfo serveInfo = new FileInfo("foo2.js", 0, -1, false, true, null, "foo2.js");
    String serveInfoContents = "foobar2";
    List<FileInfo> fileSet = Arrays.asList(loadInfo, serveInfo);

    final BrowserFileSet browserFileSet =
        new BrowserFileSet(fileSet, Lists.<FileInfo>newArrayList(), false);
    JstdTestCase jstdTestCase = new JstdTestCase(Collections.<FileInfo>emptyList(),
        Arrays.asList(
            new FileInfo(loadInfo.getFilePath(), loadInfo.getTimestamp(), -1, loadInfo
                .isPatch(), loadInfo.isServeOnly(), loadInfoContents, loadInfo
                .getFilePath()),
                new FileInfo(serveInfo.getFilePath(), serveInfo.getTimestamp(), -1, serveInfo
                    .isPatch(), serveInfo.isServeOnly(), serveInfoContents, loadInfo
                    .getFilePath())), Collections.<FileInfo>emptyList(), "foo");

    // server expects
    server.expect(baseUrl + "heartbeat?id=1", "OK");
    server.expect(baseUrl + "fileSet?POST?{id=1, data=" + gson.toJson(jstdTestCase) + ", action=browserFileCheck}",
        gson.toJson(browserFileSet));
    server.expect(baseUrl + "fileSet?POST?{data=" + gson.toJson(fileSet) + ", action=serverFileCheck}",
      "[]");
    BrowserInfo browserInfo = new BrowserInfo();
    browserInfo.setId(Long.parseLong(id));
    browserInfo.setUploadSize(10);
    server.expect(baseUrl + "cmd?listBrowsers", gson.toJson(Lists.newArrayList(browserInfo)));

    JsonCommand cmd = new JsonCommand(CommandType.RESET, Collections.<String>emptyList());
    Map<String, String> resetParams = new LinkedHashMap<String, String>();
    resetParams.put("id", "1");
    resetParams.put("data", gson.toJson(cmd));

    server.expect(baseUrl + "cmd?id=1", "{\"response\":{\"response\":\"response\","
        + "\"browser\":{\"name\":\"browser\"},\"error\":\"error\",\"executionTime\":123},"
        + "\"last\":true}");
    server.expect(
        baseUrl
                + "fileSet?POST?{data="
                + gson.toJson(jstdTestCase) + ", action=serverFileCheck}", "");

    String url =
        baseUrl
            + "cmd?POST?"
            + createLoadCommandString("1", CommandType.LOADTEST,
                Arrays.asList(fileInfoToFileSource(loadInfo)));
    server.expect(url, "{\"response\":{\"response\":\"response\","
        + "\"browser\":{\"name\":\"browser\"},\"error\":\"error\",\"executionTime\":123},"
        + "\"last\":true}");
    server.expect(baseUrl + "cmd?id=1",
        "{\"response\":" + createLoadedFilesResponseString() + ", \"last\":true}");
    server.expect(baseUrl + "cmd?POST?{data={mooh}, id=1}", "");
    server.expect(baseUrl + "cmd?id=1", "{\"response\":{\"response\":\"response\","
        + "\"browser\":{\"name\":\"browser\"},\"error\":\"error\",\"executionTime\":123},"
        + "\"last\":true}");
    Map<String, String> params = new LinkedHashMap<String, String>();

    params.put("data", "{mooh}");
    params.put("id", "1");
    FakeResponseStream stream = new FakeResponseStream();
    MockFileLoader fileReader = new MockFileLoader();
    fileReader.addExpectation(loadInfo, loadInfoContents);
    fileReader.addExpectation(serveInfo, serveInfoContents);
    CommandTask task = createCommandTask(server, params, stream, fileReader, true);

    task.run(jstdTestCase);
    Response response = stream.getResponse();

    assertEquals("{\"loadedFiles\":[]}", response.getResponse());
    assertEquals(null, response.getBrowser().getName());
    assertEquals("", response.getError());
    assertEquals(0, response.getExecutionTime());
  }

  private String createLoadedFilesResponseString() {
    Response response = new Response();
    LoadedFiles loadedFiles = new LoadedFiles();

    response.setResponse(gson.toJson(loadedFiles));
    return gson.toJson(response);
  }

  private String createLoadCommandString(String id, CommandType command,
      List<FileSource> filesToLoad) {
    Map<String, String> loadFileParams = new LinkedHashMap<String, String>();
    loadFileParams.put("id", id);
    List<String> loadParameters = new LinkedList<String>();
    loadParameters.add(gson.toJson(filesToLoad));
    loadParameters.add("false");
    loadFileParams.put("data", gson.toJson(new JsonCommand(CommandType.LOADTEST, loadParameters)));
    return loadFileParams.toString();
  }

  private CommandTask createCommandTask(MockServer server, Map<String, String> params, FakeResponseStream stream,
      MockFileLoader fileLoader, boolean upload) {
    NullStopWatch stopWatch = new NullStopWatch();
    ImmutableSet<FileInfoScheme> schemes = ImmutableSet.<FileInfoScheme>of(new HttpFileInfoScheme());
    NullPathPrefix prefix = new NullPathPrefix();
    DefaultFileFilter filter = new DefaultFileFilter();
    String baseUrl = "http://localhost";
    CommandTask task = new CommandTask(stream,
        baseUrl,
        server,
        params,
        upload,
        stopWatch,
        new FileUploader(
            stopWatch,
            server,
            baseUrl,
            fileLoader,
            filter,
            schemes,
            prefix));
    return task;
  }

  private FileSource fileInfoToFileSource(FileInfo info) {
    return info.toFileSource(new NullPathPrefix(), Sets.<FileInfoScheme>newHashSet());
  }
}
TOP

Related Classes of com.google.jstestdriver.CommandTaskTest

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.