2017-03-01 1 views
1

J'ai l'API GET REST, qui envoie des informations dans l'en-tête de réponse. Je suis en train d'écrire un cas de test en utilisant le cadre de repos assuré, problème auquel je suis confronté, en réponse à l'API GET, je ne reçois pas la chaîne d'en-tête définie par le serveur dans la réponse API de repos. J'ai vérifié la même API dans Rest client et HTTP Resource, là je peux voir les informations d'en-tête définies par le serveur dans la réponse de l'API.Impossible de récupérer les données d'en-tête dans le repos assuré pour le service Web de repos de type GET

Mais dans l'objet de réponse repos rassuré, les informations d'en-tête définies par le serveur ne sont pas disponibles.

Rest Code API:

@Path("/download") 
    @GET 
    @Produces("application/zip") 
    public Response downloadContractZipFile(@PathParam("contractId") final String contractId) throws CMException{ 
     ContractActionRequest contractActionRequest = new ContractActionRequest(); 
     contractActionRequest.setId(contractId); 
     DownloadActionResponse downloadActionResponse = (DownloadActionResponse) executeAction(Action.DOWNLOAD, contractActionRequest); 

     Response res = Response 
       .ok(downloadActionResponse.getFilestream(), MediaType.APPLICATION_OCTET_STREAM) 
       .header("content-disposition",downloadActionResponse.getContentDisposition()) 
       .header("Expires", "0") 
       .header("Content-Length", String.valueOf(downloadActionResponse.getContentLength())) 
       .build(); 
     return res; 
    } 

Ci-dessus vous pouvez voir, l'API est de retour Content-Length en-tête. Mais lorsque j'appelle l'API ci-dessus en utilisant un cadre de repos, elle ne reçoit pas "Content-Length" dans l'en-tête. Assert est en train d'échouer. Rassurez-vous le code de cas de test:

given().get(propertyURI).then().assertThat().header("Content-Length","7562"); 


java.lang.AssertionError: Expected header "Content-Length" was not "7562", was "null". Headers are: 
X-Powered-By=Servlet/3.0 
Cache-Control=no-cache, no-store 
Cache-directive=no-cache 
Pragma=no-cache 
Pragma-Directive=no-cache 
Expires=Thu, 01 Jan 1970 00:00:00 GMT 
Content-Type=text/html;charset=UTF-8 
x-authenticated=false 
x-location=https://reena:9453/app/login.jsp?targetApp=OM 
Content-Language=en-US 
Transfer-Encoding=chunked 

Répondre

0

Je vous suggère d'essayer Karate au lieu de REST-Assured car il a le soutien beaucoup mieux pour valider les en-têtes de réponse.

(avertissement: am karaté dev)