
package org.apache.polygene.library.shiro.web;

import org.apache.polygene.test.AbstractPolygeneTest;
import org.junit.Test;
import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.bootstrap.AssemblyException;
import org.apache.polygene.bootstrap.ModuleAssembly;
import org.apache.polygene.library.http.JettyConfiguration;
import org.apache.polygene.library.http.JettyServiceAssembler;
import org.apache.polygene.library.shiro.ini.ShiroIniConfiguration;
import org.apache.polygene.library.shiro.web.assembly.HttpShiroAssembler;
import org.apache.polygene.test.EntityTestAssembler;
import org.apache.polygene.test.util.FreePortFinder;

public class WebHttpShiroTest
    extends AbstractPolygeneTest
{
    private int port;

    @Override
    public void assemble( ModuleAssembly module )
        throws AssemblyException
    {
        ModuleAssembly configModule = module;
        new EntityTestAssembler().assemble( configModule );
        // START SNIPPET: assembly
        new JettyServiceAssembler().withConfig( configModule, Visibility.layer ).assemble( module );
        // END SNIPPET: assembly

        port = FreePortFinder.findFreePortOnLoopback();
        JettyConfiguration config = module.forMixin( JettyConfiguration.class ).declareDefaults();
        config.hostName().set( "127.0.0.1" );
        config.port().set( port );

        // START SNIPPET: assembly
        new HttpShiroAssembler()
            .withConfig( configModule, Visibility.layer )
            .assemble( module );
        // END SNIPPET: assembly

        configModule.forMixin( ShiroIniConfiguration.class )
                    .declareDefaults().iniResourcePath().set( "classpath:web-shiro.ini" );
    }

    @Test
    public void test()
    {
    }
}
