Package com.pugh.sockso.web.action.playlist

Source Code of com.pugh.sockso.web.action.playlist.PlaylisterTest

package com.pugh.sockso.web.action.playlist;

import com.pugh.sockso.Constants;
import com.pugh.sockso.Properties;
import com.pugh.sockso.StringProperties;
import com.pugh.sockso.Utils;
import com.pugh.sockso.templates.TXspf;
import com.pugh.sockso.templates.TPls;
import com.pugh.sockso.templates.TM3u;
import com.pugh.sockso.tests.PlaylistTestCase;
import com.pugh.sockso.tests.TestDatabase;
import com.pugh.sockso.tests.TestRequest;
import com.pugh.sockso.tests.TestResponse;
import com.pugh.sockso.web.Request;
import com.pugh.sockso.web.User;

public class PlaylisterTest extends PlaylistTestCase {

    private Playlister pl;
    private TestResponse res;
    private Properties p;
   
    @Override
    protected void setUp() throws Exception {
       
        TestDatabase db = new TestDatabase();
       
        p = new StringProperties();
        res = new TestResponse();
       
        db.fixture( "artistsAlbumsAndTracks" );
       
        pl = new Xspfer();
        pl.setDatabase( db );
        pl.setResponse( res );
        pl.setProperties( p );
       

    }
   
    public void testRenderPlaylists() throws Exception {
       
        final Properties p = new StringProperties();
        final String name = Utils.getRandomString( 20 );
        final String email = Utils.getRandomString( 20 );
        final int sessionId = 23123;
        final String sessionCode = Utils.getRandomString( 20 );
        final User user = new User( 1, name, "", email, sessionId, sessionCode, true );

        String data = "";

        final Class[] classes = new Class[] {
            TXspf.class,
            TPls.class,
            TM3u.class
        };

        for ( final Class tplClass : classes ) {

            // stream requires login

            p.set( Constants.STREAM_REQUIRE_LOGIN, Properties.YES );
            p.set( Constants.WWW_USERS_REQUIRE_LOGIN, Properties.YES );

            data = renderPlaylist( tplClass, p, user );

            assertTrue( data.contains(sessionCode) );
            assertTrue( data.contains(Integer.toString(sessionId)) );

            // no login required

            p.set( Constants.STREAM_REQUIRE_LOGIN, Properties.YES );
            p.set( Constants.WWW_USERS_REQUIRE_LOGIN, Properties.NO );

            data = renderPlaylist( tplClass, p, user );

            assertTrue( !data.contains(sessionCode) );
            assertTrue( !data.contains(Integer.toString(sessionId)) );

            // login, but no user

            p.set( Constants.STREAM_REQUIRE_LOGIN, Properties.YES );
            p.set( Constants.WWW_USERS_REQUIRE_LOGIN, Properties.YES );

            data = renderPlaylist( tplClass, p, null );

            assertTrue( !data.contains(sessionCode) );
            assertTrue( !data.contains(Integer.toString(sessionId)) );

        }

    }
   
    public void testTracksSpecifedByIdAreIncludedInPlaylist() throws Exception {
       
        Request req = new TestRequest( "GET /xspf/tr1/tr3 HTTP/1.1" );
        pl.setRequest( req );
       
        pl.handleRequest();
       
        assertContains( res.getOutput(), "First Track" );
        assertContains( res.getOutput(), "Third Track" );
        assertNotContains( res.getOutput(), "Second Track" );
       
    }

    public void testAllTracksFromAlbumsSpecifedByIdAreIncludedInPlaylist() throws Exception {
       
        Request req = new TestRequest( "GET /xspf/al1 HTTP/1.1" );
        pl.setRequest( req );
       
        pl.handleRequest();
       
        assertContains( res.getOutput(), "First Track" );
        assertContains( res.getOutput(), "Second Track" );
        assertNotContains( res.getOutput(), "Third Track" );
       
    }

    public void testTracksThatMatchPathSpecifiedAreIncludedInPlaylist() throws Exception {
       
        p.set( Constants.WWW_BROWSE_FOLDERS_ENABLED, p.YES );
       
        Request req = new TestRequest( "GET /xspf/?path=/music/folder HTTP/1.1" );
        pl.setRequest( req );
       
        pl.handleRequest();
       
        assertContains( res.getOutput(), "First Track" );
        assertContains( res.getOutput(), "Third Track" );
        assertNotContains( res.getOutput(), "Second Track" );

    }
   
    public void testTracksNotReturnedByPathWhenFolderBrowsingNotEnabled() throws Exception {
       
        Request req = new TestRequest( "GET /xspf/?path=/music/folder HTTP/1.1" );
        pl.setRequest( req );
       
        pl.handleRequest();
       
        assertNotContains( res.getOutput(), "First Track" );
        assertNotContains( res.getOutput(), "Third Track" );
    }

}
TOP

Related Classes of com.pugh.sockso.web.action.playlist.PlaylisterTest

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.