Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 2 additions & 7 deletions packages/cookie_store/lib/src/cookie_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,7 @@ final tz.TZDateTime _maxDateTime = tz.TZDateTime.utc(275760, 09, 13);
abstract interface class CookieStore {
/// Creates a [DefaultCookieStore] instance.
factory CookieStore() {
return DefaultCookieStore(
CookiePersistence(),
);
return DefaultCookieStore(CookiePersistence());
}

/// Save the [cookies] for specified [uri].
Expand Down Expand Up @@ -216,10 +214,7 @@ final class DefaultCookieStore implements CookieStore {
persistentCookies.add(persistentCookie);
}

return persistence.saveFromResponse(
persistentCookies,
isHttpRequest: isHttpRequest,
);
return persistence.saveFromResponse(persistentCookies, isHttpRequest: isHttpRequest);
}

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,6 @@ void testAll(
httpOnly(cookieStoreFactory);
secure(cookieStoreFactory);
expiration(cookieStoreFactory);
sortTests(
cookieStoreFactory,
canSortByPath: canSortByPath,
canSortByCreationTime: canSortByCreationTime,
);
deletionTests(
cookieStoreFactory,
canDeleteAll: canDeleteAll,
canDeleteByTest: canDeleteByTest,
);
sortTests(cookieStoreFactory, canSortByPath: canSortByPath, canSortByCreationTime: canSortByCreationTime);
deletionTests(cookieStoreFactory, canDeleteAll: canDeleteAll, canDeleteByTest: canDeleteByTest);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,77 +19,44 @@ void deletionTests(
});

group('delete cookies,', () {
test(
'delete all',
() async {
final uri = Uri();

final cookies = [
TestCookie('name0', 'value'),
TestCookie('name1', 'other-value'),
TestCookie('name2', 'value'),
TestCookie('name3', ''),
];

await cookieStore.saveFromResponse(uri, cookies);
var stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'name0=value',
'name1=other-value',
'name2=value',
'name3=',
]),
);

await cookieStore.deleteAll();
stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([]),
);
},
skip: canDeleteAll ? false : 'does not support deleting all cookies',
);

test(
'delete by test',
() async {
final uri = Uri();

final cookies = [
TestCookie('name0', 'value'),
TestCookie('name1', 'other-value'),
TestCookie('name2', 'value'),
TestCookie('name3', ''),
];

await cookieStore.saveFromResponse(uri, cookies);
var stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'name0=value',
'name1=other-value',
'name2=value',
'name3=',
]),
);

await cookieStore.deleteWhere((cookie) {
return cookie.name == 'name1' || cookie.value.isEmpty;
});
stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'name0=value',
'name2=value',
]),
);
},
skip: canDeleteByTest ? false : 'does not support deleting by test',
);
test('delete all', () async {
final uri = Uri();

final cookies = [
TestCookie('name0', 'value'),
TestCookie('name1', 'other-value'),
TestCookie('name2', 'value'),
TestCookie('name3', ''),
];

await cookieStore.saveFromResponse(uri, cookies);
var stored = await cookieStore.loadAll();
expect(toSortedStringList(stored), equals(['name0=value', 'name1=other-value', 'name2=value', 'name3=']));

await cookieStore.deleteAll();
stored = await cookieStore.loadAll();
expect(toSortedStringList(stored), equals([]));
}, skip: canDeleteAll ? false : 'does not support deleting all cookies');

test('delete by test', () async {
final uri = Uri();

final cookies = [
TestCookie('name0', 'value'),
TestCookie('name1', 'other-value'),
TestCookie('name2', 'value'),
TestCookie('name3', ''),
];

await cookieStore.saveFromResponse(uri, cookies);
var stored = await cookieStore.loadAll();
expect(toSortedStringList(stored), equals(['name0=value', 'name1=other-value', 'name2=value', 'name3=']));

await cookieStore.deleteWhere((cookie) {
return cookie.name == 'name1' || cookie.value.isEmpty;
});
stored = await cookieStore.loadAll();
expect(toSortedStringList(stored), equals(['name0=value', 'name2=value']));
}, skip: canDeleteByTest ? false : 'does not support deleting by test');
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,7 @@ void domainMatching(FutureOr<CookieStore> Function() cookieStoreFactory) {

await cookieStore.saveFromResponse(Uri(host: 'test.example.com'), cookies);
final stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'example.com=value',
'null=value',
'test.example.com=value',
]),
);
expect(toSortedStringList(stored), equals(['example.com=value', 'null=value', 'test.example.com=value']));
});

test('do not load not matching domain', () async {
Expand All @@ -46,19 +39,13 @@ void domainMatching(FutureOr<CookieStore> Function() cookieStoreFactory) {
];
await cookieStore.saveFromResponse(Uri(host: 'test.example.com'), cookies);

cookies = [
TestCookie('.example.com', 'value')..domain = '.example.com',
];
cookies = [TestCookie('.example.com', 'value')..domain = '.example.com'];
await cookieStore.saveFromResponse(Uri(host: '.example.com'), cookies);

cookies = [
TestCookie('testexample.com', 'value')..domain = 'testexample.com',
];
cookies = [TestCookie('testexample.com', 'value')..domain = 'testexample.com'];
await cookieStore.saveFromResponse(Uri(host: 'testexample.com'), cookies);

cookies = [
TestCookie('test.com', 'value')..domain = 'test.com',
];
cookies = [TestCookie('test.com', 'value')..domain = 'test.com'];
await cookieStore.saveFromResponse(Uri(host: 'test.com'), cookies);

var stored = await cookieStore.loadAll();
Expand All @@ -75,39 +62,16 @@ void domainMatching(FutureOr<CookieStore> Function() cookieStoreFactory) {
);

stored = await cookieStore.loadForRequest(Uri(host: 'example.com'));
expect(
toSortedStringList(stored),
equals([
'example.com=value',
]),
);
expect(toSortedStringList(stored), equals(['example.com=value']));

stored = await cookieStore.loadForRequest(Uri(host: 'test.example.com'));
expect(
toSortedStringList(stored),
equals([
'example.com=value',
'null=value',
'test.example.com=value',
]),
);
expect(toSortedStringList(stored), equals(['example.com=value', 'null=value', 'test.example.com=value']));

stored = await cookieStore.loadForRequest(Uri(host: 'testexample.com'));
expect(
toSortedStringList(stored),
equals([
'testexample.com=value',
]),
);
expect(toSortedStringList(stored), equals(['testexample.com=value']));

stored = await cookieStore.loadForRequest(Uri(host: 'test..example.com'));
expect(
toSortedStringList(stored),
equals([
'.example.com=value',
'example.com=value',
]),
);
expect(toSortedStringList(stored), equals(['.example.com=value', 'example.com=value']));
});

group('ip address matching', () {
Expand All @@ -121,66 +85,36 @@ void domainMatching(FutureOr<CookieStore> Function() cookieStoreFactory) {

await cookieStore.saveFromResponse(uri, cookies);
final stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([]),
);
expect(toSortedStringList(stored), equals([]));
});

test('do not load from similar domain', () async {
var cookies = [
TestCookie('IPv4-address', 'value')..domain = '127.0.0.1',
];
var cookies = [TestCookie('IPv4-address', 'value')..domain = '127.0.0.1'];
await cookieStore.saveFromResponse(Uri(host: '127.0.0.1'), cookies);

cookies = [
TestCookie('IPv6-address', 'value')..domain = '::1',
];
cookies = [TestCookie('IPv6-address', 'value')..domain = '::1'];
await cookieStore.saveFromResponse(Uri(host: '::1'), cookies);

var stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'IPv4-address=value',
'IPv6-address=value',
]),
);
expect(toSortedStringList(stored), equals(['IPv4-address=value', 'IPv6-address=value']));

final uri = Uri(host: '1');
stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([]),
);
expect(toSortedStringList(stored), equals([]));
});

test('load when identical', () async {
var uri = Uri(host: '127.0.0.1');
var cookies = [
TestCookie('IPv4-address', 'value')..domain = '127.0.0.1',
];
var cookies = [TestCookie('IPv4-address', 'value')..domain = '127.0.0.1'];
await cookieStore.saveFromResponse(uri, cookies);
var stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'IPv4-address=value',
]),
);
expect(toSortedStringList(stored), equals(['IPv4-address=value']));

uri = Uri(host: '::1');
cookies = [
TestCookie('IPv6-address', 'value')..domain = '::1',
];
cookies = [TestCookie('IPv6-address', 'value')..domain = '::1'];
await cookieStore.saveFromResponse(uri, cookies);
stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'IPv6-address=value',
]),
);
expect(toSortedStringList(stored), equals(['IPv6-address=value']));
});
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,7 @@ void expiration(FutureOr<CookieStore> Function() cookieStoreFactory) {

await cookieStore.saveFromResponse(uri, cookies);
final stored = await cookieStore.loadAll();
expect(
toSortedStringList(stored),
equals([
'not-expired0=value',
'not-expired1=value',
]),
);
expect(toSortedStringList(stored), equals(['not-expired0=value', 'not-expired1=value']));
});

test('expiration at a later point', () async {
Expand All @@ -57,23 +51,12 @@ void expiration(FutureOr<CookieStore> Function() cookieStoreFactory) {
var stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'not-expired0=value',
'not-expired1=value',
'will-expire0=value',
'will-expire1=value',
]),
equals(['not-expired0=value', 'not-expired1=value', 'will-expire0=value', 'will-expire1=value']),
);

await Future<void>.delayed(duration * 2);
stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'not-expired0=value',
'not-expired1=value',
]),
);
expect(toSortedStringList(stored), equals(['not-expired0=value', 'not-expired1=value']));
});

test('session cookies', () async {
Expand All @@ -92,23 +75,12 @@ void expiration(FutureOr<CookieStore> Function() cookieStoreFactory) {
var stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'session-cookie1=value',
'session-cookie2=value',
'will-expire0=value',
'will-expire1=value',
]),
equals(['session-cookie1=value', 'session-cookie2=value', 'will-expire0=value', 'will-expire1=value']),
);

await cookieStore.endSession();
stored = await cookieStore.loadForRequest(uri);
expect(
toSortedStringList(stored),
equals([
'will-expire0=value',
'will-expire1=value',
]),
);
expect(toSortedStringList(stored), equals(['will-expire0=value', 'will-expire1=value']));
});
});
}
Loading
Loading