Browse Source

test(neon): add tests for account.dart

Signed-off-by: Nikolas Rimikis <rimikis.nikolas@gmail.com>
pull/639/head
Nikolas Rimikis 1 year ago
parent
commit
564e1c3505
No known key found for this signature in database
GPG Key ID: 85ED1DE9786A4FF2
  1. 20
      packages/neon/neon/lib/src/models/account.dart
  2. 87
      packages/neon/neon/test/account_test.dart

20
packages/neon/neon/lib/src/models/account.dart

@ -66,16 +66,26 @@ class Account implements Credentials {
String get id {
final key = '$username@$serverURL';
if (_idCache[key] != null) {
return _idCache[key]!;
}
return _idCache[key] = sha1.convert(utf8.encode(key)).toString();
return _idCache[key] ??= sha1.convert(utf8.encode(key)).toString();
}
String get humanReadableID {
final uri = Uri.parse(serverURL);
// Maybe also show path if it is not '/' ?
return '$username@${uri.port != 443 ? '${uri.host}:${uri.port}' : uri.host}';
final buffer = StringBuffer()
..write(username)
..write('@')
..write(uri.host);
if (uri.hasPort) {
buffer
..write(':')
..write(uri.port);
}
return buffer.toString();
}
/// Completes an incomplete [Uri] using the [serverURL].

87
packages/neon/neon/test/account_test.dart

@ -60,4 +60,91 @@ void main() {
});
}
});
group('Account', () {
final account = Account(
serverURL: 'http://example.com',
username: 'JohnDoe',
password: 'super_secret',
);
test('serialization', () {
const json = {
'serverURL': 'http://example.com',
'username': 'JohnDoe',
'password': 'super_secret',
'userAgent': null,
};
expect(account.toJson(), equals(json));
expect(Account.fromJson(json), equals(account));
});
test('id', () {
expect(account.id, '8bcb507a406c5ad0eed4072601bcfdd2d923e87d');
});
test('humanReadableID', () {
expect(account.humanReadableID, 'JohnDoe@example.com');
final accountWithDefaultPort = Account(
serverURL: 'http://example.com:80',
username: 'JohnDoe',
password: 'super_secret',
);
expect(accountWithDefaultPort.humanReadableID, 'JohnDoe@example.com');
final accountWithPort = Account(
serverURL: 'http://example.com:8080',
username: 'JohnDoe',
password: 'super_secret',
);
expect(accountWithPort.humanReadableID, 'JohnDoe@example.com:8080');
});
});
test('AccountFind', () {
final account1 = Account(
serverURL: 'http://example.com',
username: 'JohnDoe',
password: 'super_secret',
);
final account2 = Account(
serverURL: 'http://example.com',
username: 'JohnDoe2',
password: 'super_secret',
);
final account3 = Account(
serverURL: 'http://example.com',
username: 'JohnDoe3',
password: 'super_secret',
);
final account4 = Account(
serverURL: 'http://example.com',
username: 'JohnDoe4',
password: 'super_secret',
);
final account5 = Account(
serverURL: 'http://example.com',
username: 'JohnDoe5',
password: 'super_secret',
);
final accounts = {
account1,
account2,
account3,
account4,
account5,
};
expect(accounts.tryFind(null), isNull);
expect(accounts.tryFind('invalidID'), isNull);
expect(accounts.tryFind(account3.id), equals(account3));
expect(() => accounts.find('invalidID'), throwsA(isA<StateError>()));
expect(accounts.find(account3.id), equals(account3));
});
}

Loading…
Cancel
Save