3.21. Passwort

Überblick

Generell gilt die Aussage, dass Sie alle Tests sowohl mit Dokumenten ohne Passwortschutz durchführen können, als auch mit passwortgeschützten Dokumenten. Der Syntaxunterschied zeigt sich beim ersten Zugriff auf die Dokumente. Die Syntax sieht folgendermaßen aus:

// Access to password protected PDF
AssertThat.document(filename, ownerPassword) 1 2

// Test methods:
.hasEncryptionLength(..) 
.hasOwnerPassword(..) 
.hasUserPassword(..)

1

Wenn das Dokument nicht passwortgeschützt ist, wird nur der 1. Parameter benutzt.

2

Wird der 2. Parameter benutzt, gilt das PDF-Dokument als passwortgeschützt.

Diese Syntax gilt unabhängig davon, ob das Dokument mit einem User-Passwort oder einem Owner-Passwort verschlüsselt wurde.

Tests auf das Password selber

Es gibt Tests, die sich direkt auf ein Passwort beziehen. Wenn Sie ein PDF-Dokument mit einem Passwort öffnen (User- und Owner-Passwort), können Sie das andere Passwort auf seine Richtigkeit prüfen:

// Verify the owner-password of the document:
@Test
public void hasOwnerPassword() throws Exception {
  String filename = "documentUnderTest.pdf";
  String userPassword = "user-password";
  
  AssertThat.document(filename, userPassword)    1
            .hasOwnerPassword("owner-password")  2
  ;
}
// Verify the user-password of the document:
@Test
public void hasUserPassword() throws Exception {
  String filename = "documentUnderTest.pdf";
  String ownerPassword = "owner-password";
  
  AssertThat.document(filename, ownerPassword)   1
            .hasUserPassword("user-password")    2
  ;
}

1 1

Öffnen der Datei mit einem Passwort

2 2

Überprüfen des anderen Passwortes

Passwörter sollten im Source-Code lediglich für Testdokumente hart kodiert werden, wobei auch diese Aussage aus Sicherheitsgründen bedenklich ist.

Test auf die Länge der Passwortverschlüsselung

Mit welcher Verschlüsselungslänge wurde verschlüsselt:

@Test
public void hasEncryptionLength() throws Exception {
  String filename = "documentUnderTest.pdf";
  String userPassword = "user-password";
  
  AssertThat.document(filename, userPassword)
            .hasEncryptionLength(128)
  ;
}