Package com.tll.di

Source Code of com.tll.di.AcegiModuleTest

/**
* The Logic Lab
* @author jpk
* @since Apr 3, 2009
*/
package com.tll.di;

import org.springframework.dao.DataAccessException;
import org.springframework.security.AccessDecisionManager;
import org.springframework.security.AuthenticationManager;
import org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider;
import org.springframework.security.providers.dao.DaoAuthenticationProvider;
import org.springframework.security.providers.dao.UserCache;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UserDetailsService;
import org.springframework.security.userdetails.UsernameNotFoundException;
import org.testng.annotations.Test;

import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.Module;
import com.google.inject.Provider;
import com.google.inject.Scopes;
import com.google.inject.name.Names;
import com.tll.config.Config;

/**
* AcegiModuleTest
* @author jpk
*/
@Test
public class AcegiModuleTest {

  static class TestUserDetailsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
      return null;
    }

  }

  static class TestAcegiModule extends AcegiModule {

    /**
     * Constructor
     * @param config
     */
    public TestAcegiModule(Config config) {
      super(config);
    }

    @Override
    protected Class<? extends UserDetailsService> getUserDetailsImplType() {
      return TestUserDetailsService.class;
    }

  }

  public void testAcegiModuleLoad() throws Exception {
    final Config config = Config.load();
    final Injector i = Guice.createInjector(new Module() {

      @Override
      public void configure(Binder binder) {
        // ad hoc UserCache impl
        binder.bind(UserCache.class).toProvider(new Provider<UserCache>() {

          public UserCache get() {
            return new UserCache() {

              @Override
              public void removeUserFromCache(String username) {
              }

              @Override
              public void putUserInCache(UserDetails user) {
              }

              @Override
              public UserDetails getUserFromCache(String username) {
                return null;
              }
            };
          }

        }).in(Scopes.SINGLETON);
      }
    }, new TestAcegiModule(config));

    // verify dao auth provider
    final DaoAuthenticationProvider p = i.getInstance(DaoAuthenticationProvider.class);
    assert p != null : "Unable to obtain a dao auth provider";

    // verify AnonymousAuthenticationProvider
    final AnonymousAuthenticationProvider ap = i.getInstance(AnonymousAuthenticationProvider.class);
    assert ap != null : "Unable to obtain AnonymousAuthenticationProvider";

    // verify AuthenticationManager
    final AuthenticationManager am = i.getInstance(AuthenticationManager.class);
    assert am != null : "Unable to obtain AuthenticationManager";

    // AccessDecisionManager (ADM_HTTP_REQUEST)
    final AccessDecisionManager adm =
      i.getInstance(Key.get(AccessDecisionManager.class, Names.named(AcegiModule.ADM_HTTP_REQUEST)));
    assert adm != null : "Unable to obtain AccessDecisionManager (ADM_HTTP_REQUEST)";
  }
}
TOP

Related Classes of com.tll.di.AcegiModuleTest

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.