Monthly Archives: October 2009

Ejemplo TestNG

Published / by Renan Huanca / Leave a Comment

Hola amigos,

Acá comparto un ejemplo simple de como usar el TestNG.

El ejemplo se basa en una clases para realizar la operación suma.

Clase a Testear

public class Calc {
    public int add(int a, int b){
        return a + b;
    }
}

Clase de Testeo

import org.testng.annotations.Test;

@Test
public class CalcTest {
    public void sumarTest(){
        Calc calc = new Calc();
        assert 2 == calc.add(1,1);
    }
}

Archivo pom.xml

    ...
    
        
            net.sourceforge.openutils
            openutils-testing-testng
            2.2.2
        
    
    ...
    
        test
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.5
                    1.5
                
            
        
    

Para usar las anotaciones es necesario utilizar java 1.5+

Autenticación con OpenSSO y HttpClient

Published / by Renan Huanca / 1 Comment on Autenticación con OpenSSO y HttpClient

Hola amigos,

Acá comparto una porción de código que use para poder autenticarme a servidor OpenSSO y obtener un el subjectId del usuario usando HttpClient de Jakarta Commons.

Este ejemplo esta basado en este articulo:

REST based Identity Services in OpenSSO, acá se describen los distintos RestFul services que provee OpenSSO

El ejemplo proveído es simplemente un método que recibe como parámetros nombre de usuario y password el cual después usando el PostMethod de HttpClient obtiene el un subjectId.

Aparte también pueden ver un método de utilidad que sirve para leer un InputStream y convertirlo a un String.

    public String authenticate(String username, String password) {
        Configuration configuration = Configuration.getIntance();
        PostMethod postMethod = new PostMethod("http://localhost:8080/opensso/identity/authenticate");
       
        HttpClient httpClient = new HttpClient();
        postMethod.addParameter("username",username);
        postMethod.addParameter("password",password);
        postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        try {
            httpClient.executeMethod(postMethod);
        } catch (IOException e) {
            throw new RuntimeException("No se puede llamar a servicio de autenticación de OpenSSO");
        }

        String response = null;
        try {
            response = readInputStreamAsString(postMethod.getResponseBodyAsStream());
        } catch (IOException e) {
            throw new RuntimeException("No se puede leer respuesta.",e);
        }
        postMethod.releaseConnection();
        return response.substring("token.id=".length()).trim();
    }

    private String readInputStreamAsString(InputStream inputStream)
            throws java.io.IOException {
        StringBuffer fileData = new StringBuffer(1000);
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        char[] buf = new char[1024];
        int numRead = 0;
        while ((numRead = reader.read(buf)) != -1) {
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
        }
        reader.close();
        return fileData.toString();
    }

Básicamente al llamar al servicio de autenticación, este te retorna un String parecido al siguiente:

token.id=123445656qwerreqerqwerqwre345

Donde “123445656qwerreqerqwerqwre345”, es el identificador del usuario para poder ser usado en una sesión de OpenSSO, es por eso que después hacemos un substring para separar el separarlo.

Esto seria por hoy 🙂 hasta la próxima.

Usar un proxy con HttpClient

Published / by Renan Huanca / 5 Comments on Usar un proxy con HttpClient

Hola amigos,

Acá una pequeña sugerencia de uso de la clase HttpClient (Jakarta Commons HttpClient) con un proxy server.

HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy("192.168.1.55",80);
GetMethod get = new GetMethod("http://www.someserver.net/somecustomerservice/someaction.do");
client.executeMethod(get);
InputStream inputStream = get.getResponseBodyAsStream();
get.releaseConnection();

HttpClient, se encarga de realizar o ejecutar la llamada http. Esta puede ser GET (GetMethod), POST(PostMethod), etc. La ejecución de la llamada ser la realiza mediante el método executeMethod(). Es aconsejable no olvidar llamar al método releaseConnection() una vez ejecutada la llamada.

HostConfiguration, maneja información respectiva para una conexión http, tal como: host remoto, protocolo, puerto, proxy, etc. Como verán en el en este caso estoy asignado el IP del servidor proxy y puerto.

GetMethod, representa una llamada HTTP GET. También esta clase te permite obtener el resultado de llamada http.