test(tags): bleibt ein fremdes Etikett fremd?
internal/tags hatte null Tests, und die Rechtepruefung steckt dort nicht in einer if-Zeile, sondern in WHERE-Klauseln. Ein Tippfehler darin faellt beim Lesen nicht auf: Die Abfrage laeuft, sie liefert nur zu viel. Fuenf Tests auf dieselbe Frage -- Liste, Umbenennen, Loeschen, Anhaengen an die eigene Datei, und vor allem das Auflisten der **Dateien** unter einem Etikett. Der letzte Weg gibt Dateinamen, Ordner und Groessen heraus; wer dort eine fremde Etikett-ID erraet, saehe einen Ausschnitt aus fremden Unterlagen. Dazu Gruppen: Mitglied ja, Nichtmitglied nein, und wer die Gruppe verlaesst, verliert den Zugriff im selben Moment. Gegen kaputten Code gegengeprueft: Eigentuemerpruefung aus FilesWithTag entfernt -> "Bert sieht 1 fremde Dateien: Gehaltsabrechnung.pdf". Pruefung in SetFieldsForFile ausgehebelt -> zwei Tests rot. **Ein Verdacht erwies sich als falsch, und das ist der nuetzlichere Ausgang:** List bietet Gruppen-Etiketten an, SetFieldsForFile vergleicht gegen den Prinzipal der Datei -- sah nach einem Widerspruch aus. Ist keiner; die Oberflaeche filtert bereits (TagDialog.tsx:69). Und die Ablehnung ist nicht Foermlichkeit, sondern die tragende Absicherung: FilesWithTag prueft, ob man das *Etikett* sehen darf, nicht die *Datei*. Das ist nur deshalb harmlos, weil ein Etikett stets denselben Prinzipal hat wie die Dateien darunter. Der Test haelt jetzt diesen Zusammenhang fest, nicht bloss eine Fehlermeldung. Nebenbei: tags hat zwei Fehlermarken fuer dieselbe Aussage (ErrNotFound und ErrCorrespondentNotFound). Kein Fehler, aber eine Stolperstelle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
76176a45bc
commit
6042f6f2f6
3 files changed
+378
-4
No files matched your search
+30
-4
@@ -187,8 +187,35 @@ nur die Laufzeit stieg von 0,2 auf 27 Sekunden. Die Tests schleiften über die
|
||||
Konstante und setzten die Zahl voraus, statt sie zu prüfen. Dagegen steht jetzt
|
||||
ein eigener Test.
|
||||
|
||||
**Offen bleibt `internal/tags`:** Etiketten sind je Konto, und dass ein fremdes
|
||||
Etikett fremd bleibt, prüft bis heute nichts nach.
|
||||
**`internal/tags` ebenfalls erledigt am 12.09.2026.** Fünf Tests, alle auf
|
||||
dieselbe Frage: Bleibt ein fremdes Etikett fremd – in der Liste, beim
|
||||
Umbenennen, beim Löschen, beim Anhängen an die eigene Datei, und vor allem beim
|
||||
**Auflisten der Dateien darunter**. Der letzte Weg gibt Dateinamen, Ordner und
|
||||
Größen heraus; wer dort eine fremde Etikett-ID errät, sähe einen Ausschnitt aus
|
||||
fremden Unterlagen.
|
||||
|
||||
Auch hier gegen kaputten Code gegengeprüft: Eigentümerprüfung aus
|
||||
`FilesWithTag` entfernt → *„Bert sieht 1 fremde Dateien: Gehaltsabrechnung.pdf"*.
|
||||
Prüfung in `SetFieldsForFile` ausgehebelt → zwei Tests rot.
|
||||
|
||||
**Ein Verdacht erwies sich dabei als falsch, und das ist der nützlichere
|
||||
Ausgang:** `List` bietet Gruppen-Etiketten an, `SetFieldsForFile` vergleicht
|
||||
gegen den Prinzipal der *Datei* – das sah nach einem Widerspruch aus, bei dem
|
||||
die Oberfläche etwas anbietet, was der Server ablehnt. Ist keiner: Die
|
||||
Oberfläche filtert bereits (`TagDialog.tsx:69`). Und die Ablehnung ist nicht
|
||||
Förmlichkeit, sondern die tragende Absicherung – `FilesWithTag` prüft, ob man
|
||||
das *Etikett* sehen darf, **nicht** die *Datei*. Das ist nur deshalb harmlos,
|
||||
weil ein Etikett stets denselben Prinzipal hat wie die Dateien darunter. Fiele
|
||||
die Prüfung weg, hinge an einem Gruppen-Etikett eine private Datei, und jedes
|
||||
Gruppenmitglied sähe ihren Namen. Der Test hält jetzt diesen Zusammenhang fest,
|
||||
nicht bloß eine Fehlermeldung.
|
||||
|
||||
Nebenbei: `internal/tags` hat **zwei** Fehlermarken für dieselbe Aussage –
|
||||
`ErrNotFound` und `ErrCorrespondentNotFound`. Kein Fehler, aber eine
|
||||
Stolperstelle; jetzt wenigstens festgehalten.
|
||||
|
||||
**Offen bleiben** `internal/sharing`, `internal/rescan` (beide mit
|
||||
Python-Selbsttest), `internal/audit` und `internal/thumbnails`.
|
||||
|
||||
---
|
||||
|
||||
@@ -234,5 +261,4 @@ gibt:
|
||||
1. ~~`recover` in die Hintergrund-Goroutinen~~ ✅ 12.09.2026
|
||||
2. ~~Prüfsummen-Abweichung melden~~ ✅ 12.09.2026 – und dabei fiel auf, dass
|
||||
**alle** kontextgebundenen Logzeilen ins Nichts gingen (2b).
|
||||
3. ~~Tests für `documents`~~ ✅ 12.09.2026. Offen: `internal/tags` — die
|
||||
Rechteprüfung dort ist ungeprüft.
|
||||
3. ~~Tests für `documents`~~ ✅ und ~~`tags`~~ ✅ 12.09.2026.
|
||||
Reference in new issue
Block a user