import 'dart:io'; import 'dart:typed_data'; import 'package:flutter_test/flutter_test.dart'; import 'package:halkyon_app/halkyon_app.dart'; import 'package:path/path.dart' as p; void main() { late Directory folder; setUp(() async { folder = await Directory.systemTemp.createTemp('file_saver_test'); }); tearDown(() => folder.delete(recursive: true)); test("a saved file is the own user's alone where the platform has modes, " 'set before anything is written', () async { final path = p.join(folder.path, 'halkyon-recovery-codes.txt'); // One there before, readable by everyone. await File(path).writeAsString('old'); if (!Platform.isWindows) { await Process.run('chmod', ['644', path]); } await writePrivately(path, Uint8List.fromList([1, 2, 3])); expect(await File(path).readAsBytes(), [1, 2, 3]); if (Platform.isLinux || Platform.isMacOS) { expect(File(path).statSync().mode & 0x1ff, 0x180, reason: '0600'); } }, skip: Platform.isWindows ? 'no modes' : false); test("the system picker's copy in the temporary folder is removed, " 'others left', () async { final copy = File(p.join(folder.path, 'halkyon-recovery-phrase.txt')); final other = File(p.join(folder.path, 'something-else.txt')); await copy.writeAsString('the phrase'); await other.writeAsString('other'); await forgetPickerCopy('halkyon-recovery-phrase.txt', temporary: folder); await forgetPickerCopy('not-there.txt', temporary: folder); expect(copy.existsSync(), isFalse); expect(other.existsSync(), isTrue); }); }