2017-11-14 8 views
1

Ich schreibe Integrationstests für meine Dropwizard Anwendung, um den REST-Dienst zu testen. Meine App verfügt über eine Standardauthentifizierung mit Cookies.Get SecurityContext für Dropwizard-Integrationstests

So habe ich erstellt ClassRule:

@ClassRule public static final DropwizardAppRule<RESTServerConfiguration> RULE = new DropwizardAppRule<>(RESTServer.class, ResourceHelpers.resourceFilePath("serverconfig.yml"));

Wenn ich die login Methode testen:

final Response response = RULE.client().target("http://localhost:" + RULE.getLocalPort() + "/api/users/login") .request(MediaType.APPLICATION_JSON) .post(Entity.json("{\"username\": \"admin\", \"password\": \"admin\"}")); alles funktioniert.

Aber wenn ich versuche, auf die geschützte Ressource zu testen, z.B .:

final TestResponse response = RULE.client().target("http://localhost:" + RULE.getLocalPort() + "/api/users/getAllUsers") .request() .get(TestResponse.class);

es nicht mit 401-Fehler.

Wie kann ich SecurityContext erhalten oder die Sitzung irgendwo speichern?

Antwort

1

Ich habe endlich dieses Ding aus.

Alles, was ich tun musste, ist er Cookies von login Anfrage zu extrahieren, wie zum Beispiel:

`

String cookieValue = null; 
for (Map.Entry<String, NewCookie> entry : loginResponse.getCookies().entrySet()) { 
    String key = entry.getKey(); 
    if ("sessionToken".equals(key)) { 
     cookieValue = entry.getValue().toString(); 
     cookieValue = cookieValue.substring(0, cookieValue.indexOf(";")); 
    } 
} 

`

und dann eingestellt als Header auf die geschützte Ressource Anfrage, wie zum Beispiel:

.header ("Cookie", cookieValue)

+0

Sie müssen das alles nicht tun. Sie können '.cookie (entry.getValue(). ToCookie())' verwenden. Und warum sogar Schleife? Mach einfach einen map.get und überprüfe auf Null. oder wenn Sie nur alle Cookies senden möchten, etwas wie https://stackoverflow.com/a/46878059/2587435 –

+0

@peeskillet Sie haben Recht, danke für den Kommentar. Die Schleife ist in der Tat nutzlos. – htshame

Verwandte Themen