es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede utilizar el parámetro sessionfilter en mis otras clases.

Estoy tratando de crear una sesión basada en cookies con RestAssured. Luego intento agregar un comentario en mi ticket de Jira que creé antes. Parece que puedo crear un ID de sesión con el método Authenticate(), pero no puedo usar esa sesión en mis otros métodos que están en diferentes archivos java. Parece que filter(Authenticator.session) no funciona en mis otros métodos porque en la consola obtengo el error:

No tienes permiso para crear adjuntos para este problema

pero cuando ejecuto todo esto dentro del método principal en una sola clase java, funciona correctamente.

public class Authenticator {
    public static SessionFilter session = new SessionFilter();

    public static void Authenticate(){
        RestAssured.baseURI = "http://localhost:8080";

        String authenticationResponse = given().header("Content-Type", "application/json")
                .filter(session)
                .body(JiraInputs.auth())
                .when().post("/rest/auth/1/session")
                .then().log().all().extract().response().asString();
    }
}

public class AddAttachment {
    public static void addAttachment(){
        // Agregar adjunto
        RestAssured.baseURI= "http://localhost:8080";
        System.out.println(Authenticator.session.getSessionId());

        given().header("X-Atlassian-Token","no-check")
                .header("Content-Type","multipart/form-data")
                .multiPart("file",new File("src/test/java/Repo/jira"))
                .pathParam("id","10000").filter(Authenticator.session).when()
                .post("/rest/api/2/issue/{id}/attachments")
                .then().log().all().extract().response().asString();
        System.out.println(Authenticator.session.getSessionId());
    }
}

public class MainClass {
    public static void main(String[] args) {
        // Autenticar
        Authenticator.Authenticate();
        AddAttachment.addAttachment();
    }
}

{
   "errorMessages": [
      "No tienes permiso para crear adjuntos para este problema."
   ],
   "errors":{

   }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para poder utilizar la sesión creada por el método Authenticate() en otros métodos o archivos java, debes pasar el objeto SessionFilter como parámetro a esos métodos o clases.

    Por ejemplo, puedes modificar el método AddAttachment para usar el filtro de sesión pasado como parámetro:

    public class AddAttachment {
    
        public static void addAttachment(SessionFilter session){
    
            // Añadir adjunto
            RestAssured.baseURI="http://localhost:8080";
            System.out.println(session.getSessionId());
    
            given().header("X-Atlassian-Token","no-check")
                    .header("Content-Type","multipart/form-data")
                    .multiPart("file",new File("src/test/java/Repo/jira"))
                    .pathParam("id","10000").filter(session).when().
                    post("/rest/api/2/issue/{id}/attachments")
                    .then().log().all().extract().response().asString();
            System.out.println(session.getSessionId());
        }
    }
    

    Y luego, en la clase MainClass, puedes pasar el filtro de sesión creado por el método Authenticate() al método addAttachment():

    public class MainClass {
    
        public static void main(String[] args) {
    
            // Autenticar
            Authenticator.Authenticate();
    
            // Añadir adjunto
            AddAttachment.addAttachment(Authenticator.session);
        }
    }
    

    De esta manera, el filtro de sesión creado por el método Authenticate() se utilizará en el método addAttachment() y deberías poder agregar un adjunto a tu ticket de Jira.

Comments are closed.