Package org.neo4j.smack.pipeline.http

Source Code of org.neo4j.smack.pipeline.http.TestHttpHeaderDecoder

package org.neo4j.smack.pipeline.http;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.util.HashSet;

import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.junit.Test;
import org.neo4j.smack.gcfree.MutableString;
import org.neo4j.smack.pipeline.http.HttpHeaderContainer;
import org.neo4j.smack.pipeline.http.HttpHeaderDecoder;
import org.neo4j.smack.pipeline.http.HttpHeaderName;
import org.neo4j.smack.pipeline.http.HttpHeaderNames;
import org.neo4j.smack.pipeline.http.HttpTokens;


public class TestHttpHeaderDecoder {

    @Test
    public void testDecodeSingleHeader() throws Exception
    {
        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
       
        buf.writeBytes("Content-Length: 0".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
       
        HttpHeaderDecoder decoder = new HttpHeaderDecoder(new HashSet<HttpHeaderName>() {
            private static final long serialVersionUID = 1L;

            {
                add(HttpHeaderNames.CONTENT_LENGTH);
            }
        }, 4000);
       
        HttpHeaderContainer headers = new HttpHeaderContainer();
       
        decoder.decode(buf, headers);
       
        assertThat(headers.getHeader(HttpHeaderNames.CONTENT_LENGTH), is(new MutableString("0")));
    }

    @Test
    public void testDecodeMultipleHeaders() throws Exception
    {
        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
       
        buf.writeBytes("Content-Length: 0".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeBytes("Accept : stuff".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeBytes("Content-Length: 4".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
       
        HttpHeaderDecoder decoder = new HttpHeaderDecoder(new HashSet<HttpHeaderName>() {
            private static final long serialVersionUID = 1L;

            {
                add(HttpHeaderNames.CONTENT_LENGTH);
                add(HttpHeaderNames.ACCEPT);
            }
        }, 4000);
       
        HttpHeaderContainer headers = new HttpHeaderContainer();
       
        decoder.decode(buf, headers);
       
        assertThat(headers.getHeaders(HttpHeaderNames.CONTENT_LENGTH).get(0), is(new MutableString("0")));
        assertThat(headers.getHeaders(HttpHeaderNames.CONTENT_LENGTH).get(1), is(new MutableString("4")));
       
        assertThat(headers.getHeader(HttpHeaderNames.ACCEPT), is(new MutableString("stuff")));
    }
   
    @Test
    public void testDecodeMultipleMultilineHeaders() throws Exception
    {
        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
       
        buf.writeBytes("Content-Length: this".getBytes("ASCII"));
        buf.writeBytes(" is a multiline string".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeBytes("Accept : stuff".getBytes("ASCII"));
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
       
        HttpHeaderDecoder decoder = new HttpHeaderDecoder(new HashSet<HttpHeaderName>() {
            private static final long serialVersionUID = 1L;

            {
                add(HttpHeaderNames.CONTENT_LENGTH);
                add(HttpHeaderNames.ACCEPT);
            }
        }, 4000);
       
        HttpHeaderContainer headers = new HttpHeaderContainer();
       
        decoder.decode(buf, headers);
       
        assertThat(headers.getHeaders(HttpHeaderNames.CONTENT_LENGTH).get(0), is(new MutableString("this is a multiline string")));
       
        assertThat(headers.getHeader(HttpHeaderNames.ACCEPT), is(new MutableString("stuff")));
    }
   
    @Test
    public void testDecodeHeadersOnlySeparatedByLinefeed() throws Exception
    {
        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
       
        buf.writeBytes("Accept : stuff".getBytes("ASCII"));
        buf.writeByte(HttpTokens.LF);
        buf.writeByte(HttpTokens.CR);
        buf.writeByte(HttpTokens.LF);
       
        HttpHeaderDecoder decoder = new HttpHeaderDecoder(new HashSet<HttpHeaderName>() {
            private static final long serialVersionUID = 1L;

            {
                add(HttpHeaderNames.CONTENT_LENGTH);
                add(HttpHeaderNames.ACCEPT);
            }
        }, 4000);
       
        HttpHeaderContainer headers = new HttpHeaderContainer();
       
        decoder.decode(buf, headers);
       
        assertThat(headers.getHeader(HttpHeaderNames.ACCEPT), is(new MutableString("stuff")));
    }

}
TOP

Related Classes of org.neo4j.smack.pipeline.http.TestHttpHeaderDecoder

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.