Package org.geoserver.catalog.rest

Source Code of org.geoserver.catalog.rest.DataStoreFileUploadTest

/* Copyright (c) 2001 - 2009 TOPP - www.openplans.org.  All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.catalog.rest;

import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

import org.geoserver.test.GeoServerTestSupport;
import org.w3c.dom.Document;

import com.mockrunner.mock.web.MockHttpServletResponse;

public class DataStoreFileUploadTest extends GeoServerTestSupport {

    public void testPropertyFileUpload() throws Exception {
        /*
        Properties p = new Properties();
        p.put( "_", "name:String,pointProperty:Point");
        p.put( "pds.0", "'zero'|POINT(0 0)");
        p.put( "pds.1", "'one'|POINT(1 1)");
        */
        byte[] bytes = propertyFile();
        //p.store( output, null );
       
        put( "/rest/workspaces/gs/datastores/pds/file.properties", bytes, "text/plain");
        Document dom = getAsDOM( "wfs?request=getfeature&typename=gs:pds" );
        assertFeatures( dom );
    }
   
    public void testPropertyFileUploadWithWorkspace() throws Exception {
        byte[] bytes = propertyFile();
       
        put( "/rest/workspaces/sf/datastores/pds/file.properties", bytes, "text/plain");
        Document dom = getAsDOM( "wfs?request=getfeature&typename=sf:pds");
        assertFeatures( dom, "sf" );
    }
   
    public void testPropertyFileUploadZipped() throws Exception {
        byte[] bytes = propertyFile();
       
        //compress
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ZipOutputStream zout = new ZipOutputStream( out );
        zout.putNextEntry( new ZipEntry ( "pds.properties" ) );
        zout.write( bytes );
        zout.flush();
        zout.close();
       
        put( "/rest/workspaces/gs/datastores/pds/file.properties", out.toByteArray(), "application/zip");
       
        Document dom = getAsDOM( "wfs?request=getfeature&typename=gs:pds" );
        assertFeatures( dom );
       
    }
    byte[] propertyFile() throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( output ) );
        writer.write( "_=name:String,pointProperty:Point\n" );
        writer.write( "ds.0='zero'|POINT(0 0)\n");
        writer.write( "ds.1='one'|POINT(1 1)\n");
        writer.flush();
        return output.toByteArray();
    }
   
    void assertFeatures( Document dom ) throws Exception {
        assertFeatures( dom, "gs" );
    }
   
    void assertFeatures( Document dom, String ns ) throws Exception {
        assertEquals( "wfs:FeatureCollection", dom.getDocumentElement().getNodeName() );
        assertEquals( 2, dom.getElementsByTagName( ns + ":pds").getLength() );
    }
   
    public void testShapeFileUpload() throws Exception {
        InputStream in = getClass().getResourceAsStream( "test-data/pds.zip" );
        ByteArrayOutputStream out = new ByteArrayOutputStream();
       
        int c = -1;
        while ( ( c = in.read() ) != -1 ) {
            out.write( c );
        }
   
        put( "/rest/workspaces/gs/datastores/pds/file.shp", out.toByteArray(), "application/zip");
        Document dom = getAsDOM( "wfs?request=getfeature&typename=gs:pds" );
        assertFeatures( dom );
    }
  
    public void testGet() throws Exception {
        MockHttpServletResponse resp = getAsServletResponse("/rest/workspaces/gs/datastores/pds/file.properties");
        assertEquals( 404, resp.getStatusCode() );
       
        byte[] bytes = propertyFile();
        put( "/rest/workspaces/gs/datastores/pds/file.properties", bytes, "text/plain");
       
        resp = getAsServletResponse("/rest/workspaces/gs/datastores/pds/file.properties");
        assertEquals( 200, resp.getStatusCode() );
        assertEquals( "application/zip", resp.getContentType() );
       
        ByteArrayInputStream bin = getBinaryInputStream(resp);
        ZipInputStream zin = new ZipInputStream( bin );
       
        ZipEntry entry = zin.getNextEntry();
        assertNotNull( entry );
        assertEquals( "pds.properties", entry.getName() );
    }
}
TOP

Related Classes of org.geoserver.catalog.rest.DataStoreFileUploadTest

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.