Package org.openqa.selenium.server.commands

Source Code of org.openqa.selenium.server.commands.CaptureNetworkTrafficCommandTest

package org.openqa.selenium.server.commands;

import junit.framework.TestCase;
import org.mortbay.http.HttpRequest;
import org.mortbay.http.HttpResponse;
import org.openqa.selenium.server.ModifiedIO;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.Map;
import java.util.TreeMap;

public class CaptureNetworkTrafficCommandTest extends TestCase {
    public void testJson() throws ParseException, IOException {
        prepare();
        check("json", "json.txt");
    }

    public void testXml() throws ParseException, IOException {
        prepare();
        check("xml", "xml.xml");
    }

    public void testPlain() throws ParseException, IOException {
        prepare();
        check("plain", "plain.txt");
    }

    private void check(String type, String file) throws IOException {
        CaptureNetworkTrafficCommand c = new CaptureNetworkTrafficCommand(type);

        InputStream is = this.getClass().getResourceAsStream("/org/openqa/selenium/server/commands/" + file);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ModifiedIO.copy(is, baos);

        String result = c.execute();
        assertTrue(result.startsWith("OK,"));
        assertEquals(baos.toString(), result.substring(3));
    }

    private void prepare() throws ParseException {
        // mock data to be reused
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        Date start = sdf.parse("2009-04-15T09:22:41.000-0700");
        Date end = sdf.parse("2009-04-15T09:22:41.102-0700");

        final Map<String, String> requestHeaders = new TreeMap<String, String>();
        requestHeaders.put("foo", "bar");
        requestHeaders.put("baz", "blah");
        HttpRequest req = new HttpRequest() {
            @Override
            public Enumeration getFieldNames() {
                return Collections.enumeration(requestHeaders.keySet());
            }

            @Override
            public String getField(String name) {
                return requestHeaders.get(name);
            }
        };
        HttpResponse res = new HttpResponse() {
            @Override
            public Enumeration getFieldNames() {
                return Collections.enumeration(requestHeaders.keySet());
            }

            @Override
            public String getField(String name) {
                return requestHeaders.get(name);
            }
        };
        // end mock data

        CaptureNetworkTrafficCommand.clear();

        // entry 1
        CaptureNetworkTrafficCommand.Entry entry = new CaptureNetworkTrafficCommand.Entry("GET", "http://example.com/index.html");
        entry.setStart(start);
        entry.finish(404, 1234);
        entry.setEnd(end);
        entry.addRequestHeaders(req);
        entry.addResponseHeader(res);
        CaptureNetworkTrafficCommand.capture(entry);

        // entry 2
        entry = new CaptureNetworkTrafficCommand.Entry("GET", "http://example.com/index2.html?foo=\"bar\"");
        entry.setStart(start);
        entry.finish(200, 1234);
        entry.setEnd(end);
        entry.addRequestHeaders(req);
        entry.addResponseHeader(res);
        CaptureNetworkTrafficCommand.capture(entry);

        // entry 3
        entry = new CaptureNetworkTrafficCommand.Entry("GET", "http://example.com/index3.html?foo='bar'");
        entry.setStart(start);
        entry.finish(302, 1234);
        entry.setEnd(end);
        requestHeaders.put("'\"special\nchar\"'", "today's\ntest \"is\"\n<great>!");
        entry.addRequestHeaders(req);
        entry.addResponseHeader(res);
        CaptureNetworkTrafficCommand.capture(entry);
    }
}
TOP

Related Classes of org.openqa.selenium.server.commands.CaptureNetworkTrafficCommandTest

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.