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.
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:
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
Ihr benutzerdefinierter Bereich und alle Abhängigkeiten müssen sich auf dem Testklassenpfad befinden.
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%}
Sie können sich dann programmatisch mit
anmelden %Vor%Tags und Links java jboss-arquillian glassfish-embedded java-ee-7