package org.gcube.gcat.client; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.util.Properties; import org.gcube.common.authorization.client.Constants; import org.gcube.common.authorization.client.exceptions.ObjectNotFound; import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.provider.AuthorizationProvider; import org.gcube.common.authorization.library.provider.ClientInfo; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.utils.Caller; import org.gcube.common.scope.api.ScopeProvider; import org.junit.AfterClass; import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) * */ public class ContextTest { private static final Logger logger = LoggerFactory.getLogger(ContextTest.class); protected static Properties properties; protected static final String PROPERTIES_FILENAME = "token.properties"; protected static final String GCAT_PROPERTIES_FILENAME = "gcat.properties"; public static final String GCAT_URL_PROPERTY = "GCAT_URL_PROPERTY"; public static String GCAT_URL; public static final String DEFAULT_TEST_CONTEXT_NAME; static { properties = new Properties(); InputStream input = ContextTest.class.getClassLoader().getResourceAsStream(PROPERTIES_FILENAME); try { // load the properties file properties.load(input); } catch(IOException e) { throw new RuntimeException(e); } //DEFAULT_TEST_CONTEXT_NAME = "/pred4s/preprod/preVRE"; DEFAULT_TEST_CONTEXT_NAME = "/gcube/devsec/devVRE"; try { setContextByName(DEFAULT_TEST_CONTEXT_NAME); } catch(Exception e) { throw new RuntimeException(e); } Properties gcatProperties = new Properties(); input = ContextTest.class.getClassLoader().getResourceAsStream(GCAT_PROPERTIES_FILENAME); try { // load the properties file gcatProperties.load(input); GCAT_URL = gcatProperties.getProperty(GCAT_URL_PROPERTY); } catch (Exception e) { // throw new RuntimeException(e); GCAT_URL = null; } if(GCAT_URL!=null){ try { GCatClientDiscovery.forceToURL(GCAT_URL); } catch (MalformedURLException e) { throw new RuntimeException(e); } } } public static String getCurrentContextFullName() { String token = SecurityTokenProvider.instance.get(); AuthorizationEntry authorizationEntry = null; try { authorizationEntry = Constants.authorizationService().get(token); } catch(Exception e) { return ScopeProvider.instance.get(); } return authorizationEntry.getContext(); } public static String getContextFullName(String token) throws ObjectNotFound, Exception { AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token); return authorizationEntry.getContext(); } public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception { String token = ContextTest.properties.getProperty(fullContextName); setContext(token); } public static void setContext(String token) throws ObjectNotFound, Exception { SecurityTokenProvider.instance.set(token); AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token); ClientInfo clientInfo = authorizationEntry.getClientInfo(); logger.debug("User : {} - Type : {}", clientInfo.getId(), clientInfo.getType().name()); String qualifier = authorizationEntry.getQualifier(); Caller caller = new Caller(clientInfo, qualifier); AuthorizationProvider.instance.set(caller); ScopeProvider.instance.set(getContextFullName(token)); } @BeforeClass public static void beforeClass() throws Exception { setContextByName(DEFAULT_TEST_CONTEXT_NAME); } @AfterClass public static void afterClass() throws Exception { SecurityTokenProvider.instance.reset(); ScopeProvider.instance.reset(); } }