twonly-app-dependencies/hashlib_codecs/test/base64url_test.dart
2025-12-07 16:10:41 +01:00

60 lines
1.8 KiB
Dart

import 'dart:convert';
import 'package:hashlib_codecs/hashlib_codecs.dart';
import 'package:test/test.dart';
import './utils.dart';
void main() {
group('Test base64url', () {
test('encoding', () {
var b = [0, 0, 0];
var a = toBase64(b, url: true);
expect(a, equals("AAAA"));
});
test('encoding no padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var m = base64UrlEncode(b).replaceAll('=', '');
var a = toBase64(b, padding: false, url: true);
expect(a, equals(m), reason: 'length $i');
}
});
test('decoding no padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var r = base64UrlEncode(b).replaceAll('=', '');
expect(fromBase64(r), equals(b), reason: 'length $i');
}
});
test('encoding with padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var m = base64UrlEncode(b);
var a = toBase64(b, url: true);
expect(a, equals(m), reason: 'length $i');
}
});
test('decoding with padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var r = base64UrlEncode(b);
expect(fromBase64(r), equals(b), reason: 'length $i');
}
});
test('encoding <-> decoding no padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var r = toBase64(b, padding: false, url: true);
expect(fromBase64(r), equals(b), reason: 'length $i');
}
});
test('encoding <-> decoding with padding', () {
for (int i = 0; i < 100; ++i) {
var b = randomBytes(i);
var r = toBase64(b, url: true);
expect(fromBase64(r), equals(b), reason: 'length $i');
}
});
});
}