Skip to content

Commit

Permalink
Update privacy policy anchor hashes and add tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonas-Sander committed Dec 10, 2023
1 parent c75dca8 commit a5051a7
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 13 deletions.
6 changes: 3 additions & 3 deletions app/lib/privacy_policy/src/data/privacy_policy_v1.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@ final v1PrivacyPolicy = PrivacyPolicy(
);

final v1TocDocumentSections = [
_section('1-einfhrung', '1. Einführung'),
_section('1-einfuehrung', '1. Einführung'),
_section('2-kontaktinformationen', '2. Kontaktinformationen'),
_section('3-wichtige-begriffe-die-du-kennen-solltest',
'3. Wichtige Begriffe, die du kennen solltest'),
_section('4-welche-informationen-erfassen-wir-grundstzlich',
_section('4-welche-informationen-erfassen-wir-grundsaetzlich',
'4. Welche Informationen erfassen wir grundsätzlich?'),
_section('5-an-wen-geben-wir-deine-daten-weiter',
'5. An wen geben wir deine Daten weiter?'),
_section('6-wie-lange-speichern-wir-deine-daten',
'6. Wie lange speichern wir deine Daten?'),
_section('7-welche-rechte-hast-du', '7. Welche Rechte hast du?'),
_section(
'glckwunsch-du-hast-es-geschafft', 'Glückwunsch, du hast es geschafft'),
'glueckwunsch-du-hast-es-geschafft', 'Glückwunsch, du hast es geschafft'),
];

DocumentSection _section(
Expand Down
20 changes: 10 additions & 10 deletions app/lib/privacy_policy/src/data/privacy_policy_v2.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,20 @@ final v2TocDocumentSections = [
section('2-geltungsbereich', '2. Geltungsbereich'),
section(
'3-verantwortlichkeit-und-kontakt', '3. Verantwortlichkeit und Kontakt'),
section('4-hosting-backend-infrastruktur-und-speicherort-fr-eure-daten',
section('4-hosting-backend-infrastruktur-und-speicherort-fuer-eure-daten',
'4. Hosting, Backend-Infrastruktur und Speicherort für eure Daten'),
section(
'5-deine-rechte',
'5. Deine Rechte',
[
section('a-recht-auf-auskunft', 'a. Recht auf Auskunft'),
section('b-recht-auf-berichtigung', 'b. Recht auf Berichtigung'),
section('c-recht-auf-lschung', 'c. Recht auf Löschung'),
section('d-recht-auf-einschrnkung-der-verarbeitung',
section('c-recht-auf-loeschung', 'c. Recht auf Löschung'),
section('d-recht-auf-einschraenkung-der-verarbeitung',
'd. Recht auf Einschränkung der Verarbeitung'),
section('e-recht-auf-widerspruch', 'e. Recht auf Widerspruch'),
section('f-recht-auf-widerruf', 'f. Recht auf Widerruf'),
section('g-recht-auf-datenbertragbarkeit',
section('g-recht-auf-datenuebertragbarkeit',
'g. Recht auf Datenübertragbarkeit'),
section('h-recht-auf-beschwerde', 'h. Recht auf Beschwerde'),
],
Expand All @@ -59,14 +59,14 @@ final v2TocDocumentSections = [
section('a-registrierung-mittels-anonymen-accounts',
'a. Registrierung mittels anonymen Accounts'),
section(
'b-registrierung-mit-e-mail-adresse--passwort-oder-googleapple-sign-in-ab-einem-alter-von-16-jahren-und-lter',
'b-registrierung-mit-e-mail-adresse--passwort-oder-googleapple-sign-in-ab-einem-alter-von-16-jahren-und-aelter',
'b. Registrierung mit E-Mail-Adresse & Passwort oder Google/Apple Sign In ab einem Alter von 16 Jahren und älter'),
],
),
section('9-verarbeitung-der-ip-adresse', '9. Verarbeitung der IP-Adresse'),
section('10-speicherdauer-und-speicherfristen',
'10. Speicherdauer und Speicherfristen'),
section('11-verarbeitung-des-gewhlten-account-typs-und-des-bundeslandes',
section('11-verarbeitung-des-gewaehlten-account-typs-und-des-bundeslandes',
'11. Verarbeitung des gewählten Account-Typs und des Bundeslandes'),
section('12-anonyme-statistische-auswertung-der-app-nutzung',
'12. Anonyme statistische Auswertung der App-Nutzung'),
Expand All @@ -84,20 +84,20 @@ final v2TocDocumentSections = [
section('googlefirebase-analytics', 'Google/Firebase Analytics'),
],
),
section('15-empfnger-oder-kategorien-von-empfngern',
section('15-empfaenger-oder-kategorien-von-empfaengern',
'15. Empfänger oder Kategorien von Empfängern'),
section('16-ssltls-verschlsselung', '16. SSL/TLS-Verschlüsselung'),
section('16-ssltls-verschluesselung', '16. SSL/TLS-Verschlüsselung'),
section('17-videokonferenzen', '17. Videokonferenzen'),
section(
'18-datenbertragung-in-drittlnder-auerhalb-der-eu',
'18-datenuebertragung-in-drittlaender-ausserhalb-der-eu',
'18. Datenübertragung in Drittländer außerhalb der EU',
[
section('a-firebase-authentication', 'a. Firebase Authentication'),
section('b-firebase-hosting', 'b. Firebase Hosting'),
],
),
section('19-datenschutzbeauftragter', '19. Datenschutzbeauftragter'),
section('20-vorbehalt-der-nderung-dieser-informationen',
section('20-vorbehalt-der-aenderung-dieser-informationen',
'20. Vorbehalt der Änderung dieser Informationen'),
];

Expand Down
34 changes: 34 additions & 0 deletions app/test/privacy_policy/generate_anchor_hash_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,39 @@ void main() {
'ss',
]);
});

void expectCorrectAnchorHashes(PrivacyPolicy privacyPolicy) {
expect(
privacyPolicy.tableOfContentSections.where((section) => section
.subsections
.where((subsubsection) => subsubsection.subsections.isNotEmpty)
.isNotEmpty),
isEmpty,
reason:
'Table of contents subscections must not have subscections. E.g. Section "foo" can have subsection "bar" but "bar" must not have subsections.');

final actualAnchorHashes = privacyPolicy.tableOfContentSections
.expand((section) => [
section.id.id,
...section.subsections.map((subsection) => subsection.id.id)
])
.toList();
final expectedAnchorHashes = privacyPolicy.tableOfContentSections
.expand((section) => [
generateAnchorHash(section.sectionName),
...section.subsections.map(
(subsection) => generateAnchorHash(subsection.sectionName))
])
.toList();

expect(actualAnchorHashes, expectedAnchorHashes);
}

test('privacy policy v1 anchors are correct', () {
expectCorrectAnchorHashes(v1PrivacyPolicy);
});
test('privacy policy v2 anchors are correct', () {
expectCorrectAnchorHashes(v2PrivacyPolicy);
});
});
}

0 comments on commit a5051a7

Please sign in to comment.