Sto provando a scrivere un semplice test del fumo per un'applicazione web.Passaggio di credenziali di autenticazione di base a ogni richiesta con HtmlUnit WebClient
L'applicazione utilizza normalmente l'autenticazione basata su modulo, ma accetta anche l'autenticazione di base, ma poiché l'impostazione predefinita è l'autenticazione basata su modulo, non invia mai un'autenticazione richiesta, ma invia semplicemente il modulo di accesso.
Nel test provo a trasmettere l'intestazione di base autenticazione utilizzando
WebClient webClient = new WebClient();
DefaultCredentialsProvider creds = new DefaultCredentialsProvider();
// Set some example credentials
creds.addCredentials("usr", "pwd");
// And now add the provider to the webClient instance
webClient.setCredentialsProvider(creds);
webClient.getPage("<some url>")
Ho provato anche ripieno le credenziali in un oggetto WebRequest e passando che al metodo webClient.getPage
.
Ma sul server non ottengo un'intestazione di autenticazione. Sospetto che WebClient invii l'intestazione di autenticazione solo se viene richiesta esplicitamente dal server, cosa che non avviene mai.
Quindi la domanda è: come posso fare in modo che WebClient invii l'intestazione di autenticazione su ogni richiesta, inclusa la prima?
Non sto chiaro che cosa si intende per "solo invia il form di login" - - questo appare su una pagina all'interno della tua app? Ho appena estratto un vecchio codice che verifica un sito con finestre di autenticazione del browser inserite da qualche dominio di sicurezza, non dall'applicazione, e in pratica ho fatto esattamente quello che hai fatto, e ha funzionato bene. –
Questo è il modo in cui l'applicazione è implementata. L'autenticazione di base è solo per test e altre macchine che si interfacciano con l'app. Non vogliamo che un utente visualizzi mai un brutto modulo di autenticazione di base come generato dal browser. –