infrastructure-tests/src/test/java/org/gcube/authorization/ContextAuthorizationTest.java

97 lines
3.2 KiB
Java

package org.gcube.authorization;
import static org.gcube.common.authorization.client.Constants.authorizationService;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import org.gcube.common.authorization.client.Binder;
import org.gcube.common.authorization.client.Constants;
import org.gcube.common.authorization.library.AuthorizationEntry;
import org.gcube.common.authorization.library.provider.ContainerInfo;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.authorization.library.provider.UserInfo;
import org.gcube.testutility.ContextTest;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class ContextAuthorizationTest extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(ContextAuthorizationTest.class);
@Test
public void getInfo() throws Exception {
ContextTest.setContext("");
}
@Test
public void generateApplicationToken() throws Exception {
ContextTest.setContextByName("/d4science.research-infrastructures.eu");
String context = "/d4science.research-infrastructures.eu";
UserInfo userInfo = new UserInfo("luca.frosini",new ArrayList<>());
String userToken = authorizationService().generateUserToken(userInfo, context);
SecurityTokenProvider.instance.set(userToken);
String applicationName = "nagios.check";
String generatedToken = authorizationService().generateExternalServiceToken(applicationName);
logger.trace("Application Token for application {} in Context {} is {}", applicationName,
ContextUtility.getCurrentContext(), generatedToken);
}
@Test
public void generateHostToken() throws Exception {
String currentContext = ContextUtility.getCurrentContext();
String host = "pc-frosini.isti.cnr.it";
int port = 8080;
ContainerInfo containerInfo = new ContainerInfo(host, port);
String tokenNode = authorizationService().requestActivation(containerInfo, currentContext);
logger.trace("Token for Context {} for host {}:{} is {}", currentContext, host, port, tokenNode);
}
@Test
public void generateUserToken() throws Exception {
String currentContext = ContextUtility.getCurrentContext();
AuthorizationEntry authorizationEntry = Constants.authorizationService().get(SecurityTokenProvider.instance.get());
UserInfo userInfo = (UserInfo) authorizationEntry.getClientInfo();
String tokenNode = authorizationService().generateUserToken(userInfo, currentContext);
logger.trace("Token for Context {} for {} is {}", currentContext, userInfo.getId(), tokenNode);
}
@Test
public void seriliazeUser() throws Exception {
OutputStream output = new OutputStream()
{
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b );
}
//Netbeans IDE automatically overrides this toString()
public String toString(){
return this.string.toString();
}
};
UserInfo userInfo = new UserInfo("luca.frosini", new ArrayList<>());
Binder.getContext().createMarshaller().marshal(userInfo, output);
logger.debug("{}", output.toString());
}
}