Skip to content

Commit e441419

Browse files
seungsoo47claude
andauthored
[flutter_secure_storage] Update integration tests based on upstream v10.2.0 (#1040)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 14077d6 commit e441419

2 files changed

Lines changed: 86 additions & 67 deletions

File tree

packages/flutter_secure_storage/CHANGELOG.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
## NEXT
2+
3+
* Update integration tests based on upstream flutter_secure_storage v10.2.0 (12 test cases).
4+
15
## 0.1.3
26

37
* Update flutter_secure_storage_platform_interface to 2.0.0.
48
* Update flutter_secure_storage to 10.0.0.
59
* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6.
6-
7-
## NEXT
8-
910
* Update code format.
1011

1112
## 0.1.2

packages/flutter_secure_storage/example/integration_test/flutter_secure_storage_test.dart

Lines changed: 82 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,83 +2,101 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:flutter/foundation.dart';
65
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
76
import 'package:flutter_test/flutter_test.dart';
87
import 'package:integration_test/integration_test.dart';
98

9+
const _storage = FlutterSecureStorage();
10+
1011
void main() {
1112
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
1213

13-
late FlutterSecureStorage storage;
14-
15-
setUpAll(() {
16-
storage = const FlutterSecureStorage();
14+
setUp(() async {
15+
await _storage.deleteAll();
1716
});
1817

1918
tearDown(() async {
20-
await storage.deleteAll();
21-
});
22-
23-
testWidgets('read and write', (WidgetTester tester) async {
24-
await storage.write(key: 'key1', value: 'value1');
25-
await storage.write(key: 'key2', value: 'value2');
26-
27-
expect(await storage.read(key: 'key1'), 'value1');
28-
expect(await storage.read(key: 'key2'), 'value2');
29-
});
30-
31-
testWidgets('read non-existing key', (WidgetTester tester) async {
32-
final result = await storage.read(key: 'foobar');
33-
expect(result, isNull);
34-
});
35-
36-
testWidgets('readAll', (WidgetTester tester) async {
37-
final input = <String, String>{
38-
'foo': 'bar',
39-
'baz': 'qux',
40-
'waldo': 'fred',
41-
};
42-
43-
for (final enrty in input.entries) {
44-
await storage.write(key: enrty.key, value: enrty.value);
45-
}
46-
47-
final result = await storage.readAll();
48-
expect(mapEquals(input, result), isTrue);
19+
await _storage.deleteAll();
4920
});
5021

51-
testWidgets('containsKey', (WidgetTester tester) async {
52-
await storage.write(key: 'dgx', value: 'dfs');
53-
await storage.write(key: 'corge', value: 'grault');
54-
55-
expect(await storage.containsKey(key: 'dgx'), isTrue);
56-
expect(await storage.containsKey(key: 'corge'), isTrue);
57-
58-
expect(await storage.containsKey(key: 'foo'), isFalse);
22+
group('Basic CRUD', () {
23+
testWidgets('write and read round trip', (_) async {
24+
await _storage.write(key: 'key1', value: 'value1');
25+
expect(await _storage.read(key: 'key1'), 'value1');
26+
});
27+
28+
testWidgets('read missing key returns null', (_) async {
29+
expect(await _storage.read(key: 'nonexistent'), isNull);
30+
});
31+
32+
testWidgets('overwrite returns new value', (_) async {
33+
await _storage.write(key: 'k', value: 'first');
34+
await _storage.write(key: 'k', value: 'second');
35+
expect(await _storage.read(key: 'k'), 'second');
36+
});
37+
38+
testWidgets('containsKey true after write', (_) async {
39+
await _storage.write(key: 'k', value: 'v');
40+
expect(await _storage.containsKey(key: 'k'), isTrue);
41+
});
42+
43+
testWidgets('containsKey false for missing key', (_) async {
44+
expect(await _storage.containsKey(key: 'nonexistent'), isFalse);
45+
});
46+
47+
testWidgets('delete removes key', (_) async {
48+
await _storage.write(key: 'k', value: 'v');
49+
await _storage.delete(key: 'k');
50+
expect(await _storage.containsKey(key: 'k'), isFalse);
51+
expect(await _storage.read(key: 'k'), isNull);
52+
});
53+
54+
testWidgets('delete nonexistent key is no-op', (_) async {
55+
await _storage.delete(key: 'never_written');
56+
expect(await _storage.containsKey(key: 'never_written'), isFalse);
57+
});
58+
59+
testWidgets('readAll returns all written entries', (_) async {
60+
await _storage.write(key: 'k1', value: 'v1');
61+
await _storage.write(key: 'k2', value: 'v2');
62+
final all = await _storage.readAll();
63+
expect(all, containsPair('k1', 'v1'));
64+
expect(all, containsPair('k2', 'v2'));
65+
});
66+
67+
testWidgets('deleteAll clears every key', (_) async {
68+
await _storage.write(key: 'a', value: '1');
69+
await _storage.write(key: 'b', value: '2');
70+
await _storage.deleteAll();
71+
expect(await _storage.readAll(), isEmpty);
72+
});
5973
});
6074

61-
testWidgets('delete', (WidgetTester tester) async {
62-
await storage.write(key: 'wibble', value: 'flob');
63-
expect(await storage.containsKey(key: 'wibble'), isTrue);
64-
65-
await storage.delete(key: 'wibble');
66-
expect(await storage.containsKey(key: 'wibble'), isFalse);
67-
});
68-
69-
testWidgets('deleteAll', (WidgetTester tester) async {
70-
final input = <String, String>{
71-
'foo': 'bar',
72-
'baz': 'qux',
73-
'waldo': 'fred',
74-
};
75-
76-
for (final enrty in input.entries) {
77-
await storage.write(key: enrty.key, value: enrty.value);
78-
}
79-
expect(await storage.readAll(), isNotEmpty);
80-
81-
await storage.deleteAll();
82-
expect(await storage.readAll(), isEmpty);
75+
group('Special-character keys', () {
76+
testWidgets('URL key', (_) async {
77+
const key = 'http://example.com';
78+
await _storage.write(key: key, value: 'url-value');
79+
expect(await _storage.read(key: key), 'url-value');
80+
expect(await _storage.containsKey(key: key), isTrue);
81+
await _storage.delete(key: key);
82+
expect(await _storage.containsKey(key: key), isFalse);
83+
});
84+
85+
testWidgets('Non-ASCII key (Latin-1)', (_) async {
86+
const key = 'clé';
87+
await _storage.write(key: key, value: key);
88+
expect(await _storage.read(key: key), key);
89+
await _storage.delete(key: key);
90+
expect(await _storage.containsKey(key: key), isFalse);
91+
});
92+
93+
testWidgets('Case-sensitive keys', (_) async {
94+
await _storage.write(key: 'key', value: 'lower');
95+
await _storage.write(key: 'KEY', value: 'upper');
96+
expect(await _storage.read(key: 'key'), 'lower');
97+
expect(await _storage.read(key: 'KEY'), 'upper');
98+
final all = await _storage.readAll();
99+
expect(all.length, 2);
100+
});
83101
});
84102
}

0 commit comments

Comments
 (0)