So testen Sie die Anmeldung / Authentifizierung mit Arquillian - Java EE 7

8

Wir haben eine Java EE 7-Anwendung und verwenden Arquillian zum Testen. Jetzt wollen wir nach einigen Berechtigungen des aktuell angemeldeten Benutzers suchen. Meine Frage ist ziemlich einfach. Wie kann ich einen Benutzer anmelden, wenn er sich in einem Testfall befindet? Ich habe gelesen ProgrammaticLogin funktioniert nicht in Arquillian Tests und Embedded Glassfish, Sicherheits- und Arquillian-Fragen , aber sie sind nicht klar beantwortet. Mein aktueller Ansatz ist etwa so:

%Vor%

Wenn ich jetzt versuche, das auszuführen, bekomme ich eine LoginException, die behauptet, dass ich kein LoginModule für "fileRealm" konfiguriert habe. Aber "fileRealm" ist nicht der Bereich, nach dem ich suche (ich habe ihn dort zum ersten Mal getestet, aber dann habe ich ihn in "secureJDBCRealm" geändert, das ist unser benutzerdefiniertes Sicherheits-Realm für GlassFish). Wir verwenden arquillian-glassfish-embedded-3.1 zum Testen.

  • Weiß jemand, wo das Reich für Arquillian zu definieren ist?
  • Warum sucht meine Anwendung weiterhin nach fileRealm? Ist dies der Standardwert? (konnte hier keine Spezifikationen finden)
bmurauer 09.10.2013, 12:00
quelle

1 Antwort

3

Arquillian bietet keine Unterstützung für die Definition von Realms. Stattdessen müssen Sie den Realm im Container selbst konfigurieren. Dies ist etwas schwierig, wenn Sie einen eingebetteten Glassfish-Container verwenden, aber es ist machbar.

Ich nehme an, dass secureJDBCRealm ein benutzerdefinierter Bereich ist und nicht einer der standardmäßigen / integrierten Glassfish Realms. Um einen benutzerdefinierten Bereich in einem eingebetteten Glassfish-Container zu konfigurieren, müssen Sie:

  1. Platzieren Sie eine login.conf -Datei im Testklassenpfad, der auf den Bereich verweist. Fügen Sie dazu ein Konfigurationsverzeichnis zu Ihrem Ressourcenverzeichnis hinzu und platzieren Sie login.conf in diesem Verzeichnis. Ihr login.conf wird ungefähr so ​​aussehen

    %Vor%
  2. Ihr benutzerdefinierter Bereich und alle Abhängigkeiten müssen sich auf dem Testklassenpfad befinden.

  3. Sie müssen den Bereich in Glassfish programmatisch erstellen. Dies kann über org.glassfish.embeddable.CommandRunner erfolgen. Glücklicherweise stellt der Arquillian Embedded Container dies über JNDI zur Verfügung, was bedeutet, dass Sie Folgendes tun können:

    %Vor%

    }

  4. Sie können sich dann programmatisch mit

    anmelden %Vor%
lucasweb 05.12.2013, 22:18
quelle