/* * Copyright 2014 Red Hat, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Apache License v2.0 is available at * http://www.opensource.org/licenses/apache2.0.php * * You may elect to redistribute this code under either of these licenses. */ package io.vertx.ext.auth.test.shiro; import io.vertx.core.json.JsonObject; import io.vertx.ext.auth.AuthProvider; import io.vertx.ext.auth.shiro.ShiroAuth; import io.vertx.test.core.VertxTestBase; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.realm.Realm; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection; import org.junit.Test; /** * @author <a href="http://tfox.org">Tim Fox</a> */ public class CreateShiroAuthProviderTest extends VertxTestBase { @Test public void testCreateWithRealm() { Realm realm = new MyShiroRealm(); AuthProvider authProvider = ShiroAuth.create(vertx, realm); JsonObject authInfo = new JsonObject().put("username", "tim").put("password", "sausages"); authProvider.authenticate(authInfo, onSuccess(user -> { assertNotNull(user); testComplete(); })); await(); } class MyShiroRealm implements Realm { @Override public String getName() { return getClass().getName(); } @Override public boolean supports(AuthenticationToken token) { return true; } @Override public AuthenticationInfo getAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { return new AuthenticationInfo() { @Override public PrincipalCollection getPrincipals() { return new SimplePrincipalCollection(token.getPrincipal(), getClass().getName()); } @Override public Object getCredentials() { return token.getCredentials(); } }; } } }