blob: 52c266eea6e4283bf970f7ecbab6416c20273d1b [file] [log] [blame]
package de.ids_mannheim.korap.web;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Ignore;
import org.junit.Test;
import de.ids_mannheim.korap.config.AuthCodeInfo;
import de.ids_mannheim.korap.config.BeanConfigTest;
import de.ids_mannheim.korap.config.ClientInfo;
import de.ids_mannheim.korap.config.ContextHolder;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.handlers.OAuth2Handler;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.interfaces.db.PersistenceClient;
import de.ids_mannheim.korap.user.TokenContext;
/**
* EM: To do: not implemented in the new DB yet
* @author hanl
* @date 13/05/2015
*/
@Ignore
public class OAuth2HandlerTest extends BeanConfigTest {
private static ClientInfo info;
private static final String SCOPES = "search preferences queries account";
@Test
public void testStoreAuthorizationCodeThrowsNoException ()
throws KustvaktException {
String auth_code = helper().getContext().getEncryption().createToken();
AuthCodeInfo codeInfo = new AuthCodeInfo(info.getClient_id(), auth_code);
codeInfo.setScopes(SCOPES);
OAuth2Handler handler = new OAuth2Handler(helper().getContext()
.getPersistenceClient());
handler.authorize(codeInfo, helper().getUser());
assertTrue("couldn't find entry in cache", handler.hasCacheEntry(codeInfo.getCode()));
codeInfo = handler.getAuthorization(auth_code);
assertNotNull("client is null!", codeInfo);
}
@Test
public void testAuthorizationCodeRemoveThrowsNoException ()
throws KustvaktException {
String auth_code = helper().getContext().getEncryption().createToken();
AuthCodeInfo codeInfo = new AuthCodeInfo(info.getClient_id(), auth_code);
codeInfo.setScopes(SCOPES);
OAuth2Handler handler = new OAuth2Handler(helper().getContext()
.getPersistenceClient());
handler.authorize(codeInfo, helper().getUser());
String t = helper().getContext().getEncryption().createToken();
String refresh = helper().getContext().getEncryption().createToken();
handler.addToken(codeInfo.getCode(), t, refresh, 7200);
TokenContext ctx = handler.getPersistenceHandler().getContext(t);
assertNotNull("context is null", ctx);
AuthCodeInfo c2 = handler.getAuthorization(codeInfo.getCode());
assertNull("clearing authorization failed", c2);
}
@Test
public void testTokenEndpointRedirect () {
}
@Test
public void testStoreAccessCodeViaAuthCodeThrowsNoException () {
String auth_code = helper().getContext().getEncryption().createToken();
AuthCodeInfo codeInfo = new AuthCodeInfo(info.getClient_id(), auth_code);
codeInfo.setScopes(SCOPES);
}
@Test
public void testDeleteAccessCodesByUserDeleteCascade () {
}
@Test
public void testAccessTokenbyUserDeleteCascade () {
}
@Test
public void testRefreshToken () {
}
// fixme: exception thrown?!
@Test
public void testAccessTokenExpired () {
}
@Override
public void initMethod () throws KustvaktException {
helper().setupAccount();
EncryptionIface crypto = helper().getContext().getEncryption();
info = new ClientInfo(crypto.createRandomNumber(), crypto.createToken());
info.setConfidential(true);
//todo: support for subdomains?!
info.setUrl("http://localhost:8080/api/v0.1");
info.setRedirect_uri("testwebsite/login");
PersistenceClient cl = helper().getBean(ContextHolder.KUSTVAKT_DB);
OAuth2Handler handler = new OAuth2Handler(cl);
handler.getPersistenceHandler().registerClient(info, helper().getUser());
}
}