43 lines
1.3 KiB
Dart
43 lines
1.3 KiB
Dart
import 'package:chat_server/src/auth/crypto_service.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
group('AuthService password hashing', () {
|
|
test('hash + verify works', () {
|
|
const password = 'pass1234';
|
|
final hash = AuthService.hashPassword(password);
|
|
|
|
expect(hash, isNotEmpty);
|
|
expect(AuthService.verifyPassword(password, hash), isTrue);
|
|
expect(AuthService.verifyPassword('wrong-password', hash), isFalse);
|
|
});
|
|
});
|
|
|
|
group('CryptoService signing', () {
|
|
test('signatures verify with matching keypair', () {
|
|
final keyPair = CryptoService.generateKeyPair();
|
|
const payload = 'alice@localhost:9870:1700000000';
|
|
|
|
final signature = CryptoService.sign(payload, keyPair.privateKey);
|
|
final ok = CryptoService.verify(payload, signature, keyPair.publicKey);
|
|
|
|
expect(ok, isTrue);
|
|
});
|
|
|
|
test('signature fails for modified payload', () {
|
|
final keyPair = CryptoService.generateKeyPair();
|
|
const payload = 'payload-a';
|
|
const tamperedPayload = 'payload-b';
|
|
|
|
final signature = CryptoService.sign(payload, keyPair.privateKey);
|
|
final ok = CryptoService.verify(
|
|
tamperedPayload,
|
|
signature,
|
|
keyPair.publicKey,
|
|
);
|
|
|
|
expect(ok, isFalse);
|
|
});
|
|
});
|
|
}
|